虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > C/C++编程 > 简单实现C语言2048游戏

简单实现C语言2048游戏
类别:C/C++编程   作者:码皇   来源:互联网   点击:

这篇文章主要为大家详细介绍了简单实现C语言2048游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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小游戏
相关热词搜索: C语言 2048游戏