首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    2048-控制台版本

    /最近修改2017/6/26/ /修改2017/7/4,修改之前各自填满之后无法移动的错误,暂时未发现大的错误/ /最后修改2017/7/5,添加前景色,添加模式选择,改善界面/ 一.实现目标: 2048游戏 二.要求: 1、在屏幕上显示4*4的表格 2、随机生成2、4数字及位置 3、颜色设置 三.运行环境和工具: VC++6.0 四.实现步骤 0.游戏逻辑: 把游戏画面想象成4*4的数组,其中数值为0的位置表示空的格子, 有数值的位置代表对应的格子。然后对于每一行按列来遍历,或者每一列按行来遍历,实现每一行每一列的对应数字合并,直到出现2048的格子就胜利,否则就失败. 1.编写用于实现数字移动的方向函数 以向左移动为例: 把游戏画面想象成4*4的数组,其中数值为0的位置表示空的格子, 先看其中一行,有四列,用一个变量k=0,从第一列开始,另一个变量j=1开始,代表k之后的列,开始遍历。 如果第j列这个位置不为0的话,那么之后可以分为3种情况: 第一种情况:第k列和第j列相同,这个时候就将第k列的数字加倍,第j列重置为0. 第二种情况:第k列为0,那么就交换第k列和第j列的数字。 第三种情况:第k列和第j列都不为0,但是两者不相等,这个时候,就把两个数紧挨在一起,如果j和k原本就紧挨在一起,那么什么也不做。 而如果第j列为,也什么也不做。 在向左移动的时候,每一行都向左移动,所以逐行相加,然后按列遍历。 同理,向右移动,区别在于,向右是反向的按列遍历,向上是逐列相加,按行遍历,向右于向左移动是行列相反的遍历。 每次移动,步数就+1,每次合并,就会加上当前合并的格子的数值。 2.编写用于实现随机数字和随机位置的函数,以及游戏结束函数,显示格子函数,初始化函数,退出函数等 #define TARGET 2048 标记最终的目标,同时也是判断游戏是否结束的标志之一,如果在格子中出现了2048的格子,玩家胜利,游戏结束。另一种结束方式是,当所有的格子都被填满的时候,同时不存在可以相互合并的格子,并且没有2048的格子,游戏结束,玩家失败。 3.困难模式下随机函数用来随机出现数字2和4,使得出现的概率之比为1:10,保证游戏时间不至于过短。 正常模式下随机函数2和4出现概率之比为1:4 4.Begin()函数用来将数组初始化为0,包括分数和步数的清零 但是这个只在游戏开始的时候执行一次。 5.显示格子函数:设置好打印颜色,以及格子间距 五.程序运行:

    02
    领券