问一个用java编写三子棋游戏的问题

shaoguangminghan 2009-11-21 04:36:17
定义了一个char型的二维数组
怎么判断某一行、一列,对角线的3个字符相等?
我用了if(game[1][1]==game[0][0]&&game[1][1]==game[2][2])
output+="you win";
但当我第一次输入game[0][0]的值后就直接打印了“you win”
这是怎么回事?
...全文
660 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaoguangminghan 2009-11-21
  • 打赏
  • 举报
回复
那我的那个有什么地方错了?

if(game[1][1]==game[0][0]&&game[1][1]==game[2][2])
output+="you win";
但当我第一次输入game[0][0]的值后就直接打印了“you win”
dajiadebeibei9 2009-11-21
  • 打赏
  • 举报
回复
getIcon()是获得按钮的背景图片
你可以不用图片来区分颜色按钮
你可以setBackColor(Color.颜色)来区分颜色 这样更容易
dajiadebeibei9 2009-11-21
  • 打赏
  • 举报
回复
就是两张图片不同颜色的图片 你命名成001.jpg 和002.jpg 放在你的工程目录下 或者和.class一个文件夹下即可
shaoguangminghan 2009-11-21
  • 打赏
  • 举报
回复
请问LS:
.getIcon()是什么意思?
dajiadebeibei9 2009-11-21
  • 打赏
  • 举报
回复
我做好的 给你看看吧
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class Test extends JFrame implements ActionListener {
Container cp;
JLabel lbl;
JButton [] btn = new JButton[9];
JButton btn_start;
JPanel jp1,jp2;
int count = 0;
ImageIcon icon1,icon2;
JMenuBar mBar;
JMenu JMenu1,JMenu2,JMenu3;
JMenuItem mItem1,mItem2,mItem3,mItem4;

public Test() {
setSize(300,400);
setLocation(312,234);
setVisible(true);
cp = getContentPane();
cp.setLayout(new BorderLayout());

mItem1 = new JMenuItem("开始");
mItem2 = new JMenuItem("退出");
JMenu3 = new JMenu("帮助");
mItem3 = new JMenuItem("游戏介绍");
mItem4 = new JMenuItem("作者介绍");
mItem3.addActionListener(this);
mItem4.addActionListener(this);
JMenu1 = new JMenu("游戏");
JMenu2 = new JMenu("帮助");
mBar = new JMenuBar();
JMenu1.add(mItem1);
JMenu1.addSeparator(); //分隔线
JMenu1.add(mItem2);
JMenu2.add(JMenu3);
JMenu3.add(mItem3);
JMenu3.add(mItem4);
mBar.add(JMenu1);
mBar.add(JMenu2);
setJMenuBar(mBar);

mItem1.addActionListener(this);
mItem2.addActionListener(this);

lbl = new JLabel("红方先手");
cp.add(lbl,BorderLayout.NORTH);
jp1 = new JPanel();
jp1.setLayout(new GridLayout(3,3));
for (int i = 0; i<9; i++) {
btn[i] = new JButton();
jp1.add(btn[i]);
btn[i].addActionListener(this);
}
cp.add(jp1,BorderLayout.CENTER);
btn_start = new JButton("重新开始");
jp2 = new JPanel();
cp.add(jp2,BorderLayout.SOUTH);
jp2.add(btn_start);
this.setResizable(false);
icon1 = new ImageIcon("001.jpg");
icon2 = new ImageIcon("002.jpg");

btn_start.addActionListener(this);
}

public void actionPerformed(ActionEvent e) {
if (e.getSource() == mItem1) {
this.dispose();
new Test();
}

if (e.getSource() == mItem2) {
this.dispose();
System.exit(0);
}
else if (e.getSource() == mItem3)
JOptionPane.showMessageDialog(null,"游戏规则:"+"\n"
+"在三子棋游戏中,两个游戏者在3*3网格的有效单元格中轮流作标记(一个人用X,另一个人用O)。如果一个游戏者在网格的水平、垂直或对角线方向上作了三个连续标记,游戏就以这个游戏者得胜而告终。当网络的所有单元格都标满了标记而没有产生优胜者,就出现了平局。");
else if (e.getSource() == mItem4)
JOptionPane.showMessageDialog(null,"作者:信息工程学院LZY");

else if (e.getSource() == btn_start) {
this.dispose(); //销毁当前对象
new Test();
}
else {
count++;
if (count%2 == 1) {
lbl.setText("绿方下");
for (int i = 0; i<9; i++) {
if (e.getSource() == btn[i]) {
btn[i].setIcon(icon1);
btn[i].removeActionListener(this);
// btn[i].setEnabled(false); //这样会使按钮图片变灰;
this.win();
}
}
}
else if (count%2 == 0) {
lbl.setText("红方下");
for (int i = 0; i<9; i++) {
if (e.getSource() == btn[i]) {
btn[i].setIcon(icon2);
btn[i].removeActionListener(this);
// btn[i].setEnabled(false); //这样会使按钮图片变灰;
this.win();
}
}
}
}
}

public void win() {

for (int j = 0; j<9; j=j+3) {
if (btn[j].getIcon()==btn[j+1].getIcon() && btn[j+1].getIcon()==btn[j+2].getIcon())
{
if (btn[j].getIcon() == icon1) this.bbb();
else if (btn[j].getIcon() == icon2) this.ccc();
}
}

for (int j = 0; j<3; j++) {
if (btn[j].getIcon()==btn[j+3].getIcon() && btn[j+3].getIcon()==btn[j+6].getIcon())
{
if (btn[j].getIcon() == icon1) this.bbb();
else if (btn[j].getIcon() == icon2) this.ccc();
}
}

if (btn[0].getIcon()==btn[4].getIcon() && btn[4].getIcon()==btn[8].getIcon())
{
if (btn[0].getIcon() == icon1) this.bbb();
else if (btn[0].getIcon() == icon2) this.ccc();
}
if (btn[2].getIcon()==btn[4].getIcon() && btn[4].getIcon()==btn[6].getIcon())
{
if (btn[2].getIcon() == icon1) this.bbb();
else if (btn[2].getIcon() == icon2) this.ccc();
}
}

public void bbb() {
lbl.setText("游戏结束了!!!");
JOptionPane.showMessageDialog(null,"红方胜利,绿方要加油哦!");
for (int i = 0; i<9; i++) btn[i].removeActionListener(this);
}

public void ccc() {
lbl.setText("game is over!");
JOptionPane.showMessageDialog(null,"绿方胜利,红方要加油哦!");
for (int i = 0; i<9; i++) btn[i].removeActionListener(this);
}

public static void main(String[]args) {
Test game2 = new Test();
}
}

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧