童晶老師的遊戲開發課程作業 飛機大戰的實現

2022-06-11 12:42:14 字數 2802 閱讀 3087

此作業的要求參見[

作業要求

課程** [

專案名稱及分值

遊戲名稱

滿分分值

功能點提示

飛機大戰

50移動飛機、發射子彈、敵機移動、消滅敵機、被敵機撞擊、存檔讀檔

作業提交要求

除**及git以外,要求 wbs、psp,要求使用部落格報告完成的功能和截圖,講解

關鍵技術和**片斷。其中wbs要求包括不限於每個子任務的工時估算時間和實

際耗時,精確到分鐘。子任務可以包括分析、設計、**、測試、除錯、文件,

鼓勵精確到二級子任務如功能點等。

專案git位址

專案psp

型別任務

開始時間

結束時間

中斷時間(分鐘)

delta時間(分鐘)

分析技術原型、函式設計

12.07 8:07

12.07 9:23076

程式設計實現英雄機能按鍵移動

12.07 9:51

12.07 10:16025

程式設計實現子彈的移動

12.07 10:20

12.07 11:03043

程式設計實現敵機的移動

12.07 11:03

11.29 11:26023

程式設計實現子彈擊中敵機

12.07 11:30

11.29 12:18048

程式設計實現得分的變化

12.08 14:00

12.08 14:14014

程式設計實現多發子彈

12.08 14:14

12.08 15:38084

程式設計實現多個敵機

12.08 15:40

12.08 16:54074

程式設計英雄機與敵機碰撞

12.08 18:14

12.08 19:23069

部落格技術文件說明

12.08 20:30

12.08 22:11

0101

總耗時0

559min

專案wbs

任務型別

估計時間

實際用時

----

----

----

技術原型、函式設計

45min

76min

訊息迴圈

25min

15min

獲取按鍵訊息

30min

25min

物件移動

90min

56min

隨機數生成

10min

20min

碰撞檢測

90min

117min

邊界控制

30min

67min

關鍵技術

我機:繪製->按鍵控制移動->被敵機擊中,遊戲結束

子彈:繪製->按鍵控制子彈發射->子彈上移

敵機:繪製->敵機下移->子彈擊中,敵機消失

介面繪製

獲取按鍵訊息

物件移動

隨機數生成

碰撞檢測

邊界控制

void show()   //介面顯示

printf("\n");

}printf("得分:%d",score);

};

通過kbhit()函式獲取按鍵訊息,從而控制英雄級的移動及子彈的發射狀況。

void getuserinput() // 與使用者輸入有關的更新

if ((input == 'd') && position_y < width - 2)

if ((input == 'w') && position_x > 1)

if ((input == 's') && position_x < high - 2)

if (input == ' ')}};

更新敵機及子彈的位置,需要先將子彈原始位置的陣列值置為0,再改變子彈縱座標位置後,陣列值置為2。敵機位置的改變原理同子彈一致。

void updatebullet()   //更新子彈位置}}

}};

子彈與敵機的碰撞檢測做的較簡單,迴圈遍歷整個陣列,如果當前位置的陣列值為2,則表示此處為子彈,再判斷該位置的座標與敵機座標是否相同,相同則表示擊中敵機,分數加1。與此同時子彈與敵機均消失,然後生成新的敵機。下面給出的**是多台敵機的碰撞檢測情況。

同理,如果當前位置的陣列值為1,表示英雄機在此處,判斷敵機座標是否與英雄機座標相同,相同則遊戲結束。

void hitenemy() }}

if (game[i][j] == 1) //我機與敵機相撞}}}}}

採用了while迴圈來重繪頁面,為了控制頁面的重繪游標的閃動,引入了hidecursor()函式來隱藏游標。

//隱藏游標函式

void hidecursor()

;//第二個值為0表示隱藏游標

setconsolecursorinfo(getstdhandle(std_output_handle), &cursor_info);

}

最終效果

來自童晶老師的遊戲開發課程作業 貪吃蛇

此作業的要求 版本控制 其中getstdhandle 獲取指定的標準裝置的控制代碼,coord 表示乙個字元在控制台螢幕上的座標,setconsolecursorposition 設定控制台游標位置。通過找到小蛇的舊蛇頭座標以及下一步的方向確定新蛇頭的位置。通過判定新蛇頭的位置是否是食物的位置來決定...

童晶老師的遊戲開發課程作業 實時時鐘的實現

此作業的要求參見 作業要求 課程 專案名稱及分值 遊戲名稱 滿分分值 功能點提示 實時時鐘 20當前時刻 繪製指標 作業提交要求 除 及git以外,要求 wbs psp,要求使用部落格報告完成的功能和截圖,講解 關鍵技術和 片斷。其中wbs要求包括不限於每個子任務的工時估算時間和實 際耗時,精確到分...

最簡單的飛機遊戲 根據童老師寫出來的,emmmm

emmmm,說實在的一開始c語言很無聊,但是童老師的課很有意思,就跟著開始做點小遊戲。作為乙個測繪的孩子,正在試圖學好程式設計。這是乙個最簡單的飛機遊戲,可以控制飛機前有左右移動來消除靶子並且計分。靶子是偽隨機數生成的位置,試圖在同一行隨機移動,成功。試圖在乙個區域內隨機移動,效果不好。暫時不清楚為...