本文实例为大家分享了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("┏━━┳━━┳━━┳━━┓n┃ ┃ ┃ ┃ ┃n┃");
else if(i==8)printf("┗━━┻━━┻━━┻━━┛n");
else if(i==9)printf(" SCORE:%dn",score);
else if(i%2==0)printf("┣━━╋━━╋━━╋━━┫n┃ ┃ ┃ ┃ ┃n┃");
else {
for(j=0;
j<4;
j++) {
if(x[i/2][j]!=0)printf("%4d",x[i/2][j]);
else printf(" ");
printf("┃");
}
printf("n");
}
}
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;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- C语言实现2048游戏代码
- 2048小游戏C语言实现代码
- C语言实现2048小游戏
- C语言实现2048游戏
- 利用C语言实现2048小游戏的方法
- C语言控制台版2048小游戏