小遊戲就以飛機大戰為例吧
首先說一下我對遊戲的理解,遊戲主要就是由動畫、互動兩大部分組成,首先實現螢幕的自動重新整理而動畫則是由一幀一幀的組成。
所以要想在控制台中實現動畫,那就要實現螢幕的重新整理,就是把上一幀
的給清除掉,清除的方法有很多,在這裡就用最簡單的實現方法
system(「cls」);
while(1
)//上次的畫面清除
將整個程式的主要函式放在乙個死迴圈中,不停的呼叫結合清屏函式, 實現動畫的顯示顯示畫面也即是show()裡面的內容inputwithdata();
inputwithoutdata();
這兩個函式後序再新增內容
for
(int i =
0; i < heigh; i++
)//height 為定義的高度
} cout << endl;
}
以空格列印乙個介面,在列印空格時,當橫縱座標等於玩家座標時則列印* (這個就暫且當做玩家吧。。。)輸出之後是這樣的乙個介面
然後就是和使用者的互動了1.首先是實現使用者的移動
直接上**
void
inputwithdata()
void
movement()
}}
通過按 wasd 鍵來改變玩家座標的數值,進而實現飛機的移動。2.接下來就是玩家發射子彈了_getch()這個函式是乙個不回顯函式,當使用者按下某個字元時,
函式自動讀取,無需按回車。
_kbhit()這個是用來檢測使用者是否按下鍵盤的函式,當有敵機移動時,
沒有這個函式畫面將會暫停等待你的輸入了,顯然這不是我們想要的
空格鍵的ascii值是 32還是直接貼**發射子彈無非就是在上面移動**裡新增個空格觸發事件(也可直接看到下述優化後的子彈**)//將bulletx,bullety初始化為-1,-1 使在螢幕不可見
//當發射子彈時再執行下列**
case32:
bulletx = playposx;
bullety = playposy -1;
isshoot =
true
;break
;
這是show()函式,仔細觀察多了個上面標註的地方,用於子彈的顯示,現在只是將子彈放在玩家前面,而沒有發射移動,可以這樣實現for
(int i =
0; i < heigh; i++)/
else
if(i == bullety && j == bulletx)
///else
} cout << endl;
}
將bulletmove( ) inputwithoutdata()函式中,表示與使用者輸入無關的資料void
bulletmove()
}
下面是執行後的畫面
這樣玩家的基本功能就實現了,同樣你也可以自己新增其他元素,如多發子彈、雷射等高階**有人要看,我又回來了~// int bulletx[10], bullety[10]; 這裡將子彈改為10個陣列!!!
case32:
for(
int i =
0; i <
10; i++)}
break
;//然後是遍歷需要上公升的子彈
for(
int i =
0; i <
10; i++
)
這樣就可以連發了。//show顯示這裡就是遍歷子彈的顯示了 z表示遍歷子彈個數
for(
int z =
0; z <
10; z++
)}
接下來是敵人的顯示
.敵人的顯示和子彈差不多
下面是敵人的互動//定義敵人位置,建議定義為全域性變數便於在各個函式呼叫
int enemyposx, enemyposy;
//這個也是新增到show()函式裡
if(i == enemy.enemyposy && j == enemy.enemyposx)
這個是一直要執行的放在inputwithoutdata()中就行了。bool isenemydeath
//檢測與子彈的碰撞
for(
int i =
0; i <
10; i++)if
(enemy.enemyposx == player.bulletx[i]
&& enemy.enemyposy == player.bullety[i])if
(!isenemydeath)
//這個是當敵人移動沒有超出螢幕範圍
else
if(enemy.enemyposy < heigh)
//超出範圍
else
}
這裡是乙個敵人實現,如果想加入多個敵人的話,也可以用類似子彈的方法用個陣列來實現。
到這基本就結束了,這裡基本詳細給出了這個小遊戲製作的基本流程,如果能看懂,對著**能按自己的實現思路寫出來是最好的了。
如有錯誤和改進,還請不吝指出
控制台小遊戲
二 怪物的攻擊方法 三 戰鬥的方法 總結學習小組開發合作乙個控制台小遊戲,參考 伏魔錄 的遊戲專案需求,完成控制台小遊戲專案。我在小組中主要負責玩家的角色和怪物之間戰鬥的 我的想法是玩家有乙個手動的攻擊方法,而怪物是隨機兩種攻擊的方法,兩者都有單獨的傷害被返回出來,再用乙個戰鬥的方法呼叫兩者的攻擊方...
孤獨之旅控制台小遊戲
我們會發布更多的作品的!include include include include using namespace std int energy 500,go,money 50,pick,picked,pp float km 0.00 day 1,hour 0 int stone,wood,ca...
C 控制台專案小遊戲
判斷按鍵改變方向是否有效,向上的時候,向下操作失靈,向右時按向左或向右失靈57 5859 60 moveplayers 左右位置 或 6162 63bool firstplayerloses doesplayerlose firstplayerrow,firstplayercolumn 64bool...