推箱子(c 控制台)

2021-08-21 08:52:26 字數 3065 閱讀 4973

//0空地 1牆 3目的地 4箱子 5人 7箱子在目的地 8人在目的地

int map[10][10] = ,,,

,,,,

,,,};void drawmap()

for (int i = 0; i < 10; i++)

for (int j = 0;j < 10; j++)

switch(map[i][j])

case 0:

cout<

break;

case 1:

cout<

break;

case 3:

cout<

break;

case 4:

cout<

break;

case 5:

cout<

break;

case 7:

cout<

break;

case 8:

cout<

break;

cout

int r, c;//人的下標

for (int i = 0; i < 10; i++)

for (int j = 0;j < 10; j++)

if(map[i][j] == 5 || map[i][j] == 8)

r = i;

c = j;

char ch = getch();  //獲取鍵盤

switch (ch) 

case'w':

case'w':

case 72: //上72 下80 左75 右77  r c人的位置  r-1 c人前面的位置  r-2 c人的前面的前面

if (map[r-1][c ] == 0 || map[r- 1][c] == 3)//人的前面是空地或目的地

map[r - 1][c] += 5;  //在人前面的位置+5

map[r][c] -= 5;      //人走了 人原來的位置-5

elseif (map[r- 1][c] == 4 || map[r - 1][c] == 7)  //人的前面是箱子

if (map[r- 2][c] == 0 || map[r - 2][c] == 3)  //箱子的前面

map[r - 2][c] += 4;

map[r - 1][c] += 1;//-4+5

map[r][c] -= 5;

break;

case's':

case's':

case 80:

if (map[r+ 1][c] == 0 || map[r + 1][c] == 3)//人的下面是空地或目的地

map[r + 1][c] += 5;  //在人下面的位置+5

map[r][c] -= 5;      //人走了 人原來的位置-5

elseif (map[r+ 1][c] == 4 || map[r + 1][c] == 7)  //人的下面是箱子

if (map[r+ 2][c] == 0 || map[r + 2][c] == 3)  //箱子的下面

map[r + 2][c] += 4;

map[r + 1][c] += 1;

map[r][c] -= 5;  //5 8

break;

case'a':

case'a':

case 75:

if(map[r][c - 1] == 0 || map[r][c - 1] == 3)//人的前面是空地

map[r][c - 1] += 5;  //在人前面的位置+5

map[r][c] -= 5;      //人走了 人原來的位置-5

elseif(map[r][c - 1] == 4 || map[r][c - 1] == 7) //人的前面是箱子

if(map[r][c - 2] == 0 || map[r][c - 2] == 3) //箱子的前面

map[r][c - 2] += 4;

map[r][c - 1] += 1;

map[r][c] -= 5;                 

break;

case'd':

case'd':

case 77:

if(map[r][c + 1] == 0 || map[r][c + 1] == 3)//人的前面是空地

map[r][c + 1] += 5;  //在人前面的位置+5

map[r][c] -= 5;      //人走了 人原來的位置-5

elseif(map[r][c + 1] == 4 || map[r][c + 1] == 7) //人的前面是箱子

if(map[r][c + 2] == 0 || map[r][c + 2] == 3) //箱子的前面

map[r][c + 2] += 4;

map[r][c + 1] += 1;

map[r][c] -= 5;  //8

break;

int countfbox(){

int c=0;

for (int i = 0;i < 10; i++){

for (int j = 0;j < 10; j++){

if(map[i][j]==7)

c++;

return c;

int main(){

while (countfbox()<4)

system("cls");  //清除螢幕

drawmap();

playgame();     

system("cls");

drawmap();

cout<

基於c 實現的推箱子遊戲(控制台程式)

基於c 實現的小遊戲推箱子,執行環境windows,vs下編譯,這個小遊戲很簡單實現,首先先自己想一下讓自己來玩這個遊戲需要什麼,1 遊戲介面 及地圖 由地圖聯想到我們可以設定遊戲的關數 本程式中我只寫了一關,可以實現靈活新增 2 介面需要什麼 遊戲所需要的元素 及箱子 box 人 people 目...

C 控制台遊戲 推箱子 實現人不能撞牆

思路 1 再定義兩個變數,用於存放玩家的座標的備份 值 2 在地圖模組中,把玩家的座標賦給玩家的備份,對當前座標進行備份。3 因為在地圖模組中,按下enter鍵移動後,玩家的座標會根據方向隨之改變。所以先檢測玩家是否撞牆 當玩家的值等於牆的值 把現在玩家的值賦值給之前備份的座標,實現玩家座標不在根據...

認識控制台 控制台控制代碼 附著到控制台 關閉控制台

1.附著到乙個控制台 乙個程序可以使用 attachconsole 函式來附著到乙個控制台上,乙個程序只能附著乙個控制台。乙個控制台可以有許多程序附著到它上面,呼叫 getconsoleprocesslist 函式可以得到附著到乙個控制台的列表。2.關閉乙個控制台 程序可以使用 freeconsol...