java编写的简陋的三子棋游戏

本文分享了一个简单的三子棋游戏实现代码,使用Java Swing进行界面设计,通过按钮模拟棋盘,实现玩家交替落子及胜负判断等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LZ最近在准备保研,因为去年上机题是三子棋问题,所以无聊时写了一下,程序实现了基本的功能,但是比较简陋。下面贴出代码,读者可以借鉴,自行修改!
package cn.edu.nju.software;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Three {

	private JFrame mainFrame;
	private JPanel jPanel;
	private JButton button[][] = new JButton[3][3];
	private String whoseTurn = "A";                        //A玩家先玩,所以开始时设置为"A"
	
/*-------------------用九个button代替了九宫格,每个button初始text设置为空--------------------*/
	public Three() {
		mainFrame = new JFrame("三子棋");
		jPanel = new JPanel(new GridLayout(3, 3));
		for (int i = 0; i < 3; i++)
			for (int j = 0; j < 3; j++) {
				button[i][j] = new JButton();
				button[i][j].setText(" ");
				jPanel.add(button[i][j]);

			}
		mainFrame.add(jPanel);
		mainFrame.setSize(300, 300);
		mainFrame.setVisible(true);
		mainFrame.setLocation(500, 200);
	}
	
/*-----------------------------为每个button设置了点击事件------------------------------*/

	public void beginGame() {
		for (int i = 0; i < 3; i++)
			for (int j = 0; j < 3; j++) {
				button[i][j].addActionListener(new ActionListener() {
					@Override
					public void actionPerformed(ActionEvent arg0) {
						((JButton) arg0.getSource()).setText(whoseTurn);
						if (isWin(whoseTurn)) {
							JOptionPane.showMessageDialog(null, whoseTurn
									+ " win!");
							mainFrame.setVisible(false);
						} else if (isFull()) {
							JOptionPane
									.showMessageDialog(null, "game is over!");
							mainFrame.setVisible(false);
						} else {
							whoseTurn = (whoseTurn.equals("A")) ? "B" : "A";
						}

					}

				});
			}
	}
/*------------------------------判断是否九个格子已经满了---------------------------------*/
	public boolean isFull() {
		boolean isFull = true;
		for (int i = 0; i < 3; i++)
			for (int j = 0; j < 3; j++) {
				if (button[i][j].getText().equals(" "))
					isFull = false;
			}
		return isFull;
	}

/*---------------------------------游戏判断输赢的核心算法,很简单---------------------------*/
	public boolean isWin(String s) {
		boolean win = false;
		for (int i = 0; i < 3; i++) {
			if ((button[i][0].getText().equals(s))
					&& (button[i][1].getText().equals(s))
					&& (button[i][2].getText().equals(s)))
				win = true;
		}

		for (int j = 0; j < 3; j++) {
			if ((button[0][j].getText().equals(s))
					&& (button[1][j].getText().equals(s))
					&& (button[2][j].getText().equals(s)))
				win = true;
		}

		if ((button[0][0].getText().equals(s))
				&& (button[1][1].getText().equals(s))
				&& (button[2][2].getText().equals(s)))
			win = true;

		if ((button[0][2].getText().equals(s))
				&& (button[1][1].getText().equals(s))
				&& (button[2][0].getText().equals(s)))
			win = true;

		return win;
	}

	public static void main(String[] args) {
		Three three = new Three();
		three.beginGame();
	}

}

代码LZ已经运行过,可以跑!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值