Skip to content

Latest commit

 

History

History
57 lines (36 loc) · 1.45 KB

README.md

File metadata and controls

57 lines (36 loc) · 1.45 KB

2048游戏界面


游戏流程

初始化(运行两次addRandom())

以下操作循环:

显示棋盘showBoard(p)

获取操作_getch()

用RecordBoard()记录棋盘

判断操作后执行函数(moveUp()、moveDown()、moveLeft()、moveRight())

运行comparePre()如果操作有效就开始新的回合

判断游戏状态Judge()


编程思路

addRandom:先判断棋盘有没有满,然后随机挑个位置空着就加个2或4,没空着就再随机一次如此反复

showBoard:单纯的把数组里的数字展示出来

获取用户操作:用_getch()这个函数能不用回车直接读取键盘的输入

游戏操作处理:

首先将棋盘划分开来思考,比如上下的操作,左右之间就没有任何联系

然后对单独的一列的相邻两个进行比对,移动方向为零就传值,相同就乘2

考虑各种情况,最终我的执行顺序就是移动两次,合并一次再移动一次

还有就是比如向下的操作就得从下面开始,不然会出现0222(从上到下)变成0042的情况,正确来说应该是0024

能解决4*4的所有情况,目前还没发现什么不妥

最终程序的体现就是轮询12格,让它们与下一格比对

判断游戏状态:首先判赢,然后判断有没有空格和还能不能合并,都没有就游戏结束(失败)了

其他的后续再补充,欢迎大家给程序做优化