C语言2048源代码

更新时间:2023-10-19 09:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

#include #include #include #include #define N 4

void Generat_picture(int d[N][N],char c[N][N][N],int s); void Control_synthesis(int a[N][N]); void add_num(int a[N][N]); void swap(int *a,int *b); int score(int a[N][N]); int moveup(int a[N][N]); int movedown(int a[N][N]); int moveleft(int a[N][N]); int moveright(int a[N][N]); int main() {

int d[N][N]; char c[N][N][N]; int i,j,s=2; system(\ for(i=0; i

add_num(d);

Generat_picture(d,c,s); Control_synthesis(d); s=score(d); } return 0; }

void Generat_picture(int d[N][N],char c[N][N][N],int s) {

int i,j,k; for(i=0; i

if(d[i][j]==0) {

c[i][j][0]=' '; c[i][j][1]=' '; c[i][j][2]=' '; c[i][j][3]=' ';

} else {

c[i][j][0]=(int)(d[i][j]/1000)+48; //4358 c[i][j][1]=(int)(d[i][j]/100)+48; c[i][j][2]=(int)(d[i][j]/10)+48; c[i][j][3]=d[i][j]+48; for(k=0; k

system(\

printf(\得分:%d\\n\

printf(\┏━━┳━━┳━━┳━━┓\\n\ printf(\

%c%c%c%c

%c%c%c%c

%c%c%c%c

%c%c%c%c

\\n\[1],c[0][2][2],c[0][2][3],c[0][3][0],c[0][3][1],c[0][3][2],c[0][3][3]); printf(\┣━━╋━━╋━━╋━━┫\\n\ printf(\

%c%c%c%c

%c%c%c%c

%c%c%c%c

%c%c%c%c

\\n\[1],c[1][2][2],c[1][2][3],c[1][3][0],c[1][3][1],c[1][3][2],c[1][3][3]); printf(\┣━━╋━━╋━━╋━━┫\\n\ printf(\

%c%c%c%c

%c%c%c%c

%c%c%c%c

%c%c%c%c

\\n\[1],c[2][2][2],c[2][2][3],c[2][3][0],c[2][3][1],c[2][3][2],c[2][3][3]); printf(\┣━━╋━━╋━━╋━━┫\\n\ printf(\

%c%c%c%c

%c%c%c%c

%c%c%c%c

%c%c%c%c

\\n\[1],c[3][2][2],c[3][2][3],c[3][3][0],c[3][3][1],c[3][3][2],c[3][3][3]); printf(\┗━━┻━━┻━━┻━━┛\\n\ printf(\控制方向\\n\}

void Control_synthesis(int a[N][N]) {

int c,flag; label: c=getch(); if(c=='w'||c=='W') flag=moveup(a); else if(c=='s'||c=='S') flag=movedown(a); else if(c=='a'||c=='A')

flag=moveleft(a); else if(c=='d'||c=='D') flag=moveright(a); else {

printf(\重新输入:\\n\ goto label; }

if(flag==0) goto label; }

void add_num(int a[N][N]) {

int i,j,k,t=0; int *p[16];

srand((unsigned int)time(0)); for(i=0; i

p[t]=&a[i][j]; t++; } k=rand()%t; *p[k]=2; }

int moveup(int a[N][N]) {

int t,p=0,q=0; for(t=0; t

if(a[0][t]==a[1][t]&&a[2][t]==a[3][t]&&a[0][t]!=0&&a[2][t]!=0) {

a[1][t]*=2; a[3][t]*=2; a[0][t]=a[t][2]=0; }

else if(a[0][t]==a[1][t]&&a[0][t]!=0) {

a[0][t]=0; a[1][t]*=2; }

else if(a[0][t]==a[2][t]&&a[1][t]==0&&a[0][t]!=0) {

a[0][t]=0; a[2][t]*=2; }

else if(a[1][t]==a[2][t]&&a[1][t]!=0) {

a[1][t]=0; a[2][t]*=2; }

else if(a[0][t]==a[3][t]&&a[1][t]==0&&a[2][t]==0&&a[0][t]!=0) {

a[0][t]=0; a[3][t]*=2; }

else if(a[1][t]==a[3][t]&&a[2][t]==0&&a[1][t]!=0) {

a[1][t]=0; a[3][t]*=2; }

else if(a[2][t]==a[3][t]&&a[2][t]!=0) {

a[2][t]=0; a[3][t]*=2; } else p++; int n=3; while(n--) {

if(a[2][t]==0&&a[3][t]!=0) {

swap(&a[2][t],&a[3][t]); q++; }

if(a[1][t]==0&&a[2][t]!=0) {

swap(&a[1][t],&a[2][t]); q++; }

if(a[0][t]==0&&a[1][t]!=0) {

swap(&a[0][t],&a[1][t]); q++;

} } }

if(4==p&&q==0) return 0; else

return 1; }

int movedown(int a[N][N]) {

int t,p=0,q=0; for(t=0; t

if(a[0][t]==a[1][t]&&a[2][t]==a[3][t]&&a[0][t]!=0&&a[2][t]!=0) {

a[1][t]*=2; a[3][t]*=2; a[0][t]=a[t][2]=0; }

else if(a[2][t]==a[3][t]&&a[2][t]!=0) {

a[2][t]=0; a[3][t]*=2; }

else if(a[1][t]==a[3][t]&&a[2][t]==0&&a[1][t]!=0) {

a[1][t]=0; a[3][t]*=2; }

else if(a[0][t]==a[3][t]&&a[1][t]==0&&a[2][t]==0&&a[0][t]!=0) {

a[0][t]=0; a[3][t]*=2; }

else if(a[1][t]==a[2][t]&&a[1][t]!=0) {

a[1][t]=0; a[2][t]*=2; }

else if(a[0][t]==a[2][t]&&a[1][t]==0&&a[0][t]!=0) {

a[0][t]=0; a[2][t]*=2; }

else if(a[0][t]==a[1][t]&&a[0][t]!=0) {

a[0][t]=0; a[1][t]*=2; } else p++; int n=3; while(n--) {

if(a[1][t]==0&&a[0][t]!=0) {

swap(&a[0][t],&a[1][t]); q++; }

if(a[2][t]==0&&a[1][t]!=0) {

swap(&a[1][t],&a[2][t]); q++; }

if(a[3][t]==0&&a[2][t]!=0) {

swap(&a[2][t],&a[3][t]); q++; } } }

if(4==p&&q==0) return 0; else

return 1; }

int moveleft(int a[N][N]) {

int t,p=0,q=0; for(t=0; t

if(a[t][0]==a[t][1]&&a[t][2]==a[t][3]&&a[t][0]!=0&&a[t][1]!=0) {

a[t][1]*=2; a[t][3]*=2; a[t][0]=a[t][2]=0; }

else if(a[t][0]==a[t][1]&&a[t][0]!=0)

{

a[t][0]=0; a[t][1]*=2; }

else if(a[t][0]==a[t][2]&&a[t][1]==0&&a[t][0]!=0) {

a[t][0]=0; a[t][2]*=2; }

else if(a[t][1]==a[t][2]&&a[t][1]!=0) {

a[t][1]=0; a[t][2]*=2; }

else if(a[t][0]==a[t][3]&&a[t][1]==0&&a[t][2]==0&&a[t][0]!=0) {

a[t][0]=0; a[t][3]*=2; }

else if(a[t][1]==a[t][3]&&a[t][2]==0&&a[t][1]!=0) {

a[t][1]=0; a[t][3]*=2; }

else if(a[t][2]==a[t][3]&&a[t][2]!=0) {

a[t][2]=0; a[t][3]*=2; } else p++; int n=3; while(n--) {

if(a[t][2]==0&&a[t][3]!=0) {

swap(&a[t][2],&a[t][3]); q++; }

if(a[t][1]==0&&a[t][2]!=0) {

swap(&a[t][1],&a[t][2]); q++; }

if(a[t][0]==0&&a[t][1]!=0) {

swap(&a[t][0],&a[t][1]); q++; } } }

if(4==p&&q==0) return 0; else

return 1; }

int moveright(int a[N][N]) {

int t,p=0,q=0; for(t=0; t

if(a[t][0]==a[t][1]&&a[t][2]==a[t][3]&&a[t][0]!=0&&a[t][1]!=0) {

a[t][1]*=2; a[t][3]*=2; a[t][0]=a[t][2]=0; }

else if(a[t][2]==a[t][3]&&a[t][2]!=0) {

a[t][2]=0; a[t][3]*=2; }

else if(a[t][1]==a[t][3]&&a[t][2]==0&&a[t][1]!=0) {

a[t][1]=0; a[t][3]*=2; }

else if(a[t][0]==a[t][3]&&a[t][1]==0&&a[t][2]==0&&a[t][0]!=0) {

a[t][0]=0; a[t][3]*=2; }

else if(a[t][1]==a[t][2]&&a[t][1]!=0) {

a[t][1]=0; a[t][2]*=2; }

else if(a[t][0]==a[t][2]&&a[t][1]==0&&a[t][0]!=0)

{

a[t][0]=0; a[t][2]*=2; }

else if(a[t][0]==a[t][1]&&a[t][0]!=0) {

a[t][0]=0; a[t][1]*=2; } else p++; int n=3; while(n--) {

if(a[t][1]==0&&a[t][0]!=0) {

swap(&a[t][0],&a[t][1]); q++; }

if(a[t][2]==0&&a[t][1]!=0) {

swap(&a[t][1],&a[t][2]); q++; }

if(a[t][3]==0&&a[t][2]!=0) {

swap(&a[t][2],&a[t][3]); q++; } } }

if(4==p&&q==0) return 0; else

return 1; }

void swap(int *a,int *b) {

int t; t=*a; *a=*b; *b=t; }

int score(int a[N][N])

{

int i,j,s=0; for(i=0; i

本文来源:https://www.bwwdw.com/article/vxof.html

Top