提到《星際爭霸》,相信許多玩家都不陌生。這款經典的即時戰略遊戲曾風靡全球,但你是否想過用 Java 從零開始重現它?今天分享的一份開源專案,正是由一位大神級開發者用 Java 完整實現的《星際爭霸》遊戲,畫面效果極度逼真,核心邏輯完整可跑。
遊戲的輸入處理採用事件驅動模式,封裝了滑鼠拖曳、點擊、鍵盤監聽等核心交互邏輯。透過內部類實現 MouseAdapter、MouseMotionAdapter 與 KeyListener,並定義多種回調介面(DragListener、MoveListener、LeftPressListener 等),實現了解耦的命令模式。
public class Control {
private int x, y, dx, dy, width, height;
private boolean dragged, moving;
private Component component;
// ... 事件監聽器與回調介面定義
}
採用雙緩衝策略(BufferStrategy)搭配固定時間步長的遊戲迴圈,確保渲染流暢不閃爍。GameCore 為抽象類,強制子類實現 draw(Graphics2D g) 方法,體現了模板方法模式。
public abstract class GameCore extends JFrame {
protected static final int FONT_SIZE = 10;
private boolean isRunning;
// ... 初始化全螢幕、自定義游標、雙緩衝等
public void gameLoop() {
BufferStrategy strategy = getBufferStrategy();
long currTime = System.currentTimeMillis();
while (isRunning) {
long elapsedTime = System.currentTimeMillis() - currTime;
currTime += elapsedTime;
update(elapsedTime);
Graphics2D g = (Graphics2D) strategy.getDrawGraphics();
// 開啟抗鋸齒
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
draw(g);
g.dispose();
if (!strategy.contentsLost()) strategy.show();
Thread.sleep(5);
}
}
public abstract void draw(Graphics2D g);
}
原始碼已打包提供,下載後導入 IDE,進入 src/test/TestGameCore.java 直接執行即可啟動遊戲。專案結構清晰,適合作為 Java 遊戲開發的學習參考。

