欢迎来到入门教程网!

C语言

当前位置:主页 > 软件编程 > C语言 >

2048小游戏C语言实现代码

来源:本站原创|时间:2020-01-10|栏目:C语言|点击:

本文实例为大家分享了C语言实现2048游戏的具体代码,供大家参考,具体内容如下

大一时学c语言写的,写的不好但当时感觉还行。

环境运行 vc6.0 ,cpp文件。

基本上是c写的,但是改变字体颜色,在控制台移动光标等等好像不是c中的。

代码:

#include<time.h> 
#include<stdlib.h> 
#include<conio.h> 
#include<stdio.h>  
#include<windows.h> 
#define x0 26 
#define y0 1 
HANDLE hOutput=GetStdHandle(STD_OUTPUT_HANDLE); 
/*显示声明*/ 
void p(int*a,int i,int x,int y); 
/*部分刷新声明*/ 
void shua(void); 
/*胜利画面测试函数声明*/ 
int test(void); 
/*字体空格声明*/ 
void kg(int*a); 
/*画长条函数的声明*/ 
void ct(int x,int y,int l,int k,int c); 
/*标题字幕2048*/ 
void p2048(int x,int y); 
/*单个颜色返回值声明*/ 
int col(int*a); 
/*移动光标*/ 
void gotoxy(int x,int y) 
{ 
  COORD coordScreen={0,0}; 
  coordScreen.X=x; 
  coordScreen.Y=y; 
  SetConsoleCursorPosition(hOutput,coordScreen); 
} 
/*字体颜色*/ 
void textcolor(int color)  
{ 
  SetConsoleTextAttribute(hOutput,color); 
}  
/*显示函数*/ 
void prin(int*a,int*score,int*scoremax) 
{ 
  int i; 
  for (i = 0; i < 16; i++) 
  { 
    p(a,i,x0,y0); 
  } 
  printf("\n\n             score=%d  MAXscore=%d         \n", *score, *scoremax); 
} 
/* 产生随机数 */ 
int shu(void) 
{ 
  int s = 0; 
  s = 1 + (int)(12.0 * rand() / (RAND_MAX + 1.0)); 
  if (s == 12) 
    return 4; 
  else 
    return 2; 
} 
 
/* 决定位置 */ 
int rands(void) 
{ 
  return (int)(16.0 * rand() / (RAND_MAX + 1.0)); 
} 
/* 主函数*/ 
int main(void) 
{ 
  int flag = 0, c = 0, pd = 1, n = 0, i = 0, m = 0, j = 
    0, sj, sj1, sj2, a[16] = { 0 }, b[16] ={0}, x = 0, score = 0, t = 0, jx = 0, scoremax = 0,ks=1,yx=0; 
    char sr,an; 
    //开始画面 
    p2048(17,1); 
    textcolor(255); 
    gotoxy(35,15); 
    for(;;) 
    { 
      an=getch(); 
    switch(an) 
    { 
    case 72: 
      if(ks==1) 
        ks=0; 
      else 
        ks=1; 
    break; 
    case 80: 
      if(ks==1) 
        ks=0; 
      else 
        ks=1; 
    break; 
    case '\r': 
      yx=1; 
      break; 
    default: 
    break; 
    } 
    if(ks==1) 
      gotoxy(35,15); 
    else 
      gotoxy(34,18); 
    if(ks==1&&yx==1) 
      break; 
    else if(ks==0&&yx==1) 
    { 
    textcolor(240); 
    gotoxy(0,0); 
    for(i=0;i<=500;i++) 
    { 
      printf("   "); 
    } 
    gotoxy(0,0); 
    ct(12,5,58,10,223); 
    gotoxy(13,6); 
    printf("           2048游戏说明"); 
    gotoxy(13,8); 
    printf(" 通过按数字键移动数字,合并相同的数字来的取得更大的数。"); 
    gotoxy(13,9); 
    printf(" 得到2048时游戏即胜利,当然您也可以选择继续挑战。"); 
    gotoxy(13,11); 
    printf(" 按键操作:"); 
    gotoxy(13,13); 
    printf(" 上:↑ 下:↓ 左:← 右:→ 重新开始:r  退出游戏:e"); 
    textcolor(240); 
    printf("\n\n\n\n\n                              I know "); 
    getch(); 
    p2048(17,1); 
    textcolor(255); 
    gotoxy(34,18); 
    } 
    yx=0; 
    } 
    //隐藏光标 
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE); 
    CONSOLE_CURSOR_INFO cci; 
    GetConsoleCursorInfo(hOut,&cci); 
    cci.bVisible=FALSE; 
    SetConsoleCursorInfo(hOut,&cci); 
    //刷新画面 
    textcolor(240); 
    gotoxy(0,0); 
    for(i=0;i<=500;i++) 
    { 
      printf("   "); 
    } 
    gotoxy(0,0); 
    /*设置时间种子*/ 
    srand((int)time(0)); 
    /* 设置初始值 */ 
    sj = rands(); 
    sj1 = rands(); 
    sj2 = rands(); 
    for (;;) 
    { 
      if (sj == sj1 || sj == sj2 || sj1 == sj2) 
      { 
        sj1 = rands(); 
        sj2 = rands(); 
      } 
      else 
        break; 
    } 
    a[sj] = shu(); 
    a[sj1] = shu(); 
    a[sj2] = shu(); 
    /*显示*/ 
    prin(a,&score,&scoremax); 
    for (;;) 
    { 
      /* 无回显输入 */ 
      sr = getch(); 
      /* scanf("%d",&n); *//* 记录之前的位置,将用以比较移动是否有效 */ 
      for (j = 0; j < 16; j++) 
        b[j] = a[j]; 
      switch (sr) 
      { 
        /* 向上移动 */ 
      case 72: 
        /* 全部移到上边 */ 
        for (j = 0; j < 4; j++) 
        { 
          for (c = 0; c < 3; c++) 
          { 
            if (a[j] == 0) 
            { 
              a[j] = a[j + 4]; 
              a[j + 4] = 0; 
            } 
            if (a[j + 4] == 0) 
            { 
              a[j + 4] = a[j + 8]; 
              a[j + 8] = 0; 
            } 
            if (a[j + 8] == 0) 
            { 
              a[j + 8] = a[j + 12]; 
              a[j + 12] = 0; 
            } 
          } 
          /* 移到上面后的合并操作 */ 
          if (a[j] == a[j + 4]) 
          { 
            a[j] = a[j] * 2; 
            score = score + a[j]; 
            a[j + 4] = a[j + 8]; 
            a[j + 8] = a[j + 12]; 
            a[j + 12] = 0; 
            if (a[j + 4] == a[j + 8]) 
            { 
              a[j + 4] = 2 * a[j + 4]; 
              score = score + a[j + 4]; 
              a[j + 8] = 0; 
            } 
          } 
          else if (a[j + 4] == a[j + 8]) 
          { 
            a[j + 4] = 2 * a[j + 4]; 
            score = score + a[j + 4]; 
            a[j + 8] = a[j + 12]; 
            a[j + 12] = 0; 
          } 
          else if (a[j + 8] == a[j + 12]) 
          { 
            a[j + 8] = 2 * a[j + 8]; 
            score = score + a[j + 8]; 
            a[j + 12] = 0; 
          } 
          else; 
        } 
        break; 
        /* 向下移动 */ 
      case 80: 
        /* 全部移动到下面 */ 
        for (j = 12; j < 16; j++) 
        { 
          for (c = 0; c < 3; c++) 
          { 
            if (a[j] == 0) 
            { 
              a[j] = a[j - 4]; 
              a[j - 4] = 0; 
            } 
            if (a[j - 4] == 0) 
            { 
              a[j - 4] = a[j - 8]; 
              a[j - 8] = 0; 
            } 
            if (a[j - 8] == 0) 
            { 
              a[j - 8] = a[j - 12]; 
              a[j - 12] = 0; 
            } 
          } 
          /* 移到下面后的合并操作 */ 
          if (a[j] == a[j - 4]) 
          { 
            a[j] = a[j] * 2; 
            score = score + a[j]; 
            a[j - 4] = a[j - 8]; 
            a[j - 8] = a[j - 12]; 
            a[j - 12] = 0; 
            if (a[j - 4] == a[j - 8]) 
            { 
              a[j - 4] = 2 * a[j - 4]; 
              score = score + a[j - 4]; 
              a[j - 8] = 0; 
            } 
          } 
          else if (a[j - 4] == a[j - 8]) 
          { 
            a[j - 4] = 2 * a[j - 4]; 
            score = score + a[j - 4]; 
            a[j - 8] = a[j - 12]; 
            a[j - 12] = 0; 
          } 
          else if (a[j - 8] == a[j - 12]) 
          { 
            a[j - 8] = 2 * a[j - 8]; 
            score = score + a[j - 8]; 
            a[j - 12] = 0; 
          } 
          else; 
        } 
        break; 
        /* 向左移动 */ 
      case 75: 
        /* 全部移动到左面 */ 
        for (j = 0; j <= 12; j = j + 4) 
        { 
          for (c = 0; c < 3; c++) 
          { 
            if (a[j] == 0) 
            { 
              a[j] = a[j + 1]; 
              a[j + 1] = 0; 
            } 
            if (a[j + 1] == 0) 
            { 
              a[j + 1] = a[j + 2]; 
              a[j + 2] = 0; 
            } 
            if (a[j + 2] == 0) 
            { 
              a[j + 2] = a[j + 3]; 
              a[j + 3] = 0; 
            } 
          } 
          /* 移到左面后的合并操作 */ 
          if (a[j] == a[j + 1]) 
          { 
            a[j] = a[j] * 2; 
            score = score + a[j]; 
            a[j + 1] = a[j + 2]; 
            a[j + 2] = a[j + 3]; 
            a[j + 3] = 0; 
            if (a[j + 1] == a[j + 2]) 
            { 
              a[j + 1] = 2 * a[j + 1]; 
              score = score + a[j + 1]; 
              a[j + 2] = 0; 
            } 
          } 
          else if (a[j + 1] == a[j + 2]) 
          { 
            a[j + 1] = 2 * a[j + 1]; 
            score = score + a[j + 1]; 
            a[j + 2] = a[j + 3]; 
            a[j + 3] = 0; 
          } 
          else if (a[j + 2] == a[j + 3]) 
          { 
            a[j + 2] = 2 * a[j + 2]; 
            score = score + a[j + 2]; 
            a[j + 3] = 0; 
          } 
          else; 
        } 
        break; 
        /* 向右移动 */ 
      case 77: 
        /* 全部移动到右面 */ 
        for (j = 3; j <= 16; j = j + 4) 
        { 
          for (c = 0; c < 3; c++) 
          { 
            if (a[j] == 0) 
            { 
              a[j] = a[j - 1]; 
              a[j - 1] = 0; 
            } 
            if (a[j - 1] == 0) 
            { 
              a[j - 1] = a[j - 2]; 
              a[j - 2] = 0; 
            } 
            if (a[j - 2] == 0) 
            { 
              a[j - 2] = a[j - 3]; 
              a[j - 3] = 0; 
            } 
          } 
          /* 移到右面后的合并操作 */ 
          if (a[j] == a[j - 1]) 
          { 
            a[j] = a[j] * 2; 
            score = score + a[j]; 
            a[j - 1] = a[j - 2]; 
            a[j - 2] = a[j - 3]; 
            a[j - 3] = 0; 
            if (a[j - 1] == a[j - 2]) 
            { 
              a[j - 1] = 2 * a[j - 1]; 
              score = score + a[j - 1]; 
              a[j - 2] = 0; 
            } 
          } 
          else if (a[j - 1] == a[j - 2]) 
          { 
            a[j - 1] = 2 * a[j - 1]; 
            score = score + a[j - 1]; 
            a[j - 2] = a[j - 3]; 
            a[j - 3] = 0; 
          } 
          else if (a[j - 2] == a[j - 3]) 
          { 
            a[j - 2] = 2 * a[j - 2]; 
            score = score + a[j - 2]; 
            a[j - 3] = 0; 
          } 
          else; 
        } 
        break; 
        /* 重新开始 */ 
      case 'r': 
        for (j = 0; j < 16; j++) 
          a[j] = 0; 
        sj1 = rands(); 
        sj2 = rands(); 
        for (;;) 
        { 
          if (sj1 == sj2) 
          { 
            sj1 = rands(); 
            sj2 = rands(); 
          } 
          else 
            break; 
        } 
        a[sj1] = shu(); 
        a[sj2] = shu(); 
        flag = 0; 
        score = 0; 
        jx = 0; 
        break; 
        /* 退出 */ 
      case 'e': 
        shua(); 
        ct(32,19,15,3,207); 
        printf(" 游戏已退出!"); 
        textcolor(255); 
        gotoxy(0,0); 
        getch(); 
        return 0; 
        break; 
        /* 其他情况(刷新) */ 
      default: 
        ; 
        break; 
    }             
    /*windows下的系统清屏函数*/ 
    //system ("cls"); 
    /* 判断最高分 */ 
    if (score > scoremax) 
      scoremax = score; 
    /* 判断是否胜利(是否含有2048) */ 
    for (j = 0; j < 16; j++) 
    { 
      if (a[j] == 2048 && jx == 0) 
      { 
        /* 胜利时输出游戏结果 */ 
        /*显示*/ 
        prin(a,&score,&scoremax); 
        shua(); 
        ct(20,19,15,3,207); 
        printf(" 游戏胜利!"); 
        textcolor(159); 
        gotoxy(38,19); 
        printf(" Continue        "); 
        textcolor(239); 
        gotoxy(49,20); 
        printf("  Restart  "); 
        textcolor(175); 
        gotoxy(49,21); 
        printf("  Exit   "); 
        t=2; 
        an=75; 
        yx=0; 
        for(;;) 
        { 
          an=getch(); 
          switch(an) 
          { 
          case 72: 
            if(t==2) 
            { 
              t=3; 
         textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(38,21); 
         printf(" Exit          "); 
         textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(47,19); 
         printf("   Continue "); 
         textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(49,20); 
         printf("  Restart  "); 
            } 
            else if(t==1) 
            { 
              t=2; 
              textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(38,19); 
         printf(" Continue        "); 
         textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(47,20); 
         printf("   Restart  "); 
         textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(49,21); 
         printf("  Exit   "); 
            } 
            else 
            { 
              t=1; 
              textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(38,20); 
         printf(" Restart         "); 
         textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(47,21); 
         printf("   Exit   ");   
         textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(49,19); 
         printf("  Continue "); 
            } 
            break; 
          case 80: 
            if(t==2) 
            { 
              t=1; 
               textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(38,20); 
         printf(" Restart         "); 
         textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(47,19); 
         printf("   Continue "); 
         textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(49,21); 
         printf("  Exit   "); 
            } 
            else if(t==1) 
            { 
              t=3; 
              textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(38,21); 
         printf(" Exit          "); 
         textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(47,20); 
         printf("   Restart  "); 
         textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(49,19); 
         printf("  Continue "); 
            } 
            else 
            { 
            t=2; 
            textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(38,19); 
         printf(" Continue        "); 
         textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(47,21); 
         printf("   Exit   ");   
         textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(49,20); 
         printf("  Restart  "); 
            } 
            break; 
          case '\r': 
            yx=1; 
            break; 
          } 
          if(yx==1) 
          { 
            yx=0; 
            break; 
          } 
        } 
        shua(); 
        textcolor(255); 
        gotoxy(0,0); 
        /* 重新开始游戏 */ 
        if (t == 1) 
        { 
          shua(); 
          pd = 1; 
          x = 0; 
          for (j = 0; j < 16; j++) 
            a[j] = 0; 
          sj1 = rands(); 
          sj2 = rands(); 
          for (;;) 
          { 
            if (sj1 == sj2) 
            { 
              sj1 = rands(); 
              sj2 = rands(); 
            } 
            else 
              break; 
          } 
          a[sj1] = shu(); 
          a[sj2] = shu(); 
          for (j = 0; j < 16; j++) 
            b[j] = a[j]; 
          flag = 0; 
          score = 0; 
          break; 
        } 
        /* 继续游戏 */ 
        else if (t == 2) 
        { 
          jx = 1; 
          shua(); 
        } 
        else 
        { 
          shua(); 
          ct(32,19,15,3,207); 
          printf(" 游戏已退出!"); 
          textcolor(255); 
          gotoxy(0,0); 
          getch(); 
          return 0; 
        } 
      } 
    }             
    /* 决定是否产生新的数及其位置以及游戏是否失败 */ 
    /* flag,pd,x赋初值 */ 
    flag = 0; 
    pd = 1; 
    x = 0; 
    /* 判断移动后是否有空位:pd=0为有空位,pd=1为无空位 */ 
    for (j = 0; j < 16; j++) 
    { 
      if (a[j] == 0) 
        pd = 0; 
    } 
    /* 移动是否有效:x=1有效,x=0无效 */ 
    for (j = 0; j < 16; j++) 
    { 
      if (a[j] != b[j]) 
      { 
        x = 1; 
        break; 
      } 
    } 
    /* 移动有效时且有空位时产生新数 */ 
    if (pd == 0 && x == 1) 
    { 
      for (;;) 
      { 
        sj = rands(); 
        if (a[sj] == 0) 
        { 
          a[sj] = shu(); 
          break; 
        } 
        else; 
      } 
    } 
    /* 游戏是否失败的判定 */ 
    /* 移动后无空位 */ 
    else if (pd != 0) 
    { 
      /* 判断是否还有可合并的项 */ 
      for (j = 0; j < 16; j++) 
      { 
        if (j != 3 && j != 7 && j != 11 && j != 15 && a[j] == a[j + 1]) 
        { 
          flag = flag + 1; 
        } 
        if (j != 12 && j != 13 && j != 14 && j != 15 
          && a[j] == a[j + 4]) 
        { 
          flag = flag + 1; 
        } 
        if (j != 0 && j != 4 && j != 8 && j != 12 && a[j] == a[j - 1]) 
        { 
          flag = flag + 1; 
        } 
        if (j != 0 && j != 1 && j != 2 && j != 3 && a[j] == a[j - 4]) 
        { 
          flag = flag + 1; 
        } 
      }           
      /* 无空位且没有可合并的项时游戏失败 */ 
      if (flag == 0) 
      { 
        /* 失败时输出游戏结果 */ 
        /*显示*/ 
        prin(a,&score,&scoremax); 
        shua(); 
        ct(20,19,15,3,271); 
        printf(" 游戏结束!"); 
        textcolor(240); 
        gotoxy(38,19); 
        printf("Whether continue the game ?"); 
        gotoxy(44,21); 
        printf("@Yes   No"); 
        gotoxy(44,21); 
        t=1; 
        an=75; 
        yx=0; 
        for(;;) 
        { 
          an=getch(); 
          switch(an) 
          { 
          case 75: 
            if(t==1) 
            { 
              t=0; 
              gotoxy(53,21); 
              printf("@"); 
              gotoxy(44,21); 
              printf(" "); 
            } 
            else 
            { 
              t=1; 
              gotoxy(44,21); 
              printf("@"); 
              gotoxy(53,21); 
              printf(" "); 
            } 
            break; 
          case 77: 
            if(t==1) 
            { 
              t=0; 
              gotoxy(53,21); 
              printf("@"); 
              gotoxy(44,21); 
              printf(" "); 
 
            } 
            else 
            { 
              t=1; 
              gotoxy(44,21); 
              printf("@"); 
              gotoxy(53,21); 
              printf(" "); 
            } 
            break; 
          case '\r': 
            yx=1; 
            break; 
          } 
          if(yx==1) 
          { 
            yx=0; 
            break; 
          } 
        } 
        shua(); 
        textcolor(255); 
        gotoxy(0,0); 
        if (t == 1) 
        { 
          for (j = 0; j < 16; j++) 
            a[j] = 0; 
          sj=rands(); 
          sj1 = rands(); 
          sj2 = rands(); 
          for (;;) 
          { 
            if (sj1 ==sj2||sj1==sj||sj2==sj) 
            { 
              sj1 = rands(); 
              sj2 = rands(); 
            } 
            else 
              break; 
          } 
          a[sj]=shu(); 
          a[sj1] = shu(); 
          a[sj2] = shu(); 
          score = 0; 
          jx = 0; 
        } 
        else 
        { 
          shua(); 
          ct(32,19,15,3,207); 
          printf(" 游戏已退出!"); 
          textcolor(255); 
          gotoxy(0,0); 
          getch(); 
          return 0; 
        } 
      } 
    } 
    else; 
    /* 显示结果 */ 
    prin(a,&score,&scoremax); 
  } 
  return 0; 
} 
/*显示函数*/ 
void p(int*a,int i,int x,int y) 
{ 
  int x1=x,y1=y; 
  textcolor(col(a+i)); 
  x1=x+(i%4)*7; 
  y1=y+(i/4)*4; 
  gotoxy(x1,y1); 
  printf("   "); 
  gotoxy(x1,y1+1); 
  kg(a+i); 
  gotoxy(x1,y1+2); 
  printf("   "); 
  textcolor(240); 
} 
/*字体空格声明*/ 
void kg(int*a) 
{ 
  if(*a==0) 
    printf("   ",*a); 
  else if(*a<10) 
    printf(" %d ",*a); 
  else if(*a<100) 
    printf(" %d ",*a); 
  else if(*a<1000) 
    printf(" %d ",*a); 
  else if(*a<10000) 
    printf("%d ",*a); 
  else 
    printf("%d",*a); 
} 
/*单个颜色返回值*/ 
int col(int*a) 
{ 
int co=127; 
if(*(a)==0) 
co=127; 
else if(*(a)==2) 
co=143; 
else if(*(a)==4) 
co=191; 
else if(*(a)==8) 
co=175; 
else if(*(a)==16) 
co=239; 
else if(*(a)==32) 
co=223; 
else if(*(a)==64) 
co=207; 
else if(*(a)==128) 
co=95; 
else if(*(a)==256) 
co=159; 
else if(*(a)==512) 
co=63; 
else if(*(a)==1024) 
co=111; 
else if(*(a)==2048) 
co=79; 
else if(*(a)==4096) 
co=287; 
else  
co=271; 
return co; 
} 
/*标题字幕2048*/ 
void p2048(int x,int y) 
{ 
  int i; 
  textcolor(240); 
  gotoxy(0,0); 
  for(i=0;i<=500;i++) 
    { 
      printf("   "); 
    } 
  //2 
  textcolor(207); 
  gotoxy(x,y); 
  printf("     "); 
  gotoxy(x,y+1); 
  printf("     "); 
  gotoxy(x+7,y+2); 
  printf("  "); 
  gotoxy(x+7,y+3); 
  printf("  "); 
  gotoxy(x,y+4); 
  printf("     "); 
  gotoxy(x,y+5); 
  printf("     "); 
  gotoxy(x,y+6); 
  printf("  "); 
  gotoxy(x,y+7); 
  printf("  "); 
  gotoxy(x,y+8); 
  printf("     "); 
  gotoxy(x,y+9); 
  printf("     "); 
  //0 
  textcolor(239); 
  gotoxy(x+13,y); 
  printf("     "); 
  gotoxy(x+13,y+1); 
  printf("     "); 
  gotoxy(x+13,y+2); 
  printf("  "); 
  gotoxy(x+13+7,y+2); 
  printf("  "); 
  gotoxy(x+13,y+3); 
  printf("  "); 
  gotoxy(x+13+7,y+3); 
  printf("  "); 
  gotoxy(x+13,y+4); 
  printf("  "); 
  gotoxy(x+13+7,y+4); 
  printf("  "); 
  gotoxy(x+13,y+5); 
  printf("  "); 
  gotoxy(x+13+7,y+5); 
  printf("  "); 
  gotoxy(x+13,y+6); 
  printf("  "); 
  gotoxy(x+13+7,y+6); 
  printf("  "); 
  gotoxy(x+13,y+7); 
  printf("  "); 
  gotoxy(x+13+7,y+7); 
  printf("  "); 
  gotoxy(x+13,y+8); 
  printf("     "); 
  gotoxy(x+13,y+9); 
  printf("     "); 
  //4 
  textcolor(159); 
  gotoxy(x+26,y); 
  printf("  "); 
  gotoxy(x+26+7,y); 
  printf("  "); 
  gotoxy(x+26,y+1); 
  printf("  "); 
  gotoxy(x+26+7,y+1); 
  printf("  "); 
  gotoxy(x+26,y+2); 
  printf("  "); 
  gotoxy(x+26+7,y+2); 
  printf("  "); 
  gotoxy(x+26,y+3); 
  printf("  "); 
  gotoxy(x+26+7,y+3); 
  printf("  "); 
  gotoxy(x+26,y+4); 
  printf("     "); 
  gotoxy(x+26,y+5); 
  printf("     "); 
  gotoxy(x+26,y+6); 
  printf("  "); 
  gotoxy(x+26,y+7); 
  printf("  "); 
  gotoxy(x+26,y+8); 
  printf("  "); 
  gotoxy(x+26,y+9); 
  printf("  "); 
  //8 
  textcolor(175); 
  for(i=0;i<10;i++) 
  { 
  gotoxy(x+39,y+i); 
  printf("     "); 
  } 
  textcolor(240); 
  gotoxy(x+42,y+2); 
  printf("  "); 
  gotoxy(x+42,y+3); 
  printf("  "); 
  gotoxy(x+42,y+6); 
  printf("  "); 
  gotoxy(x+42,y+7); 
  printf("  "); 
  //长条 
   ct(35,15,20,1,240); 
   printf(" Game Sart"); 
   ct(35,18,20,1,240); 
   printf("How to play"); 
   printf("\n"); 
   printf("\n\n\n                              Made by Mr Yan"); 
   gotoxy(35-25,15); 
   textcolor(255); 
   gotoxy(0,0); 
} 
/*画长条函数*/ 
void ct(int x,int y,int l,int k,int c) 
{ 
  int i=0,j=0; 
  textcolor(c); 
  gotoxy(x,y); 
  for(i=0;i<k;i++) 
  { 
  gotoxy(x,y+i); 
  for(j=0;j<l;j++) 
  { 
  printf(" "); 
  } 
  } 
  gotoxy(x+1,y+k/2); 
} 
void shua(void) 
{ 
  gotoxy(0,18); 
  textcolor(255); 
  printf("                                  \n"); 
  printf("                                  \n"); 
  printf("                                  \n"); 
  printf("                                  \n"); 
  printf("                                  \n"); 
  printf("                                  \n"); 
  gotoxy(0,0); 
} 
/*胜利画面测试函数*/ 
int test(void) 
{ 
  int i,t,yx; 
  char an; 
    textcolor(240); 
    gotoxy(0,0); 
    for(i=0;i<=500;i++) 
    { 
      printf("   "); 
    } 
    gotoxy(0,0); 
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE); 
    CONSOLE_CURSOR_INFO cci; 
    GetConsoleCursorInfo(hOut,&cci); 
    cci.bVisible=FALSE; 
    SetConsoleCursorInfo(hOut,&cci); 
        //printf("\n游戏胜利!t\n重新开始游戏请按1\n继续游戏请按2\n退出请按其他键3\n");  2 1 3 
                                            
/* 
  2  继续选中 textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(38,19); 
         printf(" Continue        "); 
 
  2  继续平常 textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(49,19); 
         printf("  Continue "); 
 
  1 重新选中 textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(38,20); 
         printf(" Restart         "); 
 
  1  重新平常 textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(49,20); 
         printf("  Restart  "); 
 
  3  退出选中 textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(38,21); 
         printf(" Exit          "); 
 
  3  退出平常 textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(49,21); 
         printf("  Exit   "); 
     //   0000000000000000000000000 24    
    */ 
        shua(); 
        ct(20,19,15,3,207); 
        printf(" 游戏胜利!"); 
        textcolor(159); 
        gotoxy(38,19); 
        printf(" Continue        "); 
 
        textcolor(239); 
        gotoxy(49,20); 
        printf("  Restart  "); 
        textcolor(175); 
        gotoxy(49,21); 
        printf("  Exit   "); 
        t=2; 
        an=75; 
        yx=0; 
        for(;;) 
        { 
          an=getch(); 
          switch(an) 
          { 
          case 72: 
            if(t==2) 
            { 
              t=3; 
         textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(38,21); 
         printf(" Exit          "); 
         textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(47,19); 
         printf("   Continue "); 
         textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(49,20); 
         printf("  Restart  ");  
            } 
            else if(t==1) 
            { 
              t=2; 
              textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(38,19); 
         printf(" Continue        "); 
         textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(47,20); 
         printf("   Restart  "); 
         textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(49,21); 
         printf("  Exit   "); 
            } 
            else 
            { 
              t=1; 
              textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(38,20); 
         printf(" Restart         "); 
         textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(47,21); 
         printf("   Exit   ");   
         textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(49,19); 
         printf("  Continue "); 
            } 
            break; 
          case 80: 
            if(t==2) 
            { 
              t=1; 
               textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(38,20); 
         printf(" Restart         "); 
         textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(47,19); 
         printf("   Continue "); 
         textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(49,21); 
         printf("  Exit   "); 
            } 
            else if(t==1) 
            { 
              t=3; 
              textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(38,21); 
         printf(" Exit          "); 
         textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(47,20); 
         printf("   Restart  "); 
         textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(49,19); 
         printf("  Continue "); 
            } 
            else 
            { 
            t=2; 
            textcolor(240); 
         gotoxy(36,19); 
         printf("              "); 
         textcolor(159); 
         gotoxy(38,19); 
         printf(" Continue        "); 
         textcolor(240); 
         gotoxy(36,21); 
         printf("              "); 
         textcolor(175); 
         gotoxy(47,21); 
         printf("   Exit   ");   
         textcolor(240); 
         gotoxy(36,20); 
         printf("              "); 
         textcolor(239); 
         gotoxy(49,20); 
         printf("  Restart  "); 
            } 
            break; 
          case '\r': 
            yx=1; 
            break; 
          } 
          if(yx==1) 
          { 
            yx=0; 
            break; 
          } 
        } 
        shua(); 
        textcolor(255); 
        gotoxy(0,0); 
        textcolor(240); 
        if(t==2) 
          printf("Continue    "); 
        else if(t==1) 
          printf("Restart    "); 
        else 
          printf("Exit      "); 
        return 0; 
} 

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

上一篇:C语言中system()执行cmd命令打开关闭程序的方法

栏    目:C语言

下一篇:C++发邮件简单实例详解

本文标题:2048小游戏C语言实现代码

本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/796.html

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有