C 언어 2048 게임 간단하게 구현
/*2048*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
//
int x[4][4]={0};
int score=0;
int can_move;
int empty()
{
int i,j;
int n=0;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(x[i][j]==0)
n++;
}
}
return n;
}
int check()
{
int i,j;
int a,b;
if(empty() == 0)
{
a=b=0;
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
if(x[i][j]==x[i][j+1])
a=1;
}
}
for(j=0;j<4;j++)
{
for(i=0;i<3;i++)
{
if(x[i][j]==x[i+1][j])
b=1;
}
}
if(a==0 && b==0)
return 0;
else
return 1;
}
else
return 1;
}
int win()
{
int i,j;
int a=0;
if(check())
{
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(x[i][j]==2048)
a=1;
}
}
}
return a;
}
void add()
{
int i,j;
int n=0;
if(empty() > 0)
{
while(n<16)
{
i=rand()%4;
j=rand()%4;
if(x[i][j] == 0)
{
if(rand()%100 < 80)
{
x[i][j]=2;
}
else
{
x[i][j]=4;
}
break;
}
n++;
}
}
}
void move_up()
{
int i,j,k;
can_move=0;
for(j=0;j<4;j++)
{
for(i=0;i<4;i++)
{
if(x[i][j] == 0)
{
for(k=i+1;k<4;k++)
{
if(x[k][j] != 0)
{
x[i][j]=x[k][j];
x[k][j]=0;
can_move=1;
break;
}
}
}
}
for(i=0;i<3;i++)
{
if(x[i][j] == x[i+1][j] && x[i][j] != 0)
{
x[i][j] *= 2;
x[i+1][j]=0;
can_move=1;
score += x[i][j];
}
}
for(i=0;i<4;i++)
{
if(x[i][j] == 0)
{
for(k=i+1;k<4;k++)
{
if(x[k][j] != 0)
{
x[i][j]=x[k][j];
x[k][j]=0;
break;
}
}
}
}
}
if(can_move == 1)
{
add();
}
}
void move_down()
{
int i,j,k;
can_move=0;
for(j=0;j<4;j++)
{
for(i=3;i>=0;i--)
{
if(x[i][j] == 0)
{
for(k=i-1;k>=0;k--)
{
if(x[k][j] != 0)
{
x[i][j]=x[k][j];
x[k][j]=0;
can_move=1;
break;
}
}
}
}
for(i=3;i>0;i--)
{
if(x[i][j] == x[i-1][j] && x[i][j] != 0)
{
x[i][j] *= 2;
x[i-1][j]=0;
can_move=1;
score += x[i][j];
}
}
for(i=3;i>=0;i--)
{
if(x[i][j] == 0)
{
for(k=i-1;k>=0;k--)
{
if(x[k][j] != 0)
{
x[i][j]=x[k][j];
x[k][j]=0;
break;
}
}
}
}
}
if(can_move == 1)
{
add();
}
}
void move_left()
{
int i,j,k;
can_move=0;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(x[i][j] == 0)
{
for(k=j+1;k<4;k++)
{
if(x[i][k] != 0)
{
x[i][j]=x[i][k];
x[i][k]=0;
can_move=1;
break;
}
}
}
}
for(j=0;j<3;j++)
{
if(x[i][j] == x[i][j+1] && x[i][j] != 0)
{
x[i][j] *= 2;
x[i][j+1]=0;
can_move=1;
score += x[i][j];
}
}
for(j=0;j<3;j++)
{
if(x[i][j] == 0)
{
for(k=j+1;k<4;k++)
{
if(x[i][k] != 0)
{
x[i][j]=x[i][k];
x[i][k]=0;
break;
}
}
}
}
}
if(can_move == 1)
{
add();
}
}
void move_right()
{
int i,j,k;
can_move=0;
for(i=0;i<4;i++)
{
for(j=3;j>=0;j--)
{
if(x[i][j] == 0)
{
for(k=j-1;k>=0;k--)
{
if(x[i][k] != 0)
{
x[i][j]=x[i][k];
x[i][k]=0;
can_move=1;
break;
}
}
}
}
for(j=3;j>0;j--)
{
if(x[i][j] == x[i][j-1] && x[i][j] != 0)
{
x[i][j] *= 2;
x[i][j-1]=0;
can_move=1;
score += x[i][j];
}
}
for(j=3;j>=0;j--)
{
if(x[i][j] == 0)
{
for(k=j-1;k>=0;k--)
{
if(x[i][k] != 0)
{
x[i][j]=x[i][k];
x[i][k]=0;
break;
}
}
}
}
}
if(can_move == 1)
{
add();
}
}
void out()
{
int i,j;
system("cls");
for(i=0;i<10;i++)
{
if(i==0)printf("┏━━┳━━┳━━┳━━┓
┃ ┃ ┃ ┃ ┃
┃");
else if(i==8)printf("┗━━┻━━┻━━┻━━┛
");
else if(i==9)printf(" SCORE:%d
",score);
else if(i%2==0)printf("┣━━╋━━╋━━╋━━┫
┃ ┃ ┃ ┃ ┃
┃");
else
{
for(j=0;j<4;j++)
{
if(x[i/2][j]!=0)printf("%4d",x[i/2][j]); else printf(" ");
printf("┃");
}
printf("
");
}
}
if(win())
{printf("You are win!");}
if(!check())
{printf("Game over!");}
}
int main()
{
unsigned char key;
add();
add();
out();
while(1)
{
key = getch();
switch(key)
{
case 'w': move_up(); break;
case 'a': move_left(); break;
case 's': move_down(); break;
case 'd': move_right(); break;
}
out();
}
return 0;
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.