栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言代码实现2048游戏

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言代码实现2048游戏

我是大一新生,在寒假的实训课上老师让我们用c语言分组编程一个小游戏,我们组选的是“2048”。由于我们组上有一个大神,于是我们把大部分的工作交给了大神做,但是实训完成之后我感觉到碌碌无为,什么也没学到,自己对于c语言的理解也仅仅局限于书本之上,想到那些大神们已经基本可以自己编程一些小游戏了,心里就非常着急。于是利用这个寒假,我自己独立完成了“2048”小游戏的编程。

游戏代码我是用Xcode编的,我是IOS小白,有些头文件在Xcode中不能使用而我又找不到可以替代的,所以一些功能就不能实现比如清屏功能和储存数据的功能还有音乐功能,不仅如此还存在数字对不齐的问题。希望可以有大神能够指导我,万分感激!

#include
#include
#include
#include

int i,j,a[4][4]={};
void kaishi()
{
  printf("Welcome to 2048n");
  printf("  1).新游戏n");
  printf("  2).帮助n");
}
int defen(int a[][4])
{
  int max=a[0][0];
  int static sum=0;
  for(i=0;i<4;i++)
    for(j=0;j<4;j++)
      if(a[i][j]>max)
 max=a[i][j];
  sum+=max;
  return sum;
}
void jiemian(int a[][4])
{
  int b[2]={2,4},c[4]={0,1,2,3},sum,n,m;
  do
  {
    srand((int)time(NULL));
    m=c[rand()%4];
    n=c[rand()%4];
    
    if(a[m][n]==0)
    {
      a[m][n]=b[rand()%2];
      break;
    }
  }while(1);
  printf("%d %d %dn",m,n,a[m][n]);
  for(i=0;i<4;i++)
  {
    printf("-------------------------n");
    for(j=0;j<4;j++)
      {
 if((m==i)&&(n==j))
   printf("| %d ",a[m][n]);
 else
 {
   if(a[i][j]>0)
     printf("| %d ",a[i][j]);
   else
     printf("|   ");
 }
      }
    printf("|n");
  }
    printf("-------------------------n");
    printf("     得分:%dn",sum=defen(a));
}
void hebingup(int a[][4])
{
  int m;
  for(j=0;j<4;j++)
    for(i=0;i<3;i++)
      if(a[i][j]>0)
 if(a[i][j]==a[i+1][j]&&a[i][j]!=0)
 {
   a[i][j]=2*a[i][j];
   if(i==2)
     a[i+1][j]=0;
   else
     for(m=i+1;m<3;m++)
     {
a[m][j]=a[m+1][j];
a[m+1][j]=0;
     }
   
 }
}
void hebingdown(int a[][4])
{
  int m;
  for(j=0;j<4;j++)
    for(i=3;i>0;i--)
      if(a[i][j]>0)
 if(a[i][j]==a[i-1][j])
 {
   a[i][j]=2*a[i][j];
   if(i==1)
     a[i-1][j]=0;
   else
     for(m=i-1;m>0;m--)
     {
a[m][j]=a[m-1][j];
a[m-1][j]=0;
     }
 }
}
void hebingleft(int a[][4])
{
  int m;
  for(i=0;i<4;i++)
    for(j=0;j<3;j++)
      if(a[i][j]>0)
 if(a[i][j]==a[i][j+1])
 {
   a[i][j]=2*a[i][j];
   if(j==2)
     a[i][j+1]=0;
   else
     for(m=j+1;m<3;m++)
     {
a[i][m]=a[i][m+1];
a[i][m+1]=0;
     }
 }
}
void hebingright(int a[][4])
{
  int m;
  for(i=0;i<4;i++)
    for(j=3;j>0;j--)
      if(a[i][j]>0)
 if(a[i][j]==a[i][j-1])
 {
   a[i][j]=2*a[i][j];
   if(j==1)
     a[i][j-1]=0;
   else
     for(m=j-1;m>0;m--)
     {
a[i][m]=a[i][m-1];
a[i][m-1]=0;
     }
 }
}
void yidong(char b)
{
  int x,m;
  switch(b)
  {
    case 'w' :
      for(j=0;j<4;j++)
 for(i=1;i<=3;i++)
   for(x=i,m=i;x>0;x--,m--)
   {
     if(a[m-1][j]>0)
break;
     else
     {
a[m-1][j]=a[m][j];
a[m][j]=0;
     }
   }
      hebingup(a);
      break;
    case 's' :
      for(j=0;j<4;j++)
 for(i=2;i>=0;i--)
   for(x=3-i,m=i;x>0;x--,m++)
   {
     if(a[m+1][j]>0)
break;
     else
     {
a[m+1][j]=a[m][j];
a[m][j]=0;
     }
   }
      hebingdown(a);
      break;
    case 'a' :
      for(i=0;i<4;i++)
 for(j=1;j<=3;j++)
   for(x=j,m=j;x>0;x--,m--)
   {
     if(a[i][m-1]>0)
break;
     else
     {
a[i][m-1]=a[i][m];
a[i][m]=0;
     }
   }
      hebingleft(a);
      break;
    case 'd' :
      for(i=0;i<4;i++)
 for(j=2;j>=0;j--)
   for(x=3-j,m=j;x>0;x--,m++)
   {
     if(a[i][m+1]>0)
break;
     else
     {
a[i][m+1]=a[i][m];
a[i][m]=0;
     }
   }
      hebingright(a);
      break;
  }
}
int main(int argc,char *argv[])
{
  int flag=1;
  char c,k;
  system("stty -icanon");
outloop:;
  kaishi();
  k=getchar();
  printf("n");
  if(k=='1')
  {
    while(flag==1)
    {
      jiemian(a);
      c=getchar();
      printf("n");
      yidong(c);
      for(i=0;i<4;i++)
 for(j=0;j<4;j++)
 {
   if(a[i][j]==0)
   {
     flag=1;
     goto end;
   }
   else
     flag=0;
 }
end:;
    }
  }
  if(k=='2')
  {
    do
    {
      printf("游戏规则:通过点击,,,键来实现数字的上下左右的移动,使相同的数字相加,每个格子中的数的累加将作为得分,当格子填满且无法移动时,游戏结束。n");
      printf("  3).返回n");
      k=getchar();
    }while(k!=3);
    goto outloop;
  }
  printf("     游戏结束n");
  return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/62075.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号