忙里偷闲,最新用LabVIEW整了个五子棋的小游戏。下面是游戏主界面。
当程序运行起来之后,首先会弹出模式选择,有人人对战模式,也有人机对战模式,人人对战模式即自己在下黑棋之后,还是由自己来下白棋,人机对战则自己在下黑棋之后由电脑随机生成一个位置来下白棋。
当一方获得胜利之后,胜利一方棋子闪起,并警示获得胜利。
那怎么来用这个万能的LabVIEW快速开发这么一款小游戏呢。来一起看下程序框图。首先在程序设计中编写了模式选择模块、计时模块、检测界面中按键按下模块。
首先是模式选择模块,这里程序刚开始执行的时候要弹窗选择玩家要玩哪种模式,如果是人人对战模式则不需要进行多余的处理,这部分工作会在检测界面中按键按下模块做处理,但是如果是人机对战的话,这边便要对界面上的控件逐个扫描,以确保电脑要下的位置没有玩家下,电脑便会下载一个随机的位置出,当然随机的方式会显得电脑特别傻,但是时间关系,没有对人机对战下更多的功夫来设计一个牛逼的电脑。
然后是计时模块,不论黑方白方下棋的时候都需要一个计时,因此需要做一个实时的计时模块。这边会在一方下棋的时候开始计时并显示在字符串控件中,此时另一方时间置为0,在另一方下棋的时候,我方计时置0,判断标准为黑方or白方灯亮 。同时,若获胜字符串显示xxx获胜,则计时结束,双方时间都为0。
另外就是按键操作模块,比如有开始按键按下或者复位按键按下,就需要对界面中的棋子进行复位或初始化操作后再开始。图示为复位操作,主要是对界面的一些显示及控件做了一个初始化。
其次还有就是界面上的棋子也相当于按键操作,在界面点击对应的棋子的时候要判断此时为黑棋还是白棋并对应颜色显示,然后获取当前棋子位置的坐标,并将这个坐标在判断坐标形式vi中判断此时是否形成了五子一横或一竖或五子斜线,代表此时某一方已获胜,那么这个时候就需要显示白方or黑方获胜,并闪烁显示。棋盘为11*11排布,判断位置坐标是通过位置÷11取余算法实现的,具体算法设计不做过深讨论,有需要讨论的欢迎私信。至此所有模块组合起来,便可实现趣味五子棋小游戏。
时间关系,小游戏是通过各个模块组起来的,没有设计一个状态机或生产者消费者结构等去处理,所以程序逻辑看起来会比较乱,但是细心看每个模块的实现方式会发现逻辑也是非常简单。好了,程序就介绍到这里了,欢迎私信讨论。后续还有很多LabVIEW小程序更新,敬请期待!
源码已更新至个人资源处,欢迎自取!