<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}]"}
    508 views