欢迎来到天天文库
浏览记录
ID:41381117
大小:58.77 KB
页数:10页
时间:2019-08-23
《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
此文档下载收益归作者所有