您的位置:首页 > 编程语言 > Java开发

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

2013-09-09 20:10 393 查看

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已经运行过,可以跑!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 三子棋 Ecilpse