PAGE
PAGE 1
C语言2048小游戏课设
项目说明
本系统基于C语言开发,适用于刚入门的C语言新手项目课设,开发软件采用VC++6.0开发,VS,DEV C++等均可运行。(书生)
项目运行截图
开始界面
代码界面截图
完整代码
#include
#include
#include
#include
#define N 4
int star(int (*p)[N]);
int sencen(int (*p)[N]);
int dayin(int (*p)[N]);
int panduan(int (*p)[N]);
int up(int (*p)[N]);
int left(int (*p)[N]);
int right(int (*p)[N]);
int down(int (*p)[4]);
int df=0;//全局变量 得分
int main(void){
int aa[N][N];
char ch ;
srand((unsigned)time(NULL));//随机数种子
printf("\n#####################2048#####################\n");
printf("\n\n\n任意键开始");
if(getch())star(aa);
}
int star(int (*p)[N]) {
int key,i,j;
df=0;
for(i=0;i
for(j=0;j
p[i][j]=0;
system("cls");
sencen(p);
sencen(p);
dayin(p);
while(1){
key=getch();
switch(key)
{
case 72 : up(p),dayin(p),panduan(p);break;
case 75 : left(p),dayin(p),panduan(p);break;
case 77 : right(p),dayin(p),panduan(p);break;
case 80 : down(p),dayin(p),panduan(p);break;
case 27 : return 0;break;
case 32 : star(p);break;
}
}
}
int sencen(int (*p)[N])//在表中生成一个数
{
int s,j,i;
while(1){
s=rand()%(4);//随机数0-3
j=rand()%(4);
if(p[s][j]==0)
{
p[s][j]=2*(rand()%2+1);
break;
}
}
return 0;
}
int dayin(int (*p)[N])//打印数字
{
int i,j;
printf("\n#####################2048#####################\n\n");
for(i=0;i
{
for(j=0;j
if(p[i][j]==0)printf("%4c ",'-');
else printf("%4d ",p[i][j]);
printf("\n");
}
printf("\n 得分:%d",df);
printf("\n\n方向键:控制\tESC:退出\t空格:重置");
printf("\n\n\n#####################2048#####################\n\n");
return 0;
}
int panduan(int (*p)[N])//判断游戏胜利与结束
{
int i,j,flag1=1,flag2=1;//flag1=0时,表中有0, flag2=0时表中相邻数存在相等的.
for(i=0;i
{
if((i
for(j=0;j
if((j
if(p[i][j]==0) flag1=0;
if(p[i][j]==2048)printf("\n#####################WIN#####################\n");
if((i