上班摸鱼,JAVA实现单机五子棋优化版

上班摸鱼,JAVA实现单机五子棋优化版

首页休闲益智天梨五子棋单机版更新时间:2024-04-16

上一篇文章,使用Java写了一个控制台的五子棋,玩起来不是很友好,这一篇文章把代码做了优化,同样是一个Java文件,单机五子棋玩起来!

直接上代码:代码已经运行通过,直接使用main方法运行;

package store.tbfl; /** * @version 1.0.0 * @ClassName WuZiQiGame.java * @Description TODO * @createTime 2023年04月14日 16:09:00 */ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class WuZiQiGame extends JFrame implements ActionListener { private JButton[][] boardButtons; // 棋盘按钮 private char[][] board; // 棋盘 private char currentPlayer; // 当前玩家 private boolean gameover; // 游戏是否结束 public WuZiQiGame() { setTitle("伊伊动漫-五子棋"); setSize(500, 500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new GridLayout(15, 15)); boardButtons = new JButton[15][15]; board = new char[15][15]; currentPlayer = 'X'; gameover = false; // 初始化棋盘按钮和事件监听器 for (int i = 0; i < 15; i ) { for (int j = 0; j < 15; j ) { boardButtons[i][j] = new JButton(); boardButtons[i][j].setFont(new Font("Arial", Font.PLAIN, 30)); boardButtons[i][j].addActionListener(this); add(boardButtons[i][j]); } } setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if (gameover) { return; } JButton clickedButton = (JButton) e.getSource(); // 获取按钮的行列索引 int row = -1; int col = -1; for (int i = 0; i < 15; i ) { for (int j = 0; j < 15; j ) { if (clickedButton == boardButtons[i][j]) { row = i; col = j; break; } } } // 判断按钮是否为空,并落子 if (board[row][col] == '\u0000') { board[row][col] = currentPlayer; clickedButton.setText(String.valueOf(currentPlayer)); clickedButton.setEnabled(false); // 检查胜利条件 if (checkWin(row, col)) { JOptionPane.showMessageDialog(this, "玩家 " currentPlayer " 胜利!"); gameover = true; } else { // 切换下一位玩家 currentPlayer = (currentPlayer == 'X') ? 'O' : 'X'; } } } // 检查胜利条件 private boolean checkWin(int row, int col) { char player = board[row][col]; // 水平方向 int count = 1; int i = row; int j = col - 1; while (j >= 0 && board[i][j] == player) { count ; j--; } j = col 1; while (j < 15 && board[i][j] == player) { count ; j ; } if (count >= 5) { return true; } // 竖直方向 count = 1; i = row - 1; j = col; while (i >= 0 && board[i][j] == player) { count ; i--; } i = row 1; while (i < 15 && board[i][j] == player) { count ; i ; } if (count >= 5) { return true; } // 左上到右下斜线方向 count = 1; i = row - 1; j = col - 1; while (i >= 0 && j >= 0 && board[i][j] == player) { count ; i--; j--; } i = row 1; j = col 1; while (i < 15 && j < 15 && board[i][j] == player) { count ; i ; j ; } if (count >= 5) { return true; } // 右上到左下斜线方向 count = 1; i = row - 1; j = col 1; while (i >= 0 && j < 15 && board[i][j] == player) { count ; i--; j ; } i = row 1; j = col - 1; while (i < 15 && j >= 0 && board[i][j] == player) { count ; i ; j--; } if (count >= 5) { return true; } return false; } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new WuZiQiGame()); } }

,
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved