想要完成推箱子,首先我們應該明白它的原理,或者說是對於這個遊戲有著一定的理解,這也是我從五子棋之後所學習到的一種全新的理念,想要編寫出乙個東西就應該先了解它的具體內容,就像我們微控制器老師所說道的程式的編寫,首先應該給自己畫乙個流程圖,這樣才能夠根據流程圖將我們所需要的東西進行翻譯出來,具體化。
標頭檔案及具體巨集定義
#define _crt_secure_no_warnings
#include
#include
#include
#include
#define max_row 8
//定義地圖的行為8
#define max_col 8
//定義地圖的列為8
int boxs;
//統計其中所剩未完成箱子的個數
int x, y;
//用此座標來定位小人的位置
int map[max_row]
[max_col]=,
,,,,
,,};
/*** 0 表示空
* 1 表示牆
* 2 表示人
* 3 表示箱子
* 4 表示目的地(球)
* 5 表示已完成的箱子
*/
具體流程和主函式
列印選單
選擇遊戲關卡
玩家開始移動
判斷遊戲是否成功
有了五子棋的經驗,我將主函式盡可能地寫的簡潔一些
int
main()
}system
("pause");
return0;
}
接下來就是每個函式的解析和具體的函式了
*
*選單函式*
* 是乙個小專案的主介面也是大家控制台最開始顯示的所以對於這個介面一般還是設計的好一些
void
menuui()
*
*選擇函式*
*int
choicestart
(int i)
if(i ==0)
else
}return0;
}
*
*搜圖函式*
* 記錄人所在的位置,並且計算地圖之中的箱子總數
void
initdata()
if(map[i]
[j]==3)
}}}
*
*列印地圖函式*
*void
drawmap()
}printf
("\n");
}}
移動函式
*
*向上移動函式*
*void
moveup()
int ux = x;
int uy = y -1;
if(map[uy]
[ux]==1
||map[uy]
[ux]==5
)if(map[uy]
[ux]==3
)if(map[uy -1]
[ux]==4
)else
} map[y]
[x]=0;
//將人的位置置換為0
map[uy]
[ux]=2
;//將原箱子的位置置換為人
y = uy;
//將人的位置進行改變
}
*
*向下移動函式*
*void
movedown()
int dx = x;
int dy = y +1;
if(map[dy]
[dx]==1
|| map[dy]
[dx]==5
)if(map[dy]
[dx]==3
)if(map[dy +1]
[dx]==4
)else
} map[y]
[x]=0;
//將人的位置置換為0
map[dy]
[dx]=2
;//將原箱子的位置置換為人
y = dy;
//將人的位置進行改變
}
*
*向左移動函式*
*void
moveleft()
//左邊是牆的話,則不動;
int lx = x -1;
int ly = y;
if(map[ly]
[lx]==1
|| map[ly]
[lx]==5
)if(map[ly]
[lx]==3
)if(map[ly]
[lx -1]
==4)else
} map[y]
[x]=0;
//將人的位置置換為0
map[ly]
[lx]=2
;//將原箱子的位置置換為人
x = lx;
//將人的位置進行改變
}
*
*向右移動函式*
*void
moveright()
int rx = x +1;
int ry = y;
if(map[ry]
[rx]==1
|| map[ry]
[rx]==5
)if(map[ry]
[rx]==3
)if(map[ry]
[rx +1]
==4)else
} map[y]
[x]=0;
//將人的位置置換為0
map[ry]
[rx]=2
;//將原箱子的位置置換為人
x = rx;
//將人的位置進行改變
}
遊戲函式
int
game()
direction =
getch()
;switch
(direction)
}printf
("您已通關遊戲!\n");
return
0;
所有的程式到這裡也就完結了,其實對於這個推箱子遊戲來說挺簡單的,只要我們能夠理解到在移動人的時候相對應的那些箱子的轉換就能夠很好的把握到相關的**,最為主要的是一定要仔細,並且將自己所存在的思維漏洞或者說是死角記錄下來,總結成一些學習筆記,這樣也能夠更好的幫助我們應對之後所出現的更多的問題。
源**在這裡哦推箱子遊戲程式github鏈結
看看別人是怎麼賺錢的
開惜,落仍惜 zhq 757815228 09 57 42 哈哈 家尚電器 390624474 09 57 46 客賺錢不好賺個 開惜,落仍惜 zhq 757815228 09 58 07 恩 就是說麼 家尚電器 390624474 09 58 15 怎麼樣賺多呢 開惜,落仍惜 zhq 757815...
自己用C 寫的乙個推箱子
自己寫了乙個推箱子,不過目前只有兩關,打圖太難了orz。絕不是因為我太懶 include include includeusing namespace std 為到位 為箱子 x為邊界 為人物 o為目標點 int step 關卡 int x,y 人物座標 char m 移動 bool flag fa...
用C寫乙個簡單的推箱子遊戲(二)
tuidong 函式是用來判斷遊戲人物前方情況的函式,是推箱子遊戲中非常重要的乙個函式,下面從它開始繼續介紹推箱子的小程式怎麼寫 e tuidong 函式 判斷移動人物的前方的情況 1 第一部分 1 int count,caw 0 行和列 2int i,j,tui 3for i 0 i 9 i 41...