已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+实现2048小游戏(控制台版的)#include #include #include using namespace std;int const ROW = 4;int const COL = 4;int gameROWCOL = 0;/上下左右int const UP = 1;int const DOWN = 2;int const LEFT = 3;int const RIGHT = 4;/游戏所处的状态int const GAME_OVER = 1;int const GAME_WIN = 2;int const GAME_CONTINUE = 3;enum GameNumGame_2 = 2,Game_4 = 4,Game_8 = 8,Game_16 = 16,Game_32 = 32,Game_64 = 64,Game_128 = 128,Game_256 = 256,Game_512 = 512,Game_1024 = 1024,Game_2048 = 2048,;/打印所得的数组void Print()system(cls);cout * 2048 控 制 台 版 * endl;cout * By Tanzf (Intern) * endl endl;for (int i = 0; i ROW; +i)cout - endl;for (int j = 0; j COL; +j)if (gameij = 0)cout | t;else cout | gameij t;cout | endl;cout - endl;bool CreateNumber()int x = -1;int y = -1;int times = 0;int maxTimes = ROW * COL;/三分之二的概率生成2,三分之一的概率生成4int whitch = rand() % 3;do x = rand() % ROW;y = rand() % COL;+times; while (gamexy != 0 & times = maxTimes)return false;elseGameNum num;if(whitch = 0)num = Game_4;else if(whitch)num = Game_2;gamexy = num;return true;void Process(int direction)switch (direction)case UP:/最上面一行不动for(int row = 1; row = 1; -crow)for(int col = 0; col = 0; -row)for(int crow = row; crow ROW - 1; +crow)for(int col = 0; col COL; +col)/上一个格子为空if(gamecrow + 1col = 0)gamecrow + 1col = gamecrowcol;gamecrowcol = 0;else /合并if(gamecrow + 1col = gamecrowcol)gamecrow + 1col *= 2;gamecrowcol = 0;break;case LEFT:/最左边一列不动for(int col = 1; col = 1; -ccol)for(int row = 0; row = 0; -col)for(int ccol = col; ccol = COL - 2; +ccol)for(int row = 0; row ROW; +row)/上一个格子为空if(gamerowccol + 1 = 0)gamerowccol + 1 = gamerowccol;gamerowccol = 0;else /合并if(gamerowccol + 1 = gamerowccol)gamerowccol + 1 *= 2;gamerowccol = 0;break;/处理输入输出,返回上下左右int Input()/读取上下左右四个方向键int upArrow = 0;int downArrow = 0;int leftArrow = 0;int rightArrow = 0;int direction = 0;while (true)upArrow = GetAsyncKeyState(VK_UP);downArrow = GetAsyncKeyState(VK_DOWN);leftArrow = GetAsyncKeyState(VK_LEFT);rightArrow = GetAsyncKeyState(VK_RIGHT);if(upArrow)direction = UP;break;else if(downArrow)direction = DOWN;break;else if(leftArrow)direction = LEFT;break;else if(rightArrow)direction = RIGHT;break;Sleep(100);return direction;/判断游戏状态int Judge()/赢得游戏for(int i = 0; i ROW; +i)for(int j = 0; j COL; +j)if(gameij = 2048)return GAME_WIN;break;/横向检查for(int i = 0 ; i ROW; +i)for(int j = 0; j COL - 1; +j)if(!gameij | (gameij = gameij+1)return GAME_CONTINUE;break;/纵向检查for(int j = 0; j COL; +j)for(int i = 0; i ROW -1; +i)if(!gameij | (gameij = gamei+1j)return GAME_CONTINUE;break;/不符合上述两种状况,游戏结束return GAME_OVER;int main()/设置一个随机数种子srand(unsigned int)time(0);CreateNumber();CreateNumber();Print();int direction = 0;int gameState = -1;while(true)direction = Input();gameState = Judge();if(direction & gameState = GAME_CONTINUE)Process(direction);CreateNumber();Print();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年新疆喀什地区单招职业适应性考试题库及答案详解一套
- 2026年大连装备制造职业技术学院单招职业技能考试题库及答案详解一套
- 2026年成都银杏酒店管理学院单招职业倾向性考试题库及答案详解一套
- 2026年辽宁省丹东市单招职业适应性测试题库及答案详解1套
- 2026年三峡旅游职业技术学院单招职业适应性测试题库及答案详解一套
- 未来五年交互式广播网络企业数字化转型与智慧升级战略分析研究报告
- 未来五年移动OTT企业数字化转型与智慧升级战略分析研究报告
- 2026年湛江幼儿师范专科学校单招职业技能考试题库及答案详解1套
- 2026年石家庄信息工程职业学院单招职业技能考试题库及答案详解一套
- 2026年福建农业职业技术学院单招职业技能考试题库及答案详解一套
- 长护险政策课件
- 伙伴计划团队管理制度
- 《胃肠道相关淋巴瘤》课件
- 《医疗风险与法规》课件
- 苏州某多层框架结构厂房施工组织设计(6层)
- 小学语文学科识字教学模式
- 太阳能灯具设计与创新-全面剖析
- 2025年部编版小学语文3-6年级单元“语文要素”+“习作表达要求”
- 音响设备日常维护与专业保养方法
- 应急管理理论与实践 课件 第3、4章 应急预案编制与全面应急准备、应急响应启动与科学现场指挥
- 《历史课堂:秦兵马俑探秘》课件
评论
0/150
提交评论