C语言编程2048小游戏.doc
上传人:qw****27 上传时间:2024-09-11 格式:DOC 页数:9 大小:41KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

C语言编程2048小游戏.doc

C语言编程2048小游戏.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

/*ByReason*/#include<iostream>#include<iomanip>#include<math.h>#include<stdlib.h>#include<time.h>#include<conio.h>//为了读取方向键#include<windows.h>usingnamespacestd;//srand((unsigned)time(NULL));//随机数种子不能用在这里intpane[4][4];//棋盘intN=1;//2的n次方voidshowpane()//显示棋盘{cout<<setw(46)<<"X2048byReason"<<endl;cout<<setw(50)<<"|-----------------------|"<<endl;for(inti=0;i<=3;i++){cout<<setw(24)<<"";for(intj=0;j<=3;j++){//SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);cout<<setw(2)<<"|"<<setw(4)<<pane[i][j];if(j==3){cout<<setw(2)<<"|"<<endl;cout<<setw(50)<<"|-----------------------|"<<endl;}}}}voidnewgame()//开始游戏{N=1;for(inti=0;i<=3;i++)//初始化棋盘for(intj=0;j<=3;j++)pane[i][j]=0;srand((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=0;for(intn=1;n<=11;n++){if(x==pow(2,n)){flag=1;if(n>N)N=n;returnflag;}}returnflag;}intupmove()//上移{intflag=0;for(intj=0;j<=3;j++)for(inti=0;i<3;i++){if(if2n(pane[i][j]+pane[i+1][j])==1){pane[i][j]=pane[i][j]+pane[i+1][j];pane[i+1][j]=0;flag=1;}}returnflag;}intdownmove()//下移{intflag=0;for(intj=0;j<=3;j++)for(inti=3;i>0;i--){if(if2n(pane[i][j]+pane[i-1][j])==1){pane[i][j]=pane[i][j]+pane[i-1][j];pane[i-1][j]=0;flag=1;}}returnflag;}intleftmove()//左移{intflag=0;for(inti=0;i<=3;i++)for(intj=0;j<3;j++){if(if2n(pane[i][j]+pane[i][j+1])==1){pane[i][j]=pane[i][j]+pane[i][j+1];pane[i][j+1]=0;flag=1;}}returnflag;}intrightmove()//右移{intflag=0;for(inti=0;i<=3;i++)for(intj=3;j>0;j--){if(if2n(pane[i][j]+pane[i][j-1])==1){pane[i][j]=pane[i][j]+pane[i][j-1];pane[i][j-1]=0;flag=1;}}returnflag;}inttestup()//能否上移测试{intflag=0;for(intj=0;j<=3;j++)for(inti=0;i<3;i++){if(if2n(pane[i][j]+pane[i+1][j])==1){flag=1;}}returnflag;}inttestdown()//测试能否下移{intflag=0;for(intj=0;j<=3;j++)for(inti=3;i>0;i--){if(if2n(pane[i][j]+pane[i-1]