5474| 0
|
[项目] 3步做一个基于树莓派Pico的“九子贤棋游戏机” |
本帖最后由 nemon 于 2024-1-8 13:56 编辑 一、项目简介 最近接触到一种据说是很古老的“九子棋游戏”,搞明白规则之后,就用树莓派Pico做了出来。 “九子贤棋”又名LuckyStar,是中国西部的一种在五角星形棋盘上玩的单人益智游戏。玩法是,开始时在五角星形棋盘的每个直线交叉点各放一枚棋子,然后按玩家意愿,移除一个棋子。之后,玩家可以像跳棋那样,移动一颗棋子到空白的位置,同时可以移除移动过程中跳过的棋子。移动棋子必须沿着直线,一次必须跳过一枚棋子,且只能跳过一枚棋子。当按前述规则无法移动任何棋子时,游戏结束。如果游戏结束时,棋盘上只剩下一枚棋子,则玩家获胜。 二、硬件&软件清单: 1、Pico(PicoW也可以) 2、OLED屏,我用的是Seeed Studio的Grove OLED Display 0.96,它的控制芯片是SSD1315,用SSD1306的库也可以兼容: 3、按钮用的是Grove-Dual-Button v1.0,也是Seeed Studio的; 4、还用到一块转接板,型号是 Grove shield for PI PICO v1.0,当然只要把线接对了,不用也可以; 5、电脑上的编辑器用的是Thonny,如果你喜欢其他支持micro python硬件的IDE也可以; thonny-3.3.13_20240107133448.rar 6、还有就是树莓派Pico的micro python固件: rp2-pico-20230426-v1.20.0_20240107133235.rar 三、制作过程(和把大象装冰箱里一样,真的只有3步) 第1步:连接外设 如果用转接板,照图连接: 如果不用转接板,那么根据前面各模块附的文档,只要把模块的红线连到VCC,黑线连到GND,其他的线按图连接即可: 第2步:刷树莓派Pico的micro python固件:按着boot上电,就会出来U盘,拷贝进去就行: 第3步:烧代码 一共有3个文件——OLED库、字库、主程序,烧写的方法是,用Thonny连上Pico,之后新建空白文件,把文件的内容拷贝进去,然后保存。保存的时候,会提问是保存到本机还是Pico上。选择Pico后,会提示你输入文件名,这时把文件名输入后保存(注意不要忘了“.py”扩展名)。 四、技术原理: 因为模块化所以也没啥高深的好讲的,主要就是OLED用I2C协议通信,所以注意SDA和SCL两根线别接反了。还有,按钮用中断来响应,那么就要先研究下模块的电路图,才能决定是响应下降沿还是上升沿。 五、代码注释: 超级长的部分来啦。先收一下代码压缩包吧: src_20240107143808.rar 共有3个文件: 1、OLED库ssd1306.py,不解释。 2、字模文件char_cn.py,注意所有的字都是转了90度的8x8像素。汉字的变量名是拼音,比如: 而数字的变量名就包含他自己。但是只有4像素宽: 最后用一个list装下所有的数字,这样可以用CHAR_NUM_BITMAP_ARRAY[x]的形式来引用,方便很多。 3、主函数的文件名是lucky9star_solution_pico.py,如果想上电自动运行,要按“main.py”的名字保存。虽然代码有点长,但是注释和函数命名很友好,这里就不详细解释了。注意函数solution是个彩蛋,能够通过DFS的方式找出通关的答案,但是在这个项目里,并没有UI配合。六、图片/视频展示: 实物接好线是这样: 喜欢玩的同学可以动手试试,我装好后的效果是这样的: 裸件裸跑确实不够美观,如果你喜欢可以自己做一个壳子。 再剧透一下,楼主正在研究智能识别棋子的版本,希望有大佬能够指点。 七、一些有用的文档 Grove - OLED Display 0.96 (SSD1315)_v1.0_20240108135327.rar Grove-Dual-Button_v1_0_SCH_190916_20240108135436.rar Grove_shield_for_PI_PICOv1.0SCH_20240108135432.rar 就到这里,休息啦。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed