C++实现2048小游戏(控制台版的).doc_第1页
C++实现2048小游戏(控制台版的).doc_第2页
C++实现2048小游戏(控制台版的).doc_第3页
C++实现2048小游戏(控制台版的).doc_第4页
C++实现2048小游戏(控制台版的).doc_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论