---
# System prepended metadata

title: 'NCTU RUSH, Java Final Project'

---

# NCTU RUSH, Java Final Project 
 塔防遊戲:「NCTU RUSH」
## 題目描述
這作品為一般大多數人可能都玩過的塔防遊戲，遊戲規則是怪物會沿著路徑走，而玩家要在路徑旁設置不同功能的砲塔，想辦法阻止怪物走到終點。

## 特色與功能介紹
* 地圖路徑為隨機產生
* 玩家初始有20條生命，當歸零時即遊戲結束
* 將四個同樣的砲塔併在一起會合併成一個巨大的砲塔，攻擊力與範圍都大大提升
* 每過五回合會進行一次空襲，每座未升級的砲塔皆有機率隨機被破壞消失，關卡越後面破壞機率越高
* 可以花較高的金額將同種類的砲塔一次升級
* 遊戲內有豐富的音效與背景音樂!!
****
## 系統架構
![](https://i.imgur.com/nR0ynQd.png)
****
## **執行結果**
### 遊戲初始畫面
![](https://i.imgur.com/OUY1K2e.png)
&emsp;
按下Start Game 即開始遊戲

### 遊戲畫面
![](https://i.imgur.com/mxM7Glv.png)

### 空襲畫面
![](https://i.imgur.com/kfMUkle.png)

### 遊戲結束畫面
![](https://i.imgur.com/JoqFuVH.png)

****
## **使用到的技術**
* GIF製作
* mouseListener
* javaztoom.jl.player
* thread
* button
* JPanel
* JFrame
* Actionlistener
* MouseListener
* linked-list
* arraylist
* io
* nio
****
## 心得
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在剛開始學JAVA的時候，還覺得JAVA好難用，不好上手，後來才慢慢地覺得JAVA真的是很強大的程式語言，在開始打專題後，真的深深覺得愛上了它。這打專題的過程中，真的學到了很多很多的東西，遠遠超過在上機之中學到的，上機是學基礎，而做專題，則是學會如何將之前所學的做整合，將他呈現出來。
&emsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;這次的專題中遇到的第一個問題是座標，不知道如何將想放的東西放到想放的位置，後來才知道是layout的問題。之後還有遇到的問題就是敵人的移動方法，一開始是寫死，後來由於要適應不同地圖，所以花了很多時間重寫，好不容易能配合各種地圖。其他問題像是攻擊的動畫，我也研究了很久，有些是直接用gif檔，但直接將gif丟到java中，大部分的畫質都會跑掉，所以效果會不好，就只能直接用timer配合panel來製作。音樂也花了蠻多時間研究，因為那時候還沒學thread,所以對從網路上直接抓下來的package不太了解，後來才知道為何。這次的專題，很謝謝組員給的很多idea，也很謝謝助教的評論，因為這些幫助，才有今天的專題。Java課程結束了，很謝謝蔡媽這學期的教導，以後會繼續自己研讀下去。
****
## 工作分配

### 我的貢獻
報告、Map、Tower、Enemy、Status，主要的塔攻擊方式、怪物的移動、塔的升級、音效、讀檔

### 另一位同學的貢獻
報告、main、Map、Menuframe、ShowImage、CreateMap(隨機產生路徑的演算法)

