亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

DEV C++如果實現推箱子小游戲

發布時間:2021-10-15 17:03:16 來源:億速云 閱讀:189 作者:柒染 欄目:編程語言

DEV C++如果實現推箱子小游戲,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

推箱子小游戲(基于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};//關卡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(關卡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(關卡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){//游戲開始菜單   system("cls");  gotoxy(hout, framex, 1);  cout << "*******************";  gotoxy(hout, framex, 3);  cout << "   推箱子    ";  gotoxy(hout, framex, 5);  cout << "  按s或S開始   ";  gotoxy(hout, framex, 7);  cout << "  按q或Q退出   ";  gotoxy(hout, framex, 9);  cout << "游戲前關閉中文輸入 ";  gotoxy(hout, framex, 11);  cout << "*******************";  _getch();};void Game_description(HANDLE hout){//操作提示   system("cls");  gotoxy(hout, framex, 1);  cout << "*****************************";  gotoxy(hout, framex, 3);  cout << "   按方向鍵上下左右移動  ";  gotoxy(hout, framex, 5);  cout << " 所有箱子到達目的地游戲勝利 ";  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){//根據map值輸出相應的圖形   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  箱子到達目的地          color(6);            cout << "◆";          break;          case 8:   //5+3 人與目的地重合          color(3);          cout << "♀";          break;          default:          break;        }}int DrawMap(HANDLE hout){//新的關卡開始時載入地圖   //HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);  gotoxy(hout, framex + C, framey - 3);  color(0xF);  cout << "第" << pass << "關";  //printf("第%d關", 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){//移動小人   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, %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(){//判斷游戲結束   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){//改變輸出符號的顏色   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 << " 恭喜,成功過關!";      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 << " 您已通過全部關卡!";        getch();        flag = false;      }       else{        setmap(pass);        Game_description(hout);        DrawMap(hout);      }    }  }  return 0; }

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

商都县| 怀化市| 尼木县| 上蔡县| 平江县| 安仁县| 资兴市| 宝应县| 长春市| 花莲市| 拉萨市| 南岸区| 芜湖县| 吴堡县| 普陀区| 民勤县| 南通市| 马关县| 武安市| 上饶市| 井研县| 黄陵县| 永顺县| 吴江市| 营山县| 皋兰县| 肥东县| 仙桃市| 池州市| 苍南县| 曲周县| 巴马| 吴忠市| 柞水县| 卓尼县| 荔波县| 拉萨市| 防城港市| 五华县| 兴隆县| 夏河县|