亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C語言實現2048游戲(ege圖形庫版)

2020-05-23 13:23:10
字體:
來源:轉載
供稿:網友

這幾天看到我們班上一個大神寫了一個2048出來,我自己也想嘗試一下,經過幾天自己嘗試努力下,自己終于寫出來了?,F在和大家分享一下,也希望能得到大神的指點。

實現的效果如圖

C語言,2048,游戲,ege

先來講一下我的思路吧

1.首先肯定是要一個4X4的二維數組來存放數字存放0、2、4……
2.游戲開始與過程中需要隨機出現2或者4,所以需要調用time.h這個庫
3.游戲開始時,假如當獲取字符為‘w'則先用循環判定這個數字的下方有無和它相等的數字。如無則跳過,如有相加。然后在判定是否可以向上移動

下面是我的代碼 

(我本來是還要寫一個撤回的函數 可惜寫出來卻不能運行。求大神指教)

#include<stdio.h>//#include<conio.h>#include<graphics.h>#include<Windows.h>#include<time.h>int _back[4][4] = {};void draw();//繪圖void play();void init();//初始化數字void _up();//向上移動void _down();//向下移動void _left();//像左移動void _right();//向右移動void add_number();//增加一個數字int a[4][4] = { 0 };int emtpy;//空格的數量void draw(){  int i, j;  for (i = 0; i < 4; i++)  {    for (j = 0; j < 4; j++)    {      _back[i][j] = a[i][j];      PIMAGE img;      img = newimage();      switch (a[i][j])      {      case 0:      {        getimage(img, "2048//0.png");        putimage(j * 180, i * 180, img);        break;      }      case 2:      {        getimage(img, "2048//2.png");        putimage(j * 180, i * 180, img);        break;      }      case 4:      {        getimage(img, "2048//4.png");        putimage(j * 180, i * 180, img);        break;      }      case 8:      {        getimage(img, "2048//8.png");        putimage(j * 180, i * 180, img);        break;      }      case 16:      {        getimage(img, "2048//16.png");        putimage(j * 180, i * 180, img);        break;      }      case 32:      {        getimage(img, "2048//32.png");        putimage(j * 180, i * 180, img);        break;      }      case 64:      {        getimage(img, "2048//64.png");        putimage(j * 180, i * 180, img);        break;      }      case 128:      {        getimage(img, "2048//128.png");        putimage(j * 180, i * 180, img);        break;      }      case 256:      {        getimage(img, "2048//256.png");        putimage(j * 180, i * 180, img);        break;      }      case 512:      {        getimage(img, "2048//512.png");        putimage(j * 180, i * 180, img);        break;      }      case 1024:      {        getimage(img, "2048//1024.png");        putimage(j * 180, i * 180, img);        break;      }      case 2048:      {        getimage(img, "2048//2048.png");        putimage(j * 180, i * 180, img);        break;      }      }    }  }}void init(){  int x, y;  srand(time(0));  x = rand() % 4;  y = rand() % 4;  a[x][y] = 2;  emtpy = 15;}void _up(){  int x, y, i;  for (y = 0; y < 4; ++y) {   // 從上向下合并相同的方塊     for (x = 0; x < 4; ++x) {      if (a[x][y] == 0)        ;      else {        for (i = x + 1; i < 4; ++i) {          if (a[i][y] == 0)            ;          else if (a[x][y] == a[i][y]) {            a[x][y] += a[i][y];            a[i][y] = 0;            ++emtpy;            x = i;            break;          }          else {            break;          }        }      }    }  }  for (y = 0; y < 4; ++y)  // 向上移動箱子    for (x = 0; x < 4; ++x)    {      if (a[x][y] == 0)        ;      else {        for (i = x; (i > 0) && (a[i - 1][y] == 0); --i) {          a[i - 1][y] = a[i][y];          a[i][y] = 0;        }      }    }}void _down() {  int x, y, i;  for (y = 0; y < 4; ++y) // 向下合并相同的方格     for (x = 3; x >= 0; --x) {      if (a[x][y] == 0)        ;      else {        for (i = x - 1; i >= 0; --i) {          if (a[i][y] == 0)            ;          else if (a[x][y] == a[i][y]) {            a[x][y] += a[i][y];            a[i][y] = 0;            ++emtpy;            x = i;            break;          }          else            break;        }      }    }  for (y = 0; y < 4; ++y) // 向下移動方格     for (x = 3; x >= 0; --x) {      if (a[x][y] == 0)        ;      else {        for (i = x; (i < 3) && (a[i + 1][y] == 0); ++i) {          a[i + 1][y] = a[i][y];          a[i][y] = 0;        }      }    }}void _left(){  int x, y, i;  for (x = 0; x < 4; ++x)  // 向左合并相同的方格     for (y = 0; y < 4; ++y) {      if (a[x][y] == 0)        ;      else {        for (i = y + 1; i < 4; ++i) {          if (a[x][i] == 0)            ;          else if (a[x][y] == a[x][i]) {            a[x][y] += a[x][i];            a[x][i] = 0;            emtpy++;            y = i;            break;          }          else            break;        }      }    }  for (x = 0; x < 4; ++x) // 向左移動方格     for (y = 0; y < 4; ++y) {      if (a[x][y] == 0)        ;      else {        for (i = y; (i > 0) && (a[x][i - 1] == 0); --i) {          a[x][i - 1] = a[x][i];          a[x][i] = 0;        }      }    }}void _right() {  int x, y, i;  for (x = 0; x < 4; ++x) // 向右合并相同的方格     for (y = 3; y >= 0; --y) {      if (a[x][y] == 0)        ;      else {        for (i = y - 1; i >= 0; --i) {          if (a[x][i] == 0)            ;          else if (a[x][y] == a[x][i]) {            a[x][y] += a[x][i];            a[x][i] = 0;            ++emtpy;            y = i;            break;          }          else            break;        }      }    }  for (x = 0; x < 4; ++x)  // 向右移動方格     for (y = 3; y >= 0; --y) {      if (a[x][y] == 0)        ;      else {        for (i = y; (i < 3) && (a[x][i + 1] == 0); ++i) {          a[x][i + 1] = a[x][i];          a[x][i] = 0;        }      }    }}void add_number(){  srand(time(0));  if (emtpy > 0)  {    int x, y, temp;    do    {      x = rand() % 4;      y = rand() % 4;    } while (a[x][y] != 0);    temp = rand();    int i = temp % 2;    if (i == 1)    {      a[x][y] = 2;      emtpy--;    }    else    {      a[x][y] = 4;      emtpy--;    }  }}void play(){  char c = getch();  switch (c)  {  case 'w':  case'W':  {    _up();    add_number();    draw();    break;  }  case 's':  case'S':  {    _down();    add_number();    draw();    break;  }  case 'a':  case'A':  {    _left();    add_number();    draw();    break;  }case 'd':  case'D':  {    _right();    add_number();    draw();    break;  }  case 'q':  case 'Q':  {    for (int i = 0; i < 4; i++)    {      for (int j = 0; j < 4; j++)      {        a[i][j] = _back[i][j];        draw();      }    }  }  }}int main(){  init();  int i, j;  initgraph(724, 724);//初始化  PIMAGE img;  img = newimage();  getimage(img, "2048/背景.jpg");  putimage(0, 0, img);  draw();  for (; is_run(); delay_fps(30))  {    for (int i = 0; i < 4; i++)    {      for (int j = 0; j < 4; j++)      {        _back[i][j] = a[i][j];      }    }    play();  }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美视频在线视频| 欧美成人黑人xx视频免费观看| 久久久久久久激情视频| 欧美久久精品一级黑人c片| 日韩亚洲精品视频| 国产精品国产自产拍高清av水多| 国产日韩精品视频| 久久艳片www.17c.com| 亚洲国产精品久久久久| 91久久在线视频| 国产精品久久久久久久久久尿| 57pao国产精品一区| 国产精品自在线| 日韩中文字幕在线播放| 亚洲福利视频网| 国产成人精品午夜| 日本成人激情视频| 久久99精品久久久久久噜噜| 欧美激情xxxx性bbbb| 欧美视频免费在线观看| 欧美性xxxxx极品| 高清欧美性猛交xxxx黑人猛交| 亚洲第一av网站| 日韩av综合中文字幕| 97在线观看视频| 欧美乱大交做爰xxxⅹ性3| 亚洲午夜女主播在线直播| 亚洲欧美制服另类日韩| 久久久亚洲影院你懂的| 97久久久久久| 国产噜噜噜噜噜久久久久久久久| 久久久久成人精品| 亚洲人在线视频| 亚洲男人天堂久| 日韩av免费观影| 午夜精品美女自拍福到在线| 在线看国产精品| 日韩在线视频免费观看高清中文| 日韩精品一区二区视频| 97香蕉超级碰碰久久免费软件| 国产福利成人在线| 97色在线视频| 欧美与欧洲交xxxx免费观看| 91色在线视频| 欧美在线一级视频| 日本久久久久亚洲中字幕| 久久精品视频播放| www.美女亚洲精品| 亚洲人免费视频| 国产激情综合五月久久| 国产亚洲精品综合一区91| 成人网在线视频| 欧美日韩人人澡狠狠躁视频| 日韩在线www| 92国产精品视频| 国产区精品在线观看| 久久久国产影院| 成人黄色在线观看| 91在线中文字幕| 成人免费视频网| 日韩高清电影免费观看完整版| 欧美日韩国产一区在线| 国产精品亚洲片夜色在线| 国产视频亚洲视频| 亚洲成av人片在线观看香蕉| 久久亚洲精品视频| 久久久久久中文字幕| 91精品综合久久久久久五月天| 国语自产精品视频在线看抢先版图片| 国产精品十八以下禁看| 久久影视电视剧凤归四时歌| 懂色av中文一区二区三区天美| 欧美黑人极品猛少妇色xxxxx| 亚洲成av人片在线观看香蕉| 91在线|亚洲| 成人中文字幕在线观看| 亚洲丝袜在线视频| 久久夜色精品国产亚洲aⅴ| 亚洲高清免费观看高清完整版| 精品中文字幕在线观看| 在线精品播放av| 日韩美女在线观看一区| 欧美有码在线观看视频| 日韩精品在线免费| 国产成人精品免高潮在线观看| 成人黄色生活片| 亚洲人免费视频| 欧美日韩在线免费观看| 亚洲精品国产免费| 精品网站999www| 国产亚洲精品成人av久久ww| 最好看的2019年中文视频| 久久久久国产精品一区| 亚洲午夜未删减在线观看| 欧美性少妇18aaaa视频| 亚洲午夜国产成人av电影男同| 最近2019好看的中文字幕免费| 欧美韩日一区二区| 国产97在线|亚洲| 色综合伊人色综合网站| 欧美激情一区二区久久久| 日韩欧美第一页| 亚洲18私人小影院| 中文字幕免费精品一区| 国产精品高潮呻吟久久av无限| 亚洲视频国产视频| 在线看片第一页欧美| 91禁外国网站| 精品久久久久久电影| 黄色成人av网| 亚洲成人av片| 精品国产乱码久久久久久天美| 91视频九色网站| 欧美日韩在线看| 国产精品高清网站| 麻豆乱码国产一区二区三区| 国产日韩精品在线观看| 伊人伊成久久人综合网站| 欧美性资源免费| 亚洲在线第一页| 亚洲成人激情在线观看| 欧美国产日韩一区二区| 亚洲男人天堂视频| 97色在线视频| 色综合久久精品亚洲国产| 亚洲国产精品人久久电影| 91精品国产电影| 日韩视频在线一区| 91av在线精品| 亚洲第一色中文字幕| 亚洲高清不卡av| 国产精品视频26uuu| 欧美激情在线狂野欧美精品| 亚洲第一区在线| 国产在线精品一区免费香蕉| 国产一区二区三区在线视频| 亚洲一区久久久| 亚洲国产精品字幕| 国产精品久久色| 91亚洲va在线va天堂va国| 亚洲国产精品久久91精品| 欧美性猛交xxxx| 91色在线视频| 久久人人爽人人爽人人片亚洲| 亚洲第一男人天堂| 欧美超级免费视 在线| 中文字幕精品www乱入免费视频| 最近2019好看的中文字幕免费| 国产精品99蜜臀久久不卡二区| 亚洲精品成a人在线观看| 欧美专区在线播放| 91久久在线视频| 午夜精品福利视频| 国产欧美日韩中文| 欧美成人国产va精品日本一级| 亚洲欧美自拍一区| 欧美午夜精品伦理| 亚洲人成五月天| 亚洲欧美国产日韩中文字幕| 日韩精品在线视频观看| 欧美性猛交xxxx乱大交| 中文字幕av一区中文字幕天堂| 亚洲成年人影院在线| 日韩欧美在线观看视频|