Skip to content

"Evasion Era" 是一款動態、刺激的雙人避險遊戲。在這個遊戲中,玩家將扮演人或鬼的角色,並在一個充滿飛來飛去的石頭的場景中進行追逐。這是一款考驗玩家反應速度和策略的遊戲,帶給玩家無窮的樂趣。

Notifications You must be signed in to change notification settings

xxrjun/evasion-era

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Evasion Era - 1112 計算機概論 II Final Project

banner

學生: 109403019 鄒翔宇

Demo Video: https://youtu.be/gPuleGg4EC8

目錄

Usage

Prerequisite

Clone Project

git clone
cd evasion-era

Run

有兩種執行方式

Run in Terminal

mvn clean javafx:run

In IDE(like IntelliJ IDEA)

添加 VM options 才可執行,別忘記修改 path/to/javafx/sdk 成自己電腦的 JavaFX SDK 的路徑。

--module-path path/to/javafx/sdk --add-modules javafx.controls,javafx.fxml,javafx.media

遊戲簡介

文案修改自 ChatGPT-4

"Evasion Era" 是一款動態、刺激的雙人避險遊戲。在這個遊戲中,玩家將扮演人或鬼的角色,並在一個充滿飛來飛去的石頭的場景中進行追逐。人的目標是在時間內避開鬼和石頭,盡可能生存到最後;而鬼的目標則是在時間內抓到人。遊戲的挑戰性來自於石頭的數量和速度,以及鬼和人的移動速度。這是一款考驗玩家反應速度和策略的遊戲,帶給玩家無窮的樂趣。

專案樹狀結構

方便快速瀏覽專案的架構

├── README.md        # 專案說明文件
├── images           # 專案圖片
│   ├── banner.png
│   ├── end.png
│   ├── game-setup.png
│   ├── game.png
│   └── rule.png
├── mvnw             # maven wrapper
├── mvnw.cmd
├── pom.xml          # maven 設定檔
└── src              # 專案原始碼
    └── main
        ├── java
        │   └── com
        │       └── evasionera
        │           ├── EvasionEraApplication.java  # 主程式
        │           ├── controllers                 # 控制器
        │           │   ├── BaseController.java
        │           │   ├── EndViewController.java
        │           │   ├── GameController.java
        │           │   ├── GameSetupController.java
        │           │   ├── HomeController.java
        │           │   └── RuleController.java
        │           └── models                      # 模型
        │               ├── Ghost.java
        │               ├── Player.java
        │               └── Stone.java
        └── resources                               # 靜態資源
            ├── com
            │   └── evasionera                      # FXML 檔案
            │       ├── end-view.fxml
            │       ├── game-setup-view.fxml
            │       ├── game-view.fxml
            │       ├── home-view.fxml
            │       └── rule-view.fxml
            ├── css
            │   └── styles.css
            ├── images
            │   ├── background.jpg
            │   ├── ghost.png
            │   ├── player.png
            │   └── stone.png
            └── music
                └── dark_mystery_soundridemusic.mp3

遊戲流程

graph TB
  Home(("首頁 (home-view.fxml)")):::view
  GameSetup["遊戲設置畫面 (game-setup.fxml)"]:::view
  RuleView["遊戲規則 & 操作教學 (rule-view.fxml)"]:::view
  GameView["遊戲進行畫面 (game-view.fxml)"]:::view
  EndView["遊戲結束畫面 (end-view.fxml)"]:::view

  Home -->|開始遊戲| GameSetup:::action
  Home -->|遊戲規則 & 操作教學| RuleView:::action
  GameSetup -->|Back to Home| Home:::action
  RuleView -->|Back to Home| Home:::action
  GameSetup -->|設置完成| GameView:::action
  GameView -->|遊戲結束| EndView:::action
  EndView -->|Back to Home| Home:::action

  classDef action fill:#000,stroke:#333,stroke-width:2px;
Loading

首頁 (home-view.fxml)

於首頁可點選「遊戲規則 & 操作教學」按鈕或「開始遊戲」按鈕。

  • 按下「開始遊戲」按鈕後,進入遊戲開始畫面。
  • 按下「遊戲規則 & 操作教學」按鈕後,進入遊戲規則 & 操作教學畫面。

home

遊戲設置畫面 (game-setup.fxml)

可以點選 Back to Home 按鈕回到首頁。

  • 使用者輸入鬼和人的名稱、石頭的數量(石頭越多難度越高)
  • 設置石頭數量。預設為兩顆下限,為避免畫面過於繁雜上限最多 5 顆。

game-setup

遊戲規則 & 操作教學 (rule-view.fxml)

觀看完規則可以點選 Back to Home 按鈕回到首頁。

遊戲規則

  • 遊戲時限預設為 60 秒,可設置 10~120 秒。
  • 鬼在時限內抓到人,鬼為勝利者。反之若沒有在時限內抓到人,人為勝利者。
  • 使用者可以輸入石頭數量,預設為 2 顆下限,為避免畫面過於繁雜上限最多 10 顆。
  • 鬼若是被石頭砸到,3 秒後會於原地復活,復活期間會變半透明狀態。人若是碰到仍算被抓到。
  • 人若是被石頭砸到,則暈頭減速 0.45 秒,且不可使用特殊能力解除。

操作教學

  • 人: 鍵盤 WSAD 控制移動,空白鍵使用特殊能力(短暫加速 1.2 秒)。
    • 特殊能力冷卻時間 5 秒,也就是每 5 秒即可使用一次。
  • 鬼: 鍵盤上下左右鍵控制移動。鬼的速度略快於人。

rule

遊戲進行畫面 (game-view.fxml)

在充滿飛來飛去的石頭中進行追逐。

  • 用圖片代表鬼和人之角色,並於角色上方顯示名字,角色可以在畫面中任意移動,。
  • 鬼的移動速度比人快一點,但人有短暫提速的特殊能力。
  • 石頭的初始方向為隨機,增加遊戲的變化性和挑戰性。速度則會在一個速度範圍隨機移動。
  • 石頭撞到畫面邊界會加速反彈。
  • 左上角會顯示遊戲剩餘時間。

game

遊戲結束畫面 (end-view.fxml)

  • 顯示獲勝方、耗時。
  • 顯示回到開始畫面按鈕。

end

Todo

Features

  • 首頁
    • 遊戲規則 & 操作教學按鈕
    • 開始遊戲按鈕
  • 遊戲規則介紹、操作教學畫面
  • 遊戲設定畫面
    • 使用者輸入鬼和人的名稱
    • 設定遊戲時限
    • 選擇石頭數量
  • 遊戲進行畫面
    • 人與鬼可以按照鍵盤控制移動(WASD、上下左右)
    • 人可以按下空白鍵使用特殊能力(短暫加速 1.5 秒)
    • 彈來彈去的石頭,人碰到遊戲結束、鬼碰到需要花 3 秒鐘復活
  • 遊戲結束畫面
    • 顯示獲勝方、耗時
    • 回到開始畫面按鈕

Improvements & Bugs

  • feat: 人與鬼上方會顯示名稱
  • feat: 石頭反彈加速
  • feat: 遊戲過程介面可以再優化好看一點
  • bugs: 重新開始遊戲時,應該要清除上一局的資料
  • bugs: 在設置遊戲頁面時,遊戲時間已經在倒數
  • feat: 遊戲平衡,實際遊玩發現石頭可以直接把人砸死對於人過於劣勢,因此修改成石頭砸到人會減速 0.45 秒
  • feat: 添加背景音樂
  • bugs: 鬼連續碰到石頭有時會出現負面效果失效的狀況

開發工具

書面文件規劃

  • 封面: 主題、組員
  • 開發工具
  • 遊戲簡介、規則
  • DEMO
  • 困難的點
  • 未來改善的方向
  • 參考資料

參考資料

  1. JavaFX 官方文件: https://openjfx.io/javadoc/17/
  2. 流程圖撰寫工具: Mermaidv10.2.3 Live Editor
  3. 按鈕的 CSS 樣式: http://fxexperience.com/2011/12/styling-fx-buttons-with-css/
  4. Maven 套件網站: https://mvnrepository.com/
  5. 協作工具(主要用於修正錯誤、優化程式碼): https://chat.openai.com/
  6. 圖片:
  7. 背景音樂: https://fanlink.to/DarkMystery
  8. Bro Code - JavaFX Tutorial Playlist: https://youtu.be/_7OM-cMYWbQ?list=PLZPZq0r_RZOM-8vJA3NQFZB7JroDcMwev

About

"Evasion Era" 是一款動態、刺激的雙人避險遊戲。在這個遊戲中,玩家將扮演人或鬼的角色,並在一個充滿飛來飛去的石頭的場景中進行追逐。這是一款考驗玩家反應速度和策略的遊戲,帶給玩家無窮的樂趣。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published