C 언어 코드 2048 게임 실현
게임 코드 는 저 는 Xcode 로 만 들 었 습 니 다.저 는 IOS 소 백 입 니 다.일부 헤더 파일 은 Xcode 에서 사용 할 수 없고 대체 할 수 있 는 것 을 찾 을 수 없 기 때문에 일부 기능 은 스크린 기능 과 데 이 터 를 저장 하 는 기능,그리고 음악 기능 을 실현 할 수 없습니다.뿐만 아니 라 숫자 가 일치 하지 않 는 문제 도 존재 합 니 다.큰 신 이 저 를 지도 해 주 셨 으 면 좋 겠 습 니 다.대단히 감사합니다!
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<curses.h>
/* */
int i,j,a[4][4]={};/* a[4][4] 0*/
void kaishi()/* */
{
printf("Welcome to 2048
");
printf(" 1).
");
printf(" 2).
");
}
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];/* 2 4*/
break;/* */
}
}while(1);
printf("%d %d %d
",m,n,a[m][n]);
for(i=0;i<4;i++)
{
printf("-------------------------
");
for(j=0;j<4;j++)
{
if((m==i)&&(n==j))
printf("| %d ",a[m][n]);/* 2 4*/
else
{
if(a[i][j]>0)
printf("| %d ",a[i][j]);/* a[i][j] , */
else
printf("| ");/* a[i][j] */
}
}
printf("|
");
}
printf("-------------------------
");
printf(" :%d
",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)/* 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--)/*x ,m i */
{
if(a[m-1][j]>0)
break;/* 0, */
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("
");
if(k=='1')
{
while(flag==1)
{
jiemian(a);
c=getchar();
printf("
");
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(" : <w>,<s>,<a>,<d> , , , , 。
");
printf(" 3).
");
k=getchar();
}while(k!=3);
goto outloop;/* */
}
printf("
");
return 0;
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.