资源描述
#include#include#include#includeint code44= 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; /游戏中的16个格子int temp5;/中间变量int move=0;/*移动次数*/int score=0;/*分数*/void print()/*显示游戏界面*/ int i,j; system(cls);/*清屏*/ system(color b8); printf(2048n); printf(u-UP l-LEFT d-DOWN r-RIGHT 0-EXITn); printf(Score:%d Move:%dn,score,move); printf(|-|n);/*显示横向分隔线*/ for(i=0; i=3; i+) for(j=0; j=3; j+) if(codeij=0) printf(| );/*0显示空格*/ else printf(|%4d,codeij);/*显示数字和分隔线*/ printf(|n|-|n);/*显示横向分隔线*/ int add()/*对中间变量数组进行解决*/ int i; int t=0; int change=0;/*判断数组与否有变化,0不变,1变化*/ do for(i=0; i=3; i+) if(tempi=0) if(tempi!=tempi+1) change=1;/*当一种0背面不是0时数组变化*/ tempi=tempi+1; tempi+1=0; /*去掉中间的0*/ t+; while(t=3); /*反复多次*/ for(i=1; i=3; i+) if(tempi=tempi-1) if(tempi!=0) change=1;/*当两个非零相似的数相加时数组变化*/ score=score+tempi; tempi-1=tempi-1*2; tempi=0; /*把两个相邻的相似的数加起来*/ do for(i=0; i=3; i+) if(tempi=0) tempi=tempi+1; tempi+1=0; /*去掉中间的0*/ t+; while(t=1)/*仅当数发生变化时添加新数*/ do i=(unsigned)rand()%4; j=(unsigned)rand()%4; while(codeij!=0); if(unsigned)rand()%4=0) codeij=4; else codeij=2;/*随机选一种空格填上2或4*/ move+;/*增长次数*/ print();/*显示*/ input=getch();/*输入方向*/ change=0; switch(input) case 0:/*退出*/ printf(Are you sure to exit?(y/n); input=getchar(); if(input=y|input=Y) exit(0); break; case U: case u:/*上*/ for(j=0; j=3; j+) for(i=0; i=3; i+) tempi=codeij;/*把一列数移到中间变量*/ temp4=0; change=change+add(); for(i=0; i=3; i+) codeij=tempi;/*把解决好的中间变量移回来*/ break; case L: case l:/*左*/ for(i=0; i=3; i+) for(j=0; j=3; j+) tempj=codeij;/*把一行数移到中间变量*/ temp4=0; change=change+add(); for(j=0; j=3; j+) codeij=tempj;/*把解决好的中间变量移回来*/ break; case D: case d:/*下*/ for(j=0; j=3; j+) for(i=0; i=3; i+) tempi=code3-ij;/*把一列数移到中间变量*/ temp4=0; change=change+add(); for(i=0; i=3; i+) code3-ij=tempi;/*把解决好的中间变量移回来*/ break; case R: case r:/*右*/ for(i=0; i=3; i+) for(j=0; j=3; j+) tempj=codei3-j;/把一行数移到中间变量 temp4=0; change=change+add(); for(j=0; j=3; j+) codei3-j=tempj;/*把解决好的中间变量移回来*/ break; gameover=1; for(i=0; i=3; i+) for(j=0; j=3; j+) if(codeij=0) gameover=0;/*所有格子都填满则游戏结束*/ printf(Game over!n); getch(); return 0;
展开阅读全文