Java写五子棋游戏

文章介绍了如何使用Java编程实现一个简单的五子棋游戏,包括棋盘类Chessboard的创建,判断下棋位置、游戏结束等方法,以及游戏界面类GameUI的设计,处理用户输入和显示棋盘状态。虽然游戏结束判断逻辑未实现,但提供了扩展的基础框架。
摘要由CSDN通过智能技术生成

一个基本的Java五子棋游戏实现。请注意,这只是一个简单的示例,您可以根据自己的需求进行修改和扩展。

首先,我们需要一个棋盘类 Chessboard,它会保存棋盘状态并提供相关的方法:

复制public class Chessboard {
    private int[][] board; // 棋盘状态,0表示空,1表示黑子,2表示白子
    private int turn; // 当前轮到哪个玩家下棋,1表示黑方,2表示白方

    public Chessboard() {
        board = new int[15][15];
        turn = 1;
    }

    // 判断某个位置是否可以下棋
    public boolean canMove(int x, int y) {
        return board[x][y] == 0;
    }

    // 下棋
    public void move(int x, int y) {
        board[x][y] = turn;
        turn = 3 - turn; // 切换到另一个玩家
    }

    // 判断游戏是否结束
    public boolean isGameOver() {
        // TODO: 实现游戏结束的判断逻辑
        return false;
    }
}

接下来,我们需要一个游戏界面类 GameUI,它会显示棋盘和处理用户输入:

复制import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GameUI extends JFrame implements ActionListener {
    private Chessboard board;
    private JButton[][] buttons;

    public GameUI() {
        board = new Chessboard();
        buttons = new JButton[15][15];

        // 初始化界面
        JPanel panel = new JPanel(new GridLayout(15, 15));
        for (int i = 0; i < 15; i++) {
            for (int j = 0; j < 15; j++) {
                JButton button = new JButton();
                button.setPreferredSize(new Dimension(30, 30));
                button.addActionListener(this);
                panel.add(button);
                buttons[i][j] = button;
            }
        }

        add(panel);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }

    // 处理按钮点击事件
    public void actionPerformed(ActionEvent e) {
        if (board.isGameOver()) {
            JOptionPane.showMessageDialog(this, "游戏已结束");
            return;
        }

        JButton button = (JButton) e.getSource();
        int x = -1, y = -1;
        for (int i = 0; i < 15; i++) {
            for (int j = 0; j < 15; j++) {
                if (button == buttons[i][j]) {
                    x = i;
                    y = j;
                    break;
                }
            }
        }
        if (!board.canMove(x, y)) {
            JOptionPane.showMessageDialog(this, "该位置不可用,请重新选择");
            return;
        }

        board.move(x, y);
        updateUI();

        if (board.isGameOver()) {
            JOptionPane.showMessageDialog(this, "游戏结束,胜方是" + (board.getTurn() == 1 ? "黑方" : "白方"));
        }
    }

    // 更新界面
    private void updateUI() {
        for (int i = 0; i < 15; i++) {
            for (int j = 0; j < 15; j++) {
                int status = board.getBoard()[i][j];
                if (status == 0) {
                    buttons[i][j].setIcon(null);
                } else if (status == 1) {
                    buttons[i][j].setIcon(new ImageIcon("black.png"));
                } else if (status == 2) {
                    buttons[i][j].setIcon(new ImageIcon("white.png"));
                }
            }
        }
    }
}

最后,我们需要一个主程序来启动游戏:

复制public class Main {
    public static void main(String[] args) {
        new GameUI();
    }
}

这样,我们就完成了一个基本的Java五子棋游戏实现。需要注意的是,这个实现还有很多不足之处,比如没有实现游戏结束的判断逻辑,没有实现悔棋等功能。您可以根据自己的需求进行修改和扩展

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值