二維陣列
自訂義函式
struct
switch & case
getch()
puts()
switch &Case
「C++ 黑框小遊戲」的本質,就是在文字主控台裡跑一個遊戲迴圈,不斷:讀輸入 → 更新狀態 → 重畫畫面,然後用字元把畫面「演」出來。
貪吃蛇、迷宮、打怪、射擊、RPG、小平台跳躍等
資料結構(狀態)
玩家座標:playerX, playerY
地圖:vector<string> map;
敵人位置、子彈列表、血量等等
輸入處理
讀鍵盤(WASD、空白鍵…)
遊戲邏輯更新
玩家移動
碰撞判定(撞牆、撞怪、撿道具)
分數、血量更新
畫面更新(Render)
把當前狀態轉成一個「字串地圖」
清畫面 → 再印出新的畫面
利用二維陣列字串繪製地圖,用一個字元圍出陣列的圍牆,然後剩下用全形空白字符儲存作為玩家移動的區域。
char play_map[r][c] = {
"######################",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"######################"
};示意圖,地圖的長寬一陣列大小決定
(當然想要用超過一個字元也可以只是更麻煩
char play_map[長][寬] = {
"######################",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# @ #",
"######################"
};選一個地方做玩家的初始位置
getch()//讀取任意鍵並回傳#include<conio.h>要導入的函式庫
void movement(direction){//沒用回傳值所以用void
switch (direction){
case 'w'://向上移一格
if (player.y>1)player.y--;//避免玩家超過圍牆
case 'a'://向左移一格
if (player.y>1)player.x--;
case 's'://向下移一格
if (player.x<r))player.y++;
case 'd'://向右移一格
if (player.x<c)player.x++;
}
通常市面上大部分pc端的遊戲都是按w,s前後移動,a,d左右
當然,你要寫何晨光的移動方式也可以
等
如接掉落物或射擊遊戲需要在最上面刷新單位並隨時間往下移