简易版双人对战五子棋

这是一个关于简易双人对战五子棋的程序介绍,包括主框架类作为程序启动点,棋子类和棋盘类的详细代码实现,以及实际运行的效果图展示,鼓励读者亲自尝试运行和体验。
摘要由CSDN通过智能技术生成

五子棋-主框架类, 程序启动类

代码:


public class StartChessJFrame extends JFrame {
	private ChessBoard chessBoard;//对战面板
	private JPanel toolbar;//工具条面板
	private JButton startButton, backButton, exitButton; 
	//重新开始按钮,悔棋按钮,和退出按钮
	private JMenuBar menuBar;//菜单栏
	private JMenu sysMenu;//系统菜单
	private JMenuItem startMenuItem, exitMenuItem, backMenuItem; //重新开始,退出,和悔棋菜单项
	public StartChessJFrame() { setTitle("简易版双人对战五子棋");
	//设置标题 
	chessBoard= new ChessBoard();
	// 创建和添加菜单
	menuBar = new JMenuBar();
	//初始化菜单栏 
	sysMenu= new JMenu("系统");
	//初始化菜单
	startMenuItem =new JMenuItem("重新开始"); 
	exitMenuItem= new JMenuItem("退出"); 
	backMenuItem= new JMenuItem("悔棋");
	//初始化菜单项 
	sysMenu.add(startMenuItem);
	//将三个菜单项添加到菜单上 
	sysMenu.add(backMenuItem); 
	sysMenu.add(exitMenuItem); 
	MyItemListener lis = new MBeanListener();//初始化按钮事件监听器内部类
	this.startMenuItem.addActionListener(lis);
	//将三个菜单项注册到事件监听器上 
	backMenuItem.addActionListener(lis);
	exitMenuItem.addActionListener(lis);
	}
	
	MenuBar.add(sysMenu);
	//将系统菜单添加到菜单栏上 
	setJMenuBar(menuBar);
	// 将 menuBar 设置为菜单栏


	toolbar =new JPanel();
	//工具面板栏实例化 
	startButton= new JButton("重新开始");
	//三个按钮初始化 
	backButton= new JButton("悔棋"); 
	exitButton= new JButton("退出"); 
	toolbar.setLayout(new FlowLayout(FlowLayout.LEFT));
	// 将 工 具 面 板 按 钮 用FlowLayout 布局 
	toolbar.add(startButton);
	//将三个按钮添加到工具面板上
	toolbar.add(backButton);
    toolbar.add(exitButton);
    startButton.addActionListener(lis);
    //将三个按钮注册监听事件
    backButton.addActionListener(lis);
    exitButton.addActionListener(lis);
    add(toolbar,BorderLayout.SOUTH);
    //将工具面板布局到界面下面 
    add(chessBoard);
    //将面板对象添加到窗体上 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //设置界面关闭事件
    //setSize(800,800);
    pack(); // 自适应大小 
    }
	private class MyItemListenerimplementsActionListener{//事件监听器内部类
	public void actionPerformed(ActionEvent e){ Object obj =e.getSource(); 
	// 取得事件源 
	if(obj == StartChessJFrame.this.startMenuItem || obj== startButton){ // 重新开始
// JFiveFrame.this 内部类引用外部类
		System.out.println
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的双人对战五子棋的 Java 代码示例: ```java import java.util.Scanner; public class Gobang { // 定义棋盘大小 public static final int BOARD_SIZE = 15; // 定义棋盘数组 private String[][] board = new String[BOARD_SIZE][BOARD_SIZE]; // 定义当前玩家和对手的棋子颜色 private String currentPlayer; private String opponent; public Gobang() { // 初始化棋盘 for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { board[i][j] = "+"; } } // 随机选择先手 if (Math.random() > 0.5) { currentPlayer = "X"; opponent = "O"; } else { currentPlayer = "O"; opponent = "X"; } } // 输出棋盘 public void printBoard() { System.out.println(" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15"); for (int i = 0; i < BOARD_SIZE; i++) { System.out.print((i + 1) + " "); for (int j = 0; j < BOARD_SIZE; j++) { System.out.print(board[i][j] + " "); } System.out.println(); } } // 判断游戏是否结束 public boolean isGameOver(int x, int y) { // 判断横向是否有五个棋子相连 int count = 1; for (int i = y + 1; i < BOARD_SIZE && board[x][i].equals(currentPlayer); i++) { count++; } for (int i = y - 1; i >= 0 && board[x][i].equals(currentPlayer); i--) { count++; } if (count >= 5) { return true; } // 判断纵向是否有五个棋子相连 count = 1; for (int i = x + 1; i < BOARD_SIZE && board[i][y].equals(currentPlayer); i++) { count++; } for (int i = x - 1; i >= 0 && board[i][y].equals(currentPlayer); i--) { count++; } if (count >= 5) { return true; } // 判断右斜向是否有五个棋子相连 count = 1; for (int i = x + 1, j = y + 1; i < BOARD_SIZE && j < BOARD_SIZE && board[i][j].equals(currentPlayer); i++, j++) { count++; } for (int i = x - 1, j = y - 1; i >= 0 && j >= 0 && board[i][j].equals(currentPlayer); i--, j--) { count++; } if (count >= 5) { return true; } // 判断左斜向是否有五个棋子相连 count = 1; for (int i = x + 1, j = y - 1; i < BOARD_SIZE && j >= 0 && board[i][j].equals(currentPlayer); i++, j--) { count++; } for (int i = x - 1, j = y + 1; i >= 0 && j < BOARD_SIZE && board[i][j].equals(currentPlayer); i--, j++) { count++; } if (count >= 5) { return true; } return false; } // 开始游戏 public void start() { Scanner scanner = new Scanner(System.in); int x, y; while (true) { // 输出当前棋盘和玩家提示 printBoard(); System.out.println("轮到 " + currentPlayer + " 玩家落子,请输入坐标(如:3,4):"); // 获取玩家输入的坐标 String input = scanner.next(); String[] inputArray = input.split(","); x = Integer.parseInt(inputArray[0]) - 1; y = Integer.parseInt(inputArray[1]) - 1; // 判断坐标是否合法 if (x < 0 || x >= BOARD_SIZE || y < 0 || y >= BOARD_SIZE || !board[x][y].equals("+")) { System.out.println("坐标不合法,请重新输入!"); continue; } // 在棋盘上落子 board[x][y] = currentPlayer; // 判断游戏是否结束 if (isGameOver(x, y)) { System.out.println(currentPlayer + " 玩家获胜!"); break; } // 切换玩家 String temp = currentPlayer; currentPlayer = opponent; opponent = temp; } scanner.close(); } public static void main(String[] args) { Gobang game = new Gobang(); game.start(); } } ``` 这段代码实现了一个简单的双人对战五子棋游戏,玩家可以通过输入坐标来落子,程序会自动判断是否有玩家获胜。注意,这段代码还没有实现悔棋、保存游戏等功能,你可以根据需要进行扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值