iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0
佛心分享-SideProject30

從0開始—初階程式語言學習者的必經之路系列 第 20

DAY20結合過往所學-隨即生成及界面製作的找找看遊戲

  • 分享至 

  • xImage
  •  

###曾經我們製作過隨即生成任務的迷宮遊戲,今天的遊戲也有類似概念,但更強調了畫面話及按鈕的配置作用

在 Java 中製作一個「找找看」的遊戲可以是一個有趣的挑戰,這種類型的遊戲通常涉及在一個界面上隱藏某些目標,然後讓玩家通過點擊或操作來找到這些隱藏的物件。這類遊戲通常涉及圖形介面編程,事件處理和簡單的遊戲邏輯。下面是一個基本的實現流程:

1. 設計遊戲界面

要在 Java 中製作 GUI 程式,我們通常使用 SwingJavaFX。以下是使用 Swing 的基本思路:

  • 創建一個主視窗(JFrame)。
  • 使用布局管理器來組織多個 JPanelJLabel 來代表不同的遊戲區域或隱藏目標。

2. 初始化遊戲元素

  • 設置一個遊戲板,可能是由若干個按鈕(JButton)或標籤(JLabel)構成的格子。
  • 隨機選擇一些按鈕或標籤來隱藏目標(例如寶藏、圖片或其他物件)。

3. 事件處理

  • 添加按鈕或標籤的點擊事件監聽器。當玩家點擊按鈕時,觸發事件來檢查玩家是否找到了目標。
  • 可以使用 ActionListener 來實現這些功能。

4. 遊戲邏輯

  • 在玩家找到目標後,可以顯示提示訊息或更新分數。
  • 可以設置多個關卡或增加時間限制來增加遊戲難度。

5. 程式範例

以下是一個基本的示例程式碼,展示如何使用 Swing 來構建一個簡單的「找找看」遊戲框架:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

public class FindTheTreasureGame extends JFrame {
    private JButton[] buttons;
    private int treasureIndex;

    public FindTheTreasureGame() {
        setTitle("找找看遊戲");
        setSize(400, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new GridLayout(4, 4));

        buttons = new JButton[16];
        Random random = new Random();
        treasureIndex = random.nextInt(16); // 隨機選擇一個按鈕作為寶藏

        for (int i = 0; i < 16; i++) {
            buttons[i] = new JButton("?");
            buttons[i].addActionListener(new ButtonClickListener(i));
            add(buttons[i]);
        }
    }

    private class ButtonClickListener implements ActionListener {
        private int index;

        public ButtonClickListener(int index) {
            this.index = index;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            if (index == treasureIndex) {
                buttons[index].setText("寶藏!");
                JOptionPane.showMessageDialog(null, "恭喜,你找到了寶藏!");
            } else {
                buttons[index].setText("空的");
            }
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            FindTheTreasureGame game = new FindTheTreasureGame();
            game.setVisible(true);
        });
    }
}

6. 擴展功能

  • 分數系統:添加一個分數系統,根據玩家找到寶藏所需的時間或次數來計分。
  • 多個關卡:隨著遊戲進行,增加難度,如增加按鈕數量或減少提示。
  • 時間限制:增加計時器,限制玩家在一定時間內找到寶藏。
  • 圖形優化:使用圖片或自定義圖標代替按鈕上的文字,以增強遊戲的視覺效果。

上一篇
DAY19製作問卷—JFrame主要使用方式
下一篇
DAY21💥✨加入特效(利用找找看遊戲延伸)
系列文
從0開始—初階程式語言學習者的必經之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言