C++实现2048游戏示例

C++实现2048游戏示例

ID:41381117

大小:58.77 KB

页数:10页

时间:2019-08-23

C++实现2048游戏示例_第1页
C++实现2048游戏示例_第2页
C++实现2048游戏示例_第3页
C++实现2048游戏示例_第4页
C++实现2048游戏示例_第5页
资源描述:

《C++实现2048游戏示例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C++实现2048游戏示例《2048》是比较流行的一款数字游戏。原版2048首先在github±发布,原作者是GabrieleCirullio它是基于《1024》和《小3传奇》的玩法开发而成的新型数字游戏。这游戏前一段时问传的很火,前几天早上实在太无聊了,就决定把这游戏自己也写一个。前后写了一个多小时吧,大概300行左右,没什么复杂算法,不过实在懒得去优化了,但估计优化完能控制在200行以下,有兴趣的朋友可以自己优化一下。说明:我一开始玩的是IOSAPP版的TRHEES,后来才玩的2048,两者在滑动的规则上有些区别,本人这个版本是这两者的结合。最后,祝试玩愉快!界面丑陋,求不笑。以下是源

2、代码:复制代码代码如下:/*ByReason*/#include#inelude#include#include#includevtime.h>#include〃为了读取方向键#includeusingnamespacestd;//srand((unsigned)time(NULL));〃随机数种子不能用在这里intpane[4][4];//棋盘intN=l;Hl的n次方voidshowpanef)//显示棋盘{cout«setw(46)«HX2048byReason,,«en

3、dl;cout«setw(50)«H

4、

5、"«endl;for(inti=0;i<=3;i++){cout«setw(24)«"";for(intj=0;j<=3;j++){//SetConsoleTextAttributefGetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);if(pane[i][j]==O)cout«setw(2)«"

6、"«setw(4)«"elsecout«setw(2)«"

7、"«setw(4)«pane[i][j];if(j==3){cout«setw(2)«"

8、"«endl;cout«setw(50)«n

9、

10、”《endl;

11、}}}}voidnewgame()〃开始游戏{N=l;for(inti=O;i<=3;i++)〃初始化棋盘for(intj=O;j<=3;j++)pane[i][j]=O;srandf(unsigned)time(NULL));intm=rand()%4;intn二rand()%4;intp=rand()%4;intq=rand()%4;pane[m][n]二pane[p][q]=2;showpane();}intif2n(intx)〃判断x是否是2的n次方{intflag=O;for(intn二1;*=ll;n++){if(x==pow(2,n)){flag";if(n>N)N=n;re

12、turnflag;}}returnflag;}intflag=O;for(intj=0;jv=3;j++)for(inti=0;i<3;i++)if(if2n(pane[i][j]+pane[i+l][j])==l){pane[i][j]=pane[i][j]+pane[i+l][j];pane[i+l]0]=O;flag=l;}}returnflag;}intdownmove()〃下移{intflag=O;for(intj=0;j<=3;j++)for(inti=3;i>0;i-){if(if2n(pane[i][j]+pane[i-l][j])==l){pane[i][j]=pane[

13、i][j]+pane[i-l][j];pane[i-l][j]=O;flag=l;}}returnflag;}intleftmove()〃左移{intflag=O;for(inti=0;i<=3;i++)for(intj=O;j<3;j++){if(if2n(pane[i][j]+pane[i][j+l])==l){pane[i][j]=pane[i][j]+pane[i]O+l];pane[i][j+l]=O;flag=l;}}returnflag;}intflag=O;for(inti=0;i<=3;i++)for(intj=3;j>0;j—){if(if2n(pane[i]01+pa

14、ne[i][j-l])==l){pane[i][j]=pane[i][j]+pane[i][j-l];pane[i][j-l]=O;flag=l;}}returnflag;}inttestupf)〃能否上移测试{intflag=O;for(intj=0;j<=3;j++)for(inti=O;i<3;i++){if((if2n(pane[i][j]+pane[i+l][j])==l)&&pane[i+l]Ul){flag

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。