




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客户行为面试题及答案文档实战分享:提高求职成功率案例
- 故宫建筑文化探索题及答案详解
- 气质与性格的课件
- 2025年住院医师规培-辽宁-辽宁住院医师规培(眼科)历年参考题库含答案解析(5套)
- 企业供应链中的仓储职位分析:以公司仓库面试题及答案为例
- 2025年住院医师规培-福建-福建住院医师规培(超声医学科)历年参考题库典型考点含答案解析
- 2025年住院医师规培-湖南-湖南住院医师规培(眼科)历年参考题库含答案解析
- 2025年住院医师规培-湖北-湖北住院医师规培(麻醉科)历年参考题库典型考点含答案解析
- 2025年住院医师规培-河南-河南住院医师规培(口腔修复科)历年参考题库含答案解析
- 2025年住院医师规培-河北-河北住院医师规培(预防医学科)历年参考题库含答案解析(5套)
- 2024年数据泄露一次性赔偿合同
- 有害物质过程管理系统HSPM培训教材
- 乒乓球馆合伙人协议
- 2024至2030年中国品牌战略咨询服务市场现状研究分析与发展前景预测报告
- ISO∕TR 56004-2019创新管理评估-指南(雷泽佳译-2024)
- TSG+11-2020锅炉安全技术规程
- 从高考改卷谈对物理教学的几点启示
- DB32-T 4757-2024 连栋塑料薄膜温室建造技术规范
- 项目成本核算表模板
- 2024新版实习律师协议
- 2024辅警考试公基模拟220题及答案解析
评论
0/150
提交评论