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

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

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

推箱子小游戲(基于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){//根據(jù)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(){//判斷游戲結(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){//改變輸出符號的顏色   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; }

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

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

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

廣告

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

h5響應式網(wǎng)站建設