gpt4 book ai didi

java - 井字游戏按钮颜色

转载 作者:行者123 更新时间:2023-11-29 03:32:00 25 4
gpt4 key购买 nike

我一直在更新我在网上找到的有点过时的 tic tac toe 代码(就像它现在实际工作一样:P)我已经快完成了,但我仍然遇到同样的问题。井字棋板内的 3x3 按钮工作完美,除了一件事,单击它们后的颜色始终是背景,我已尝试更正此问题,但它所做的只是使按钮根本不改变颜色。这两种颜色是红色和绿色,我希望这样当每个玩家单击一个按钮时它会更改为他们的颜色。

主要游戏代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TicTacToeGame extends JFrame implements ActionListener
{
JLabel l1;
JLabel p1namel;
JLabel p2namel;
JLabel l3;
JButton b1;
JButton b2;
JButton b3;
JButton b4;
JButton b5;
JButton b6;
JButton b7;
JButton b8;
JButton b9;
int b1ctr = 1 ,b2ctr = 2 ,b3ctr = 3 ,b4ctr = 4, b5ctr = 5, b6ctr = 6, b7ctr = 7, b8ctr = 8, b9ctr = 9;
Font textfont = new Font( "Serif", Font.PLAIN,70 );
int ctr = 1;
String p1name,p2name;

public TicTacToeGame(String p1,String p2)
{
TicTacToeGameLayout customLayout = new TicTacToeGameLayout();

getContentPane().setFont(new Font("Helvetica", Font.PLAIN, 12));
getContentPane().setLayout(customLayout);
getContentPane().setBackground(Color.CYAN);

l1 = new JLabel("");
getContentPane().add(l1);

p1name = p1;
p2name = p2;

p1namel = new JLabel("");
p1namel.setText(p1);
p1namel.setFont(textfont);
p1namel.setForeground(Color.RED);
getContentPane().add(p1namel);

p2namel = new JLabel("");
p2namel.setText(p2);
p2namel.setForeground(Color.GREEN);
p2namel.setFont(textfont);
getContentPane().add(p2namel);

l3 = new JLabel("<->");
l3.setFont(textfont);
getContentPane().add(l3);

b1 = new JButton("");
getContentPane().add(b1);

b2 = new JButton("");
getContentPane().add(b2);

b3 = new JButton("");
getContentPane().add(b3);

b4 = new JButton("");
getContentPane().add(b4);

b5 = new JButton("");
getContentPane().add(b5);

b6 = new JButton("");
getContentPane().add(b6);

b7 = new JButton("");
getContentPane().add(b7);

b8 = new JButton("");
getContentPane().add(b8);

b9 = new JButton("");
getContentPane().add(b9);


l3.setForeground(Color.WHITE);

b1.setFont(textfont);
b2.setFont(textfont);
b3.setFont(textfont);
b4.setFont(textfont);
b5.setFont(textfont);
b6.setFont(textfont);
b7.setFont(textfont);
b8.setFont(textfont);
b9.setFont(textfont);

b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);

setSize(getPreferredSize());

addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}


public void actionPerformed(ActionEvent ae)

{

if (ctr % 2 == 1)

{

if(ae.getSource() == b1)
{


b1ctr = 0;
b1.setEnabled(false);
b1.setBackground(Color.GREEN);
winnerfind();
ctr++;

}
else if (ae.getSource() == b2)

{

b2ctr = 0;
b2.setEnabled(false);
b2.setBackground(Color.GREEN);
winnerfind();
ctr++;

}
else if (ae.getSource() == b3)

{

b3ctr = 0;
b3.setEnabled(false);
b3.setBackground(Color.GREEN);
winnerfind();
ctr++;

}
else if (ae.getSource() == b4)

{

b4ctr = 0;
b4.setEnabled(false);
b4.setBackground(Color.GREEN);
winnerfind();
ctr++;

}
else if (ae.getSource() == b5)

{

b5ctr = 0;
b5.setEnabled(false);
b5.setBackground(Color.GREEN);
winnerfind();
ctr++;

}
else if (ae.getSource() == b6)

{

b6ctr = 0;
b6.setEnabled(false);
b6.setBackground(Color.GREEN);
winnerfind();
ctr++;

}
else if (ae.getSource() == b7)

{

b7ctr = 0;
b7.setEnabled(false);
b7.setBackground(Color.GREEN);
winnerfind();
ctr++;

}
else if (ae.getSource() == b8)

{

b8ctr = 0;
b8.setEnabled(false);
b8.setBackground(Color.GREEN);
winnerfind();
ctr++;

}
else if (ae.getSource() == b9)

{

b9ctr = 0;
b9.setEnabled(false);
b9.setBackground(Color.GREEN);
winnerfind();
ctr++;

}

}
else if (ctr % 2 != 1)

{

if(ae.getSource() == b1)
{


b1ctr = 1;
b1.setEnabled(false);
b1.setBackground(Color.YELLOW);
winnerfind1();
ctr++;

}
else if (ae.getSource() == b2)

{

b2ctr = 1;
b2.setEnabled(false);
b2.setBackground(Color.YELLOW);
winnerfind1();
ctr++;

}
else if (ae.getSource() == b3)

{

b3ctr = 1;
b3.setEnabled(false);
b3.setBackground(Color.YELLOW);
winnerfind1();
ctr++;

}
else if (ae.getSource() == b4)

{

b4ctr = 1;
b4.setEnabled(false);
b4.setBackground(Color.YELLOW);
winnerfind1();
ctr++;

}
else if (ae.getSource() == b5)

{

b5ctr = 1;
b5.setEnabled(false);
b5.setBackground(Color.YELLOW);
winnerfind1();
ctr++;

}
else if (ae.getSource() == b6)

{

b6ctr = 1;
b6.setEnabled(false);
b6.setBackground(Color.YELLOW);
winnerfind1();
ctr++;

}
else if (ae.getSource() == b7)

{

b7ctr = 1;
b7.setEnabled(false);
b7.setBackground(Color.YELLOW);
winnerfind1();
ctr++;

}
else if (ae.getSource() == b8)

{

b8ctr = 1;
b8.setEnabled(false);
b8.setBackground(Color.YELLOW);
winnerfind1();
ctr++;

}
else if (ae.getSource() == b9)

{

b9ctr = 1;
b9.setEnabled(false);
b9.setBackground(Color.YELLOW);
winnerfind1();
ctr++;

}




}



}

public void winnerfind()

{

if ((b1ctr == 0 && b2ctr == 0 && b3ctr == 0) || (b1ctr == 0 && b4ctr == 0 && b7ctr == 0) || (b2ctr == 0 && b5ctr == 0 && b8ctr == 0) || (b3ctr == 0 && b6ctr == 0 && b9ctr == 0) || (b4ctr == 0 && b5ctr == 0 && b6ctr == 0) || (b7ctr == 0 && b8ctr == 0 && b9ctr == 0) || (b1ctr == 0 && b5ctr == 0 && b9ctr == 0) || (b3ctr == 0 && b5ctr == 0 && b7ctr == 0))

{

JOptionPane.showMessageDialog(null,""+p1name+" is the winner!");

}



}


public void winnerfind1()

{

if ((b1ctr == 1 && b2ctr == 1 && b3ctr == 1) || (b1ctr == 1 && b4ctr == 1 && b7ctr == 1) || (b2ctr == 1 && b5ctr == 1 && b8ctr == 1) || (b3ctr == 1 && b6ctr == 1 && b9ctr == 1) || (b4ctr == 1 && b5ctr == 1 && b6ctr == 1) || (b7ctr == 1 && b8ctr == 1 && b9ctr == 1) || (b1ctr == 1 && b5ctr == 1 && b9ctr == 1) || (b3ctr == 1 && b5ctr == 1 && b7ctr == 1))

{

JOptionPane.showMessageDialog(null,""+p2name+" is victorious!");

}



}


}

class TicTacToeGameLayout implements LayoutManager
{

public TicTacToeGameLayout()
{
}

public void addLayoutComponent(String name, Component comp)
{
}

public void removeLayoutComponent(Component comp)
{
}

public Dimension preferredLayoutSize(Container parent)
{
Dimension dim = new Dimension(0, 0);

Insets insets = parent.getInsets();
dim.width = 719 + insets.left + insets.right;
dim.height = 455 + insets.top + insets.bottom;

return dim;
}

public Dimension minimumLayoutSize(Container parent)
{
Dimension dim = new Dimension(0, 0);
return dim;
}

public void layoutContainer(Container parent)
{
Insets insets = parent.getInsets();

Component c;
c = parent.getComponent(0);
if (c.isVisible()) {c.setBounds(insets.left+0,insets.top+64,720,8);}
c = parent.getComponent(1);
if (c.isVisible()) {c.setBounds(insets.left+16,insets.top+8,428,80);}
c = parent.getComponent(2);
if (c.isVisible()) {c.setBounds(insets.left+472,insets.top+8,528,80);}
c = parent.getComponent(3);
if (c.isVisible()) {c.setBounds(insets.left+300,insets.top+8,150,80);}
c = parent.getComponent(4);
if (c.isVisible()) {c.setBounds(insets.left+176,insets.top+112,120,104);}
c = parent.getComponent(5);
if (c.isVisible()) {c.setBounds(insets.left+296,insets.top+112,112,104);}
c = parent.getComponent(6);
if (c.isVisible()) {c.setBounds(insets.left+408,insets.top+112,120,104);}
c = parent.getComponent(7);
if (c.isVisible()) {c.setBounds(insets.left+176,insets.top+216,120,96);}
c = parent.getComponent(8);
if (c.isVisible()) {c.setBounds(insets.left+296,insets.top+216,112,96);}
c = parent.getComponent(9);
if (c.isVisible()) {c.setBounds(insets.left+408,insets.top+216,120,96);}
c = parent.getComponent(10);
if (c.isVisible()) {c.setBounds(insets.left+176,insets.top+312,120,104);}
c = parent.getComponent(11);
if (c.isVisible()) {c.setBounds(insets.left+296,insets.top+312,112,104);}
c = parent.getComponent(12);
if (c.isVisible()) {c.setBounds(insets.left+408,insets.top+312,120,104);}
}
}

最佳答案

除了您使用的是黄色而不是红色之外,该代码没有任何问题 - 如果您想更改它,只需将所有出现的 Color.YELLOW 更改为 Color.RED,并交换两个玩家的颜色以保持一致性:

p1namel = new JLabel("");
p1namel.setText(p1);
p1namel.setFont(textfont);
p1namel.setForeground(Color.GREEN); // << HERE
getContentPane().add(p1namel);

p2namel = new JLabel("");
p2namel.setText(p2);
p2namel.setForeground(Color.RED); // << AND HERE
p2namel.setFont(textfont);
getContentPane().add(p2namel);

当我在它的底部添加一些支持代码以使框架运行时:

public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
TicTacToeGame frame = new TicTacToeGame("pax","diablo");
frame.setVisible(true);
}
});
}

它看起来工作正常(除了不匹配的颜色):

enter image description here

通过如上所示进行更改,您最终得到:

enter image description here

关于java - 井字游戏按钮颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17689799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com