记一下自己写tttpro

tttpro

最近整了个玩意,较TicTacToePro(乱取的)

Github 在线玩


设计

  1. 但是突然一想就搞了这么个项目

  2. 先把井字棋的所有结局和它的胜负平算出来

  3. 一起塞到sqlite,方便快速查找

  4. 玩的时候通过计算剩下可行的步骤,搜索数据库,找到最好的一步

当时的想象:一个完美的对手,从来不输,直接无敌,赢不了它

实际上:自己体会


工具的选用

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

sqliteRandom不需要)

修改~

完成!!!


性能(哭笑不得

生成结局和导入到数据库的时候花了很久

但是还出了bug,多搞了几次

下棋要等待3-4秒

知道我放到云端后

这么快‽