如何寫個控制台小遊戲

2021-10-11 01:21:08 字數 3192 閱讀 5315

小遊戲就以飛機大戰為例吧

首先說一下我對遊戲的理解,遊戲主要就是由動畫、互動兩大部分組成,

而動畫則是由一幀一幀的組成。

所以要想在控制台中實現動畫,那就要實現螢幕的重新整理,就是把上一幀

的給清除掉,清除的方法有很多,在這裡就用最簡單的實現方法

system(「cls」);

首先實現螢幕的自動重新整理

while(1

)//上次的畫面清除

將整個程式的主要函式放在乙個死迴圈中,不停的呼叫結合清屏函式, 實現動畫的顯示

inputwithdata();

inputwithoutdata();

這兩個函式後序再新增內容

顯示畫面也即是show()裡面的內容

for

(int i =

0; i < heigh; i++

)//height 為定義的高度

} cout << endl;

}

以空格列印乙個介面,在列印空格時,當橫縱座標等於玩家座標時則列印* (這個就暫且當做玩家吧。。。)

輸出之後是這樣的乙個介面

然後就是和使用者的互動了1.首先是實現使用者的移動

直接上**

void

inputwithdata()

void

movement()

}}

通過按 wasd 鍵來改變玩家座標的數值,進而實現飛機的移動。

_getch()這個函式是乙個不回顯函式,當使用者按下某個字元時,

函式自動讀取,無需按回車。

_kbhit()這個是用來檢測使用者是否按下鍵盤的函式,當有敵機移動時,

沒有這個函式畫面將會暫停等待你的輸入了,顯然這不是我們想要的

2.接下來就是玩家發射子彈了

空格鍵的ascii值是 32

還是直接貼**

//將bulletx,bullety初始化為-1,-1 使在螢幕不可見

//當發射子彈時再執行下列**

case32:

bulletx = playposx;

bullety = playposy -1;

isshoot =

true

;break

;

發射子彈無非就是在上面移動**裡新增個空格觸發事件(也可直接看到下述優化後的子彈**)

for

(int i =

0; i < heigh; i++)/

else

if(i == bullety && j == bulletx)

///else

} cout << endl;

}

這是show()函式,仔細觀察多了個上面標註的地方,用於子彈的顯示,現在只是將子彈放在玩家前面,而沒有發射移動,可以這樣實現

void

bulletmove()

}

將bulletmove( ) inputwithoutdata()函式中,表示與使用者輸入無關的資料

下面是執行後的畫面

這樣玩家的基本功能就實現了,同樣你也可以自己新增其他元素,如多發子彈、雷射等高階**

有人要看,我又回來了~

//   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)

下面是敵人的互動

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

}

這個是一直要執行的放在inputwithoutdata()中就行了。

這裡是乙個敵人實現,如果想加入多個敵人的話,也可以用類似子彈的方法用個陣列來實現。

到這基本就結束了,這裡基本詳細給出了這個小遊戲製作的基本流程,如果能看懂,對著**能按自己的實現思路寫出來是最好的了。

如有錯誤和改進,還請不吝指出

控制台小遊戲

二 怪物的攻擊方法 三 戰鬥的方法 總結學習小組開發合作乙個控制台小遊戲,參考 伏魔錄 的遊戲專案需求,完成控制台小遊戲專案。我在小組中主要負責玩家的角色和怪物之間戰鬥的 我的想法是玩家有乙個手動的攻擊方法,而怪物是隨機兩種攻擊的方法,兩者都有單獨的傷害被返回出來,再用乙個戰鬥的方法呼叫兩者的攻擊方...

孤獨之旅控制台小遊戲

我們會發布更多的作品的!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...