---
# System prepended metadata

title: C語言使用Allegro函式庫之橫向卷軸跳越遊戲設計(SUMA)
tags: [C]

---

## 團隊
組長 柯柏宇  
組員 黃泓淯  
組員 盧奕睿  
組員 蘇浚緯  

## Demo

{%youtube WWUpW8o1mMk %}

## 前言

### 設計靈感

殭屍海嘯 zombie tsunami

![](https://hackmd.io/_uploads/HJkWFPH03.png)


### 原版遊戲內容

玩家將操控殭屍，透過吃掉人類將人類化為同伴，途中需跳躍躲避地洞、炸彈、汽車以及飛機。增加的同伴可以做為玩家的血量，持續行走的距離將做為分數，而得到的金幣則能夠購買道具。


### 我們的遊戲

玩家將操作主角，透過跳躍的方式避開洞窟以及障礙物，並在途中吸收同伴以及金幣，達到目標時間即可通關，而同伴將作為血量，金幣將作為分數。

### 相同之處

1. 吸收路人納為同伴，並以此為血量。
2. 能夠收集金幣
3. 有障礙物、坑洞等

### 不同之處

1. 角色能夠左右移動
2. 金幣作為分數依據
3. 有關卡分別
4. 有 BOSS 存在

## 主要場景說明

### 初始遊戲選單

![](https://hackmd.io/_uploads/ByoWNPS0n.png)
### 難度選單

![](https://hackmd.io/_uploads/HyPGNvBCh.png)

### 主要遊戲畫面
![](https://hackmd.io/_uploads/r1QXVDSA2.png)

### 角色與物件介紹
![](https://hackmd.io/_uploads/SysH4DrAn.png)

### 遊戲資訊欄說明
![](https://hackmd.io/_uploads/SyIwNPrRn.png)

### 關卡資訊說明

1. 第一關：有地洞及障礙物，起始血量為5。
2. 第二關：有地洞、障礙物、隕石及電磁學公式，速度加快，一旦碰到電磁學公式，則主角將有高機率不能再獲得同伴，起始血量為。
3. 第三關：有地洞、障礙物、電磁學公式及大魔王(BOSS)，速度加快，有一定機率無法獲得同伴，起始血量為10。(2 個角色其中個為干擾用，另一個會吃掉同伴，吃掉的當下會扣血量)

## 程式架構
在程式中，參數運算歸參數運算，算完後數據存至每個物件的struct，再由繪製畫面做統一繪製。將功能分開可以有助於開發時的效率及除錯，並減少衝突之發生。

資料架構
1. typedef struct MainDataStut：內包含遊戲模式、難度、進度、參數…等。
2. typedef struct AllegroObjStut：內包含所有allegro 相關物件(遊戲中會使用到的都在裡面，如：角色、地板、障礙物、聲音…等。
3. typedef struct ObjectStut：物件用，內含一指標指向下一物件(LinkedList 用法)，用於須產生不定數量物件或隨時會需要刪除某一特定物件時使用。
![](https://hackmd.io/_uploads/r1ghEDBCh.png)

## 分工

柯柏宇(組長)：隕石製作、角色移動以及跳動、BOSS 移動與碰撞、砲彈製作。  
黃泓淯：碰撞機制、金幣製作、待吃跟班(同伴)生成機制、障礙物製作、物件隨機生成機制。   
蘇浚緯：Linked list 物件模板、記分板製作、遊戲選單製作、角色動畫(含圖檔)、待吃跟班製作、遊戲整合、跳躍優化。  
盧奕睿：全部美術製作(背景、主角、障礙物、BOSS)、音效觸發、遊戲進度條機制、地板製作。  

## GitHub
https://github.com/JyunWei-Su/EEB512T4

## 可執行檔

https://drive.google.com/drive/folders/1iQSOy9bA6vZK1WVzkiRzMstW0pJQsZ_L



