{"id":16556694,"url":"https://github.com/xxrjun/evasion-era","last_synced_at":"2026-04-15T22:34:54.196Z","repository":{"id":175382942,"uuid":"643717265","full_name":"xxrjun/evasion-era","owner":"xxrjun","description":"\"Evasion Era\" 是一款動態、刺激的雙人避險遊戲。在這個遊戲中，玩家將扮演人或鬼的角色，並在一個充滿飛來飛去的石頭的場景中進行追逐。這是一款考驗玩家反應速度和策略的遊戲，帶給玩家無窮的樂趣。","archived":false,"fork":false,"pushed_at":"2023-06-16T12:51:36.000Z","size":26561,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-04T23:28:25.857Z","etag":null,"topics":["fxml","game","ghost-catcher","java","javafx","maven","ncu","scenebuilder"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xxrjun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-22T02:23:37.000Z","updated_at":"2025-01-26T03:32:38.000Z","dependencies_parsed_at":"2023-07-11T00:45:21.571Z","dependency_job_id":null,"html_url":"https://github.com/xxrjun/evasion-era","commit_stats":null,"previous_names":["xxrjun/evasion-era"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/xxrjun/evasion-era","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxrjun%2Fevasion-era","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxrjun%2Fevasion-era/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxrjun%2Fevasion-era/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxrjun%2Fevasion-era/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xxrjun","download_url":"https://codeload.github.com/xxrjun/evasion-era/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxrjun%2Fevasion-era/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31863494,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fxml","game","ghost-catcher","java","javafx","maven","ncu","scenebuilder"],"created_at":"2024-10-11T20:05:30.573Z","updated_at":"2026-04-15T22:34:54.176Z","avatar_url":"https://github.com/xxrjun.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Evasion Era - 1112 計算機概論 II Final Project\n\n![banner](images/banner.png)\n\n學生: 109403019 鄒翔宇\n\nDemo Video: https://youtu.be/gPuleGg4EC8\n\n## 目錄\n\n- [Evasion Era - 1112 計算機概論 II Final Project](#evasion-era---1112-計算機概論-ii-final-project)\n  - [目錄](#目錄)\n  - [Usage](#usage)\n    - [Prerequisite](#prerequisite)\n    - [Clone Project](#clone-project)\n    - [Run](#run)\n      - [Run in Terminal](#run-in-terminal)\n      - [In IDE(like IntelliJ IDEA)](#in-idelike-intellij-idea)\n  - [遊戲簡介](#遊戲簡介)\n    - [專案樹狀結構](#專案樹狀結構)\n  - [遊戲流程](#遊戲流程)\n    - [首頁 (`home-view.fxml`)](#首頁-home-viewfxml)\n    - [遊戲設置畫面 (`game-setup.fxml`)](#遊戲設置畫面-game-setupfxml)\n    - [遊戲規則 \\\u0026 操作教學 (`rule-view.fxml`)](#遊戲規則--操作教學-rule-viewfxml)\n    - [遊戲進行畫面 (`game-view.fxml`)](#遊戲進行畫面-game-viewfxml)\n    - [遊戲結束畫面 (`end-view.fxml`)](#遊戲結束畫面-end-viewfxml)\n  - [Todo](#todo)\n  - [開發工具](#開發工具)\n  - [書面文件規劃](#書面文件規劃)\n  - [參考資料](#參考資料)\n\n## Usage\n\n### Prerequisite\n\n- [Java 17.0.7 LTS](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) (or above)\n- [JavaFX 17.0.7 LTS](https://gluonhq.com/products/javafx/) (or above)\n- [Maven 3.9.2](https://maven.apache.org/download.cgi) (or above)\n- (Optional for dev) [Scene Builder 19.0.0](https://gluonhq.com/products/scene-builder/#download) (or above)\n\n### Clone Project\n\n```bash\ngit clone\ncd evasion-era\n```\n\n### Run\n\n\u003e 有兩種執行方式\n\n#### Run in Terminal\n\n```bash\nmvn clean javafx:run\n```\n\n\u003c!-- ### 打包成可執行檔\n\n1. Build\n\n   ```bash\n\n   mvn clean package\n\n   ```\n\n2. 創建 JavaFX 運行時映像\n\n   使用 jlink 打包成 runtime 後執行，記得修改 `/path/to/javafx/sdk` 為自己 SDK 的路徑。\n\n   jlink --module-path \"D:\\javafx-sdk-17.0.7\\lib\" --add-modules javafx.controls,javafx.fxml,javafx.media --output javafx-runtime\n\n   ```bash\n\n    jlink --module-path /path/to/javafx/sdk --add-modules javafx.controls,javafx.fxml,javafx.media --output javafx-runtime\n\n   ```\n\n3. 執行\n\n   ```bash\n\n   javafx-runtime/bin/java -jar target/evasion-era-1.0.jar\n\n   ``` --\u003e\n\n#### In IDE(like IntelliJ IDEA)\n\n添加 VM options 才可執行，別忘記修改 `path/to/javafx/sdk` 成自己電腦的 JavaFX SDK 的路徑。\n\n```bash\n--module-path path/to/javafx/sdk --add-modules javafx.controls,javafx.fxml,javafx.media\n```\n\n## 遊戲簡介\n\n\u003e 文案修改自 ChatGPT-4\n\n**\"Evasion Era\"**\n是一款動態、刺激的雙人避險遊戲。在這個遊戲中，玩家將扮演人或鬼的角色，並在一個充滿飛來飛去的石頭的場景中進行追逐。人的目標是在時間內避開鬼和石頭，盡可能生存到最後；而鬼的目標則是在時間內抓到人。遊戲的挑戰性來自於石頭的數量和速度，以及鬼和人的移動速度。這是一款考驗玩家反應速度和策略的遊戲，帶給玩家無窮的樂趣。\n\n### 專案樹狀結構\n\n\u003e 方便快速瀏覽專案的架構\n\n```bash\n├── README.md        # 專案說明文件\n├── images           # 專案圖片\n│   ├── banner.png\n│   ├── end.png\n│   ├── game-setup.png\n│   ├── game.png\n│   └── rule.png\n├── mvnw             # maven wrapper\n├── mvnw.cmd\n├── pom.xml          # maven 設定檔\n└── src              # 專案原始碼\n    └── main\n        ├── java\n        │   └── com\n        │       └── evasionera\n        │           ├── EvasionEraApplication.java  # 主程式\n        │           ├── controllers                 # 控制器\n        │           │   ├── BaseController.java\n        │           │   ├── EndViewController.java\n        │           │   ├── GameController.java\n        │           │   ├── GameSetupController.java\n        │           │   ├── HomeController.java\n        │           │   └── RuleController.java\n        │           └── models                      # 模型\n        │               ├── Ghost.java\n        │               ├── Player.java\n        │               └── Stone.java\n        └── resources                               # 靜態資源\n            ├── com\n            │   └── evasionera                      # FXML 檔案\n            │       ├── end-view.fxml\n            │       ├── game-setup-view.fxml\n            │       ├── game-view.fxml\n            │       ├── home-view.fxml\n            │       └── rule-view.fxml\n            ├── css\n            │   └── styles.css\n            ├── images\n            │   ├── background.jpg\n            │   ├── ghost.png\n            │   ├── player.png\n            │   └── stone.png\n            └── music\n                └── dark_mystery_soundridemusic.mp3\n```\n\n## 遊戲流程\n\n```mermaid\ngraph TB\n  Home((\"首頁 (home-view.fxml)\")):::view\n  GameSetup[\"遊戲設置畫面 (game-setup.fxml)\"]:::view\n  RuleView[\"遊戲規則 \u0026 操作教學 (rule-view.fxml)\"]:::view\n  GameView[\"遊戲進行畫面 (game-view.fxml)\"]:::view\n  EndView[\"遊戲結束畫面 (end-view.fxml)\"]:::view\n\n  Home --\u003e|開始遊戲| GameSetup:::action\n  Home --\u003e|遊戲規則 \u0026 操作教學| RuleView:::action\n  GameSetup --\u003e|Back to Home| Home:::action\n  RuleView --\u003e|Back to Home| Home:::action\n  GameSetup --\u003e|設置完成| GameView:::action\n  GameView --\u003e|遊戲結束| EndView:::action\n  EndView --\u003e|Back to Home| Home:::action\n\n  classDef action fill:#000,stroke:#333,stroke-width:2px;\n```\n\n### 首頁 (`home-view.fxml`)\n\n\u003e 於首頁可點選「遊戲規則 \u0026 操作教學」按鈕或「開始遊戲」按鈕。\n\n- 按下「開始遊戲」按鈕後，進入遊戲開始畫面。\n- 按下「遊戲規則 \u0026 操作教學」按鈕後，進入遊戲規則 \u0026 操作教學畫面。\n\n![home](images/banner.png)\n\n### 遊戲設置畫面 (`game-setup.fxml`)\n\n\u003e 可以點選 Back to Home 按鈕回到首頁。\n\n- 使用者輸入鬼和人的名稱、石頭的數量（石頭越多難度越高）\n- 設置石頭數量。預設為兩顆下限，為避免畫面過於繁雜上限最多 5 顆。\n\n![game-setup](images/game-setup.png)\n\n### 遊戲規則 \u0026 操作教學 (`rule-view.fxml`)\n\n\u003e 觀看完規則可以點選 Back to Home 按鈕回到首頁。\n\n**遊戲規則**\n\n- 遊戲時限預設為 60 秒，可設置 10~120 秒。\n- 鬼在時限內抓到人，鬼為勝利者。反之若沒有在時限內抓到人，人為勝利者。\n- 使用者可以輸入石頭數量，預設為 2 顆下限，為避免畫面過於繁雜上限最多 10 顆。\n- 鬼若是被石頭砸到，3 秒後會於原地復活，復活期間會變半透明狀態。人若是碰到仍算被抓到。\n- 人若是被石頭砸到，則暈頭減速 0.45 秒，且不可使用特殊能力解除。\n\n**操作教學**\n\n- 人: 鍵盤 WSAD 控制移動，空白鍵使用特殊能力(短暫加速 1.2 秒)。\n  - 特殊能力冷卻時間 5 秒，也就是每 5 秒即可使用一次。\n- 鬼: 鍵盤上下左右鍵控制移動。鬼的速度略快於人。\n\n![rule](images/rule.png)\n\n### 遊戲進行畫面 (`game-view.fxml`)\n\n\u003e 在充滿飛來飛去的石頭中進行追逐。\n\n- 用圖片代表鬼和人之角色，並於角色上方顯示名字，角色可以在畫面中任意移動，。\n- 鬼的移動速度比人快一點，但人有短暫提速的特殊能力。\n- 石頭的初始方向為隨機，增加遊戲的變化性和挑戰性。速度則會在一個速度範圍隨機移動。\n- 石頭撞到畫面邊界會加速反彈。\n- 左上角會顯示遊戲剩餘時間。\n\n![game](images/game.png)\n\n### 遊戲結束畫面 (`end-view.fxml`)\n\n- 顯示獲勝方、耗時。\n- 顯示回到開始畫面按鈕。\n\n![end](images/end.png)\n\n## Todo\n\nFeatures\n\n- [x] 首頁\n  - [x] 遊戲規則 \u0026 操作教學按鈕\n  - [x] 開始遊戲按鈕\n- [x] 遊戲規則介紹、操作教學畫面\n- [x] 遊戲設定畫面\n  - [x] 使用者輸入鬼和人的名稱\n  - [x] 設定遊戲時限\n  - [x] 選擇石頭數量\n- [x] 遊戲進行畫面\n  - [x] 人與鬼可以按照鍵盤控制移動(WASD、上下左右)\n  - [x] 人可以按下空白鍵使用特殊能力(短暫加速 1.5 秒)\n  - [x] 彈來彈去的石頭，人碰到遊戲結束、鬼碰到需要花 3 秒鐘復活\n- [x] 遊戲結束畫面\n  - [x] 顯示獲勝方、耗時\n  - [x] 回到開始畫面按鈕\n\nImprovements \u0026 Bugs\n\n- [x] feat: 人與鬼上方會顯示名稱\n- [x] feat: 石頭反彈加速\n- [x] feat: 遊戲過程介面可以再優化好看一點\n- [x] bugs: 重新開始遊戲時，應該要清除上一局的資料\n- [x] bugs: 在設置遊戲頁面時，遊戲時間已經在倒數\n- [x] feat: 遊戲平衡，實際遊玩發現石頭可以直接把人砸死對於人過於劣勢，因此修改成石頭砸到人會減速 0.45 秒\n- [x] feat: 添加背景音樂\n- [ ] bugs: 鬼連續碰到石頭有時會出現負面效果失效的狀況\n\n## 開發工具\n\n- [IntelliJ IDEA](https://www.jetbrains.com/idea/)\n- [JavaFX](https://openjfx.io/)\n- [Scene Builder](https://gluonhq.com/products/scene-builder/)\n- [JavaFX CSS Reference Guide](https://openjfx.io/javadoc/16/javafx.graphics/javafx/scene/doc-files/cssref.html)\n\n## 書面文件規劃\n\n- 封面: 主題、組員\n- 開發工具\n- 遊戲簡介、規則\n- DEMO\n- 困難的點\n- 未來改善的方向\n- 參考資料\n\n## 參考資料\n\n1. JavaFX 官方文件: https://openjfx.io/javadoc/17/\n2. 流程圖撰寫工具: Mermaidv10.2.3 Live Editor\n3. 按鈕的 CSS 樣式: http://fxexperience.com/2011/12/styling-fx-buttons-with-css/\n4. Maven 套件網站: https://mvnrepository.com/\n5. 協作工具(主要用於修正錯誤、優化程式碼): https://chat.openai.com/\n6. 圖片:\n   - 首頁背景圖片: https://unsplash.com/photos/I0oihJbNSIc\n   - Ghost: https://www.clipartmax.com/max/m2H7K9m2G6m2m2N4/\n   - Player: https://www.pngegg.com/en/png-bnfyu/download\n   - Stone (created by Icongeek26 - Flaticon): https://www.flaticon.com/free-icons/rock\n7. 背景音樂: https://fanlink.to/DarkMystery\n8. Bro Code - JavaFX Tutorial Playlist:\n   https://youtu.be/_7OM-cMYWbQ?list=PLZPZq0r_RZOM-8vJA3NQFZB7JroDcMwev\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxxrjun%2Fevasion-era","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxxrjun%2Fevasion-era","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxxrjun%2Fevasion-era/lists"}