记一下自己写tttpro
tttpro
最近整了个玩意,较TicTacToePro(乱取的)
设计
但是突然一想就搞了这么个项目
先把井字棋的所有结局和它的胜负平算出来
一起塞到sqlite,方便快速查找
玩的时候通过计算剩下可行的步骤,搜索数据库,找到最好的一步
当时的想象:一个完美的对手,从来不输,直接无敌,赢不了它
实际上:自己体会
工具的选用
sqlite
我只是添加和查找,没什么大的需求,而且它可以本地搞
完全够了
streamlit
这个可以让它在web端搞界面,同类的还有pywebio
,但我选了这个,因为更好看
我选web界面是因为可以部署,不然只能本地运行,你想想,发一个链接就能让大家玩,对于没电脑的或电脑小白来说不是很好吗
而且它自己也有个云,直接就可以部署了,很方便
AI
求过chatGPT,用过AWS的代码填充,这里没用Github Copilot因为要钱了就再也没用过
对一些模块之类的还是很生疏
部分遇到过的Bug
棋盘显示方式
一开始想用按钮,结果不支持同名按钮
列表吧,空的会让它显示很奇怪,就加了两个点
(其实中间省略了很多)
sqlite语句
网上教程都不说的,我还在1=N
,加了几个符号就行了
棋盘不显示
不了解streamlit是怎样运行的,直接搞了个变量上去
机器人连着下两次棋
我多打了个robot()
下不了棋
在把棋局列表转换为md的时候,动到了原来的列表(?),'N'
全改为空了
刚好在下棋那里if #$%^& == 'N':
条件就不成立了,就直接下不了棋了
现在改成转换后替换字符串,解决了
部署
首先,上传github
超时
再来
OpenSSL SSL_read: Connection was reset, errno 10054
不会了
找!
还是解决不了
ipconfig /flushdns
成功
打开streamlit cloud,Github登录
访问超时
……
搞好了,看看
报错:是模块引用
创建requirements.txt
(sqlite
和Random
不需要)
修改~
完成!!!
性能(哭笑不得
生成结局和导入到数据库的时候花了很久
但是还出了bug,多搞了几次
下棋要等待3-4秒
知道我放到云端后
这么快‽