准备工作
首先上一张图,因为这里只是在用C语言验证算法,所以没有对界面做很好的优化,丑是理所应当的。
了解了游戏的工作原理,实际上可以将游戏描述为四个带有方向的同一操作:
1、将所有数字向一个方向移动至中间没有空位
2、将相邻的两个相同的数字加和然后放在更靠近移动方向前部的一个位置上
另外需要判断一下玩家当前输入的内容是否可以执行,如果不可以执行等待用户下一条记录。
同时需要对游戏的进程进行控制,如果可以继续游戏,那么运行玩家继续输入下一条指令,而如果不可以进行,那么提示无法继续游戏的提示。
首先的问题就是光标键的输入。光标键属于功能键,使用常规的scanf当然是无法进行读取的,而使用更加接近硬件的getch()
进行以字节为单位的标准输入。当使用getch()
函数进行标准输入时,如果用户输入了一个功能键,例如光标键、Home、PgUp、PgDn、End之类的键,getch()
将能够读取得到两个字符。当遇到功能键输入的时候,可以编写一个检测程序以获取对应按键的数据: