中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

DEVC++如果實(shí)現(xiàn)推箱子小游戲-創(chuàng)新互聯(lián)

DEV C++如果實(shí)現(xiàn)推箱子小游戲,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)提供高防主機(jī)、云服務(wù)器、香港服務(wù)器、資陽(yáng)服務(wù)器托管

推箱子小游戲(基于DEVC++)

#include<iostream>#include<stdio.h>#include<conio.h>#include <windows.h>using namespace std;void Game_Menu(HANDLE hout);void Game_description(HANDLE hout);void gotoxy(HANDLE hout, int x, int y);int DrawMap(HANDLE hout);void Move(HANDLE hout);int finish();void setmap(int n);void color(int m);bool flag = true;int pass = 1;#define R 10#define C 10#define framex 20#define framey 14 int map[R][C] = {0};//關(guān)卡1 int map1[R][C] = {{ 0,0,1,1,1,0,0,0 },{ 0,0,1,3,1,0,0,0 },{ 0,0,1,0,1,1,1,1 },{ 1,1,1,0,0,4,3,1 },{ 1,3,4,4,0,1,1,1 },{ 1,1,1,5,4,1,0,0 },{ 0,0,0,1,3,1,0,0 },{ 0,0,0,1,1,1,0,0 }};//地圖 2(關(guān)卡2)int map2[R][C]={{1,1,1,1,1,0,0,0,0,0},{1,5,0,0,1,0,0,0,0,0},{1,0,4,4,1,0,1,1,1,0},{1,0,4,0,1,0,1,3,1,0},{1,1,1,0,1,1,1,3,1,0},{0,1,1,0,0,0,0,3,1,0},{0,1,0,0,0,1,0,0,1,0},{0,1,0,0,0,1,1,1,1,0},{0,1,1,1,1,1,0,0,0,0}};//地圖 3(關(guān)卡3)int map3[R][C]={{ 0,0,0,1,1,1,1,1,1,1 },{ 0,0,1,1,0,0,1,0,5,1 },{ 0,0,1,0,0,0,1,0,0,1 },{ 0,0,1,4,0,4,0,4,0,1 },{ 0,0,1,0,4,1,1,0,0,1 },{ 1,1,1,0,4,0,1,0,1,1 },{ 1,3,3,3,3,3,0,0,1,0 },{ 1,1,1,1,1,1,1,1,1,0 },};void Game_Menu(HANDLE hout){//游戲開(kāi)始菜單   system("cls");  gotoxy(hout, framex, 1);  cout << "*******************";  gotoxy(hout, framex, 3);  cout << "   推箱子    ";  gotoxy(hout, framex, 5);  cout << "  按s或S開(kāi)始   ";  gotoxy(hout, framex, 7);  cout << "  按q或Q退出   ";  gotoxy(hout, framex, 9);  cout << "游戲前關(guān)閉中文輸入 ";  gotoxy(hout, framex, 11);  cout << "*******************";  _getch();};void Game_description(HANDLE hout){//操作提示   system("cls");  gotoxy(hout, framex, 1);  cout << "*****************************";  gotoxy(hout, framex, 3);  cout << "   按方向鍵上下左右移動(dòng)  ";  gotoxy(hout, framex, 5);  cout << " 所有箱子到達(dá)目的地游戲勝利 ";  gotoxy(hout, framex, 7);  cout << "     按q或Q退出     ";  gotoxy(hout, framex, 9);  cout << "*****************************";};void gotoxy(HANDLE hout, int x, int y){  COORD pos;  pos.X = x;  pos.Y = y;  SetConsoleCursorPosition(hout, pos);};void print(int i){//根據(jù)map值輸出相應(yīng)的圖形   switch(i){        case 0:          color(0x7);          cout << " "; //空地■★□?◇◆??¤          break;          case 1:          color(8);          cout << "■";//墻體          break;          case 3:          color(0xE);          cout << "◇";//目的地          break;          case 4:          color(4);          cout << "□";//箱子           break;          case 5:          color(3);          cout << "♀"; //人          break;          case 7:   //4+3  箱子到達(dá)目的地          color(6);            cout << "◆";          break;          case 8:   //5+3 人與目的地重合          color(3);          cout << "♀";          break;          default:          break;        }}int DrawMap(HANDLE hout){//新的關(guān)卡開(kāi)始時(shí)載入地圖   //HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);  gotoxy(hout, framex + C, framey - 3);  color(0xF);  cout << "第" << pass << "關(guān)";  //printf("第%d關(guān)", pass);   for(int i = 0; i < R; i++){    gotoxy(hout, framex, framey + i);    for(int j = 0; j < C; j++){            print(map[i][j]);    }  }  return 0;};void Move(HANDLE hout){//移動(dòng)小人   int x = 0, y = 0;  for(int i = 0; i < R; i++){    for(int j = 0; j < C; j++){      if(map[i][j] == 5 || map [i] [j] == 8){        x = i;        y = j;        break;      }    }  }  gotoxy(hout, framex, framey + R);  color(0xF);  printf("當(dāng)前位置:(%d, %d)", x, y);  int ch = _getch();    switch(ch){        case 'w':    case 'W':    case 72:      if(map[x - 1][y] == 0 || map[x - 1][y] == 3){        map[x][y] -= 5;        gotoxy(hout, framex + 2 * y, framey + x);        print(map[x][y]);        map[x - 1][y] += 5;        gotoxy(hout, framex + 2 * y, framey + x - 1);        print(map[x - 1][y]);      }      else if(map[x - 1][y] == 4 || map[x - 1][y] == 7){        if(map[x - 2][y] == 0 || map[x - 2][y] == 3){          map[x][y] -= 5;          gotoxy(hout, framex + 2 * y, framey + x);          print(map[x][y]);          map[x - 1][y] += 1;          gotoxy(hout, framex + 2 * y, framey + x - 1);          print(map[x - 1][y]);          map[x - 2][y] += 4;          gotoxy(hout, framex + 2 * y, framey + x - 2);          print(map[x - 2][y]);        }      }      break;        case 's':    case 'S':    case 80:      if(map[x + 1][y] == 0 || map[x + 1][y] == 3){        map[x][y] -= 5;        gotoxy(hout, framex + 2 * y, framey + x);        print(map[x][y]);        map[x + 1][y] += 5;        gotoxy(hout, framex + 2 * y, framey + x + 1);        print(map[x + 1][y]);      }      else if(map[x + 1][y] == 4 || map[x + 1][y] == 7){        if(map[x + 2][y] == 0 || map[x + 2][y] == 3){          map[x][y] -= 5;          gotoxy(hout, framex + 2 * y, framey + x);          print(map[x][y]);          map[x + 1][y] += 1;          gotoxy(hout, framex + 2 * y, framey + x + 1);          print(map[x + 1][y]);          map[x + 2][y] += 4;          gotoxy(hout, framex + 2 * y, framey + x + 2);          print(map[x + 2][y]);        }      }      break;        case 'a':    case 'A':    case 75:      if(map[x][y - 1] == 0 || map[x][y - 1] == 3){        map[x][y] -= 5;        gotoxy(hout, framex + 2 * y, framey + x);        print(map[x][y]);        map[x][y - 1] += 5;        gotoxy(hout, framex + 2 * y - 2, framey + x);        print(map[x][y - 1]);      }      else if(map[x][y - 1] == 4 || map[x][y - 1] == 7){        if(map[x][y - 2] == 0 || map[x][y - 2] == 3){          map[x][y] -= 5;          gotoxy(hout, framex + 2 * y, framey + x);          print(map[x][y]);          map[x][y - 1] += 1;          gotoxy(hout, framex + 2 * y - 2, framey + x);          print(map[x][y - 1]);          map[x][y - 2] += 4;          gotoxy(hout, framex + 2 * y - 4, framey + x);          print(map[x][y - 2]);        }      }      break;        case 'd':    case 'D':    case 77:      if(map[x][y + 1] == 0 || map[x][y + 1] == 3){        map[x][y] -= 5;        gotoxy(hout, framex + 2 * y, framey + x);        print(map[x][y]);        map[x][y + 1] += 5;        gotoxy(hout, framex + 2 * y + 2, framey + x);        print(map[x][y + 1]);      }      else if(map[x][y + 1] == 4 || map[x][y + 1] == 7){        if(map[x][y + 2] == 0 || map[x][y + 2] == 3){          map[x][y] -= 5;          gotoxy(hout, framex + 2 * y, framey + x);          print(map[x][y]);          map[x][y + 1] += 1;          gotoxy(hout, framex + 2 * y + 2, framey + x);          print(map[x][y + 1]);          map[x][y + 2] += 4;          gotoxy(hout, framex + 2 * y + 4, framey + x);          print(map[x][y + 2]);        }      }      break;    case 'q':    case 'Q':      flag = false;    default:      break;    }};int finish(){//判斷游戲結(jié)束   for(int i = 0; i < R; i++){    for(int j = 0; j < C; j++){      if(map[i][j] == 4)return 0;    }  }  return 1;};void setmap(int n){  switch(n){    case 1:      memcpy(map, map1, sizeof(map1));      break;    case 2:      memcpy(map, map2, sizeof(map2));      break;    case 3:      memcpy(map, map3, sizeof(map3));      break;  }};void color(int m){//改變輸出符號(hào)的顏色   HANDLE consolehend;  consolehend = GetStdHandle(STD_OUTPUT_HANDLE);  SetConsoleTextAttribute(consolehend, m); };int main(){  HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);    Game_Menu(hout);  char ch = getch();  setmap(pass);  Game_description(hout);  DrawMap(hout);  if(ch == 'q' || ch == 'Q'){    return 0;  }  while(flag){    Move(hout);    if(finish()){        DrawMap(hout);      gotoxy(hout, framex, framey + R);      cout << " 恭喜,成功過(guò)關(guān)!";      gotoxy(hout, framex, framey + R + 2);      cout << "重玩(R)";      ch = getch();      system("cls");      pass++;      if(ch == 'r' || ch == 'R')pass--;      if(pass > 3) {         gotoxy(hout, framex, framey);        cout << " 您已通過(guò)全部關(guān)卡!";        getch();        flag = false;      }       else{        setmap(pass);        Game_description(hout);        DrawMap(hout);      }    }  }  return 0; }

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。

分享名稱:DEVC++如果實(shí)現(xiàn)推箱子小游戲-創(chuàng)新互聯(lián)
文章URL:http://www.rwnh.cn/article18/dpesgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、電子商務(wù)標(biāo)簽優(yōu)化、網(wǎng)站排名企業(yè)網(wǎng)站制作、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
泰兴市| 离岛区| 喀喇沁旗| 上杭县| 东山县| 益阳市| 通渭县| 永仁县| 尼勒克县| 义马市| 和硕县| 冷水江市| 景洪市| 弥勒县| 尼玛县| 石家庄市| 喀喇沁旗| 宜昌市| 光山县| 东港市| 宁晋县| 郑州市| 雅江县| 荆门市| 政和县| 益阳市| 武城县| 新沂市| 胶州市| 六安市| 鹤山市| 伊春市| 东方市| 嘉鱼县| 郯城县| 繁昌县| 满城县| 江山市| 张家港市| 凤冈县| 泗洪县|