<style>
.reveal .slides
{
text-align: left;
}
h1, h2, h3, h4, h5, h6
{
text-transform: none !important;
}
</style>
## Computer Programming
### Final Project Proposal
hackMD好讀版
https://hackmd.io/1iutIQZ6QuqEHdyO_JMGyQ
(歡迎留言給建議)
---
## 基本資料:
----
小組編號:22
>組員名單:
黃則叡 電機二 B09202015
林昆佑 物理二 B09202055
劉雨恩 物理二 B09202068
遊戲名稱:Antgame
---
## 遊戲簡介:
----
### 遊戲發想:
身為人類,我們能非常容易地存活。但你可曾想過,地上的螞蟻該如何存活呢?它們該如何以嬌小的體型、狹窄的視野找尋食物呢?更不用說螞蟻的許多天敵,例如食蟻獸、穿山甲造成的蟻口危機!如果你是螞蟻該怎麼辦?讓你成為一隻螞蟻,試著度過種種危機吧!
----
### 遊戲劇情:
你將成為一隻螞蟻,並只能看到10x10的部分地圖,需要在廣大的地圖中探索,透過同伴留在地圖上的費洛蒙找尋糖果、把糖果搬回家。在途中,你要想辦法躲過食蟻獸與穿山甲的攻擊等種種危機!這趟旅程中,你會需要運用你絕佳方向感與記憶力,還有危機處理的應變能力,期待你能存活並將食物安全送回家!
----
### 得分方式與獲勝機制:
在限時時間內盡可能地將糖果帶回家中,帶回所有糖果即可完成遊戲。
----
### 特殊設計:
1. 糖果有兩種,可得分的(正常)糖果與會失去分數的(毒)糖果
2. 主角(玩家)螞蟻會散發藍色賀爾蒙記錄自己經過的位置。
3. NPC螞蟻會散發兩種賀爾蒙,第一是藍色賀爾蒙記錄他經過的位置;第二是發現糖果後,他會在經過的位置會留下紅色賀爾蒙來通知主角螞蟻。一段時間後,地上殘留的賀爾蒙會慢慢隨風飄逝,NPC螞蟻重新散發一般的藍色賀爾蒙。
4. 擊敗食蟻獸(餵他毒糖果讓他死亡)也可以得到糖果。
----
我們考慮不清楚指示玩家一些遊戲細節,例如糖果有好壞之分、給食蟻獸、穿山甲吃糖果會讓它死亡等等。希望帶給玩家冒險感,讓遊戲體驗充滿許多未知彩蛋。
也希望在升級版中,加入多人遊戲的功能,並且會有比較複雜的地形(河流等無法跨越的地形)、複雜的賀爾蒙(例如可以號召NPC螞蟻圍攻食蟻獸的賀爾蒙、號召螞蟻搭橋渡河)、螞蟻中有分職業或階級(工蟻等等),或是同地圖中會有不同的螞蟻族群,彼此有競爭或是掠食關係,增加更多莫名其妙又有趣的機制給玩家自行發掘。
---
## 功能設計與組員分工:
----
class : player_ant(PAnt)(林昆佑)
- 紀錄玩家螞蟻的位置、血量,以及背負的物品。(位置會用struct的結構)
- 控制螞蟻移動,並在路徑留下賀爾蒙hermone1(普通路徑)。
- 控制拿取/丟棄物品。
----
class : npc_ant (劉雨恩)
- 紀錄npc螞蟻的位置與血量。
- npc螞蟻隨機移動,並在路徑留下賀爾蒙hermone1(普通路徑)/2(發現糖果後)。
----
class : antEater (黃則叡)
- variable:
- pos,食蟻獸位置
- hp,食蟻獸血量
- function:
- ranadom_move : 讓antEater隨機移動
- chase_ant : 附近有螞蟻時會追著他跑
- die : 死亡後會有獎勵掉落
----
header file : candy (劉雨恩)
class candy
- bool:
- good_candy,可以得分的糖果
- bad_candy,會扣分的糖果
- beat_candy,是否是食蟻獸被打敗掉落的糖果
- is_carried,判斷糖果是否被拾起
- is_hide,顯示掉落的糖果
----
- variable:
- pos,糖果位置
- function:
- 跟著食蟻獸的糖果
- 跟著被玩家螞蟻撿起的糖果
- 顯示打敗食蟻獸掉落的糖果
----
header file : map (黃則叡)
- Class map_data : map陣列儲存的資料形式。
- 能夠儲存pointer 指向儲存在該位置的物件(糖果等),使螞蟻在該位置時可以直接對該區的物件操作。
- 能儲存該區有無賀爾蒙(會利用enum標示1. 無賀爾蒙 2. 未發現糖果的賀爾蒙 3. 已發現糖果的賀爾蒙)
----
- 一些function :
- assign_candy_pos : 生成地圖時會將糖果隨機分配位置
- delete_hermone : 將地圖該位置規零為無賀爾蒙
- delete_candy : 將地圖該位置之糖果刪除
- put_candy_on_map : 放置糖果在地圖上
- bool valid_move : 判斷該pos是否有效(例如碰到邊界、河流,決定角色可否真的移動)
----
header file : hermone (黃則叡)
會用queue的結構儲存每隻螞蟻經過的位子,並且每經過固定時間pop出位置資訊,並呼叫map裡的delete_hermone把該位置的賀爾蒙移除,達到賀爾蒙會隨時間漸漸淡去的效果。
----
計時 : (黃則叡)
遊戲開始後倒數計時,時間到時結算計分。並且會讓控制hermone的函數存取時間資料。
----
計分 : (劉雨恩)
在螢幕上顯示玩家所得分數與計算搬運糖果的分數。
---
## 目前進度:
----
### 已完成:
1. map的大部分function跟class。
2. player_ant(PAnt)的大部分functions以及variables。
3. 計分、candy大部分的function。
----
### 未完成:
1. SDL 顯示部分(遊戲美化、實際操作)
2. 物件之間function的傳遞。
3. 各部分程式的整合。
4. 計時
5. random move
----
### 問題:
1. 還在研究SDL的語法。
2. 還不知道要怎麼處理大地圖的部分範圍顯示問題。
(可能考慮將地圖完整顯示,但螞蟻就會很小隻,然後螞蟻為經過的地方會是黑的不會被顯示出來)
4. random move還不確定怎麼寫比較逼真。
5. 程式功能的整合。
---
{"metaMigratedAt":"2023-06-16T16:32:36.070Z","metaMigratedFrom":"YAML","title":"Computer Programming(Proposal)","breaks":true,"disqus":"hackmd","slideOptions":"{\"theme\":\"beige\",\"transition\":\"zoom\"}","contributors":"[{\"id\":\"c3efaecd-13aa-470e-ae14-08cee31de494\",\"add\":2929,\"del\":1241},{\"id\":\"d86ae6d1-0b63-42d7-bccb-a6d1347ae6af\",\"add\":2172,\"del\":1084},{\"id\":\"30c29652-0bb1-4aab-94a1-edc79acb551e\",\"add\":617,\"del\":387}]"}