JAVA西蒙游戏

JAVA西蒙游戏,java,Java,我需要为我的Java初学者完成这个simon游戏。基本上,游戏需要随机选择顶部标签“R”、“B”、“Y”或“G”上的3个颜色字母,开始游戏。玩家将按此顺序按下颜色,如果颜色正确,将添加另一个字母/颜色。如果颜色错误,则将丢失。我有游戏的主要部分设置,包括颜色等。。。我现在很难做到的是打印底部标签上按钮的字母,同时让顶部标签随机选择3个。当按下按钮时,我可以让游戏在顶部标签上随机打印字母,但它不会自己开始,也不会添加字母 这是我的密码: //10/30/16 package simongame1;

我需要为我的Java初学者完成这个simon游戏。基本上,游戏需要随机选择顶部标签“R”、“B”、“Y”或“G”上的3个颜色字母,开始游戏。玩家将按此顺序按下颜色,如果颜色正确,将添加另一个字母/颜色。如果颜色错误,则将丢失。我有游戏的主要部分设置,包括颜色等。。。我现在很难做到的是打印底部标签上按钮的字母,同时让顶部标签随机选择3个。当按下按钮时,我可以让游戏在顶部标签上随机打印字母,但它不会自己开始,也不会添加字母

这是我的密码:

//10/30/16
package simongame1;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.security.SecureRandom;

public class SimonGame1 extends JFrame implements ActionListener
{   
    public SecureRandom rand;
    public String randomLetters="";
    JButton[] numberButtons = new JButton[4];
    JPanel numberButtonPanel = new JPanel();
    JLabel labelTop;
    JLabel labelBottom;
    String messageTop = "";
    String messageBottom = "";
    JButton red;
    JButton green;
    JButton yellow;
    JButton blue;
    public final String letters= "RGBY";
    public JLabel labelDisplay;


//constructor?
    public SimonGame1()
    {


        super("Simon Game!");
                labelDisplay = new JLabel ("");
        setLayout(new BorderLayout());
        red = new JButton();
                green = new JButton();
                blue = new JButton();
                yellow = new JButton();
        labelTop = new JLabel("");
                //getRandomLetter();
        labelBottom = new JLabel("");
                //System.out.print (randomLetters);
                rand = new SecureRandom();


        numberButtons = new JButton[4];
        numberButtonPanel = new JPanel();
        numberButtonPanel.setLayout(new GridLayout(3,3));


        for(int i = 0; i < 0; i++)
        {
                    numberButtons[i] = new JButton();
                    numberButtonPanel.add(numberButtons[i]);
                    numberButtons[i].addActionListener(this);
        }
        numberButtonPanel.add(red);
        red.setBackground(Color.red);
        red.addActionListener(this);

                numberButtonPanel.add(blue);
                blue.setBackground(Color.blue);
                blue.addActionListener(this);

                numberButtonPanel.add(yellow);
                yellow.setBackground (Color.yellow);
                yellow.addActionListener(this);

                numberButtonPanel.add (green);
                green.setBackground (Color.green);
                green.addActionListener(this);

        add(labelTop, BorderLayout.NORTH);
        add(labelBottom, BorderLayout.SOUTH);

        add(numberButtonPanel, BorderLayout.CENTER);


                //if (messageTop = messageBottom)


}
// TODO code application logic here

    @Override
    public void actionPerformed(ActionEvent e) 
    {
                rand = new SecureRandom();

                randomLetters+= getRandomLetter();
                labelTop.setText (randomLetters);
                labelBottom.setText (letters);

                System.out.println(e.getID());
        if(e.getSource() == red)
        {
                    System.out.println("R");
        }
                else if (e.getSource()==blue)
                {
                    System.out.println ("B");
                }
                else if (e.getSource()==yellow)
                {
                    System.out.println ("Y");
                }
                else if (e.getSource()==green)
                {
                    System.out.println ("G");
                }

        }


         public char getRandomLetter()
         {

             char randChar = letters.charAt(rand.nextInt (4));
             return randChar;
         }
}
为什么这一点落后了?如果我点击红色按钮,它不会显示任何内容,但如果我点击红色按钮后的蓝色按钮,它最终会打印“R”

labelBottom.setText (messageBottom);
            **//WHY IS IT ONE LETTER BEHIND?**
            System.out.println(e.getID());
    if(e.getSource() == red)
    {
                messageBottom += "R";
                //System.out.println("R");
    }
            else if (e.getSource()==blue)
            {
                messageBottom += "B";
                //System.out.println ("B");
            }
            else if (e.getSource()==yellow)
            {
                messageBottom += "Y";
                //System.out.println ("Y");
            }
            else if (e.getSource()==green)
            {
                messageBottom += "G";
                //System.out.println ("G");
            }

当你初始化你的标签,在你把它添加到面板之前,我会用你需要的字母生成标签,并在那里设置标签的文本。这样,当您添加它时,您肯定会在其中包含字符。现在,您仅在调用actionPerformed方法时设置labelTop的文本,该方法仅在按下按钮时调用

所以它应该看起来像:

public SimonGame1() {
     //....

     rand = new SecureRandom();
     labelTop = new JLabel( "" );

     //initialize with 3
     for(int i = 0; i < 3; i++)
     {
         randomLetters += getRandomLetter();
     } 
     labelTop.setText( randomLetters );

     //...

     add(labelTop, BorderLayout.NORTH);

}

提示:您希望我们花时间帮助您。所以请你尽可能地简单;首先,花几分钟来正确格式化/缩进源代码;而不是我们身上很难读懂的乱七八糟!然后我把你的描述读了三遍,我仍然不明白你真正的问题在哪里。试着用简单的句子,甚至可能是你想看的序列的简短描述。。。当你初始化你的标签时,在你将它添加到面板之前,我会用你需要的字母生成标签,并在那里设置标签的文本。这样,当您添加它时,您肯定会在其中包含字符。现在,您仅在调用actionPerformed方法时设置labelTop的文本,该方法仅在按下按钮时调用。@Brittni77没问题!就在不久前我开始学习编程的时候,所以继续学习吧。编程需要很大的热情和动力来保持对它的兴趣,但在我看来完全值得。@Brittni77仅供记录:当你开始在这个网站时,有很多关于如何/问什么的好文档。但是太多的新手来到这里,却忽视了这一切。因此,在旁观者眼里,这里的“粗鲁”是非常明显的。奥林-再次感谢。如果很难阅读,我道歉。有时候,当你在争先恐后地寻求帮助时,很难弄清楚如何把一切都弄清楚。我希望我能为你做点什么花时间帮我。太好了。。。你花了时间去调查那件事!我盯着它看了一会儿,但想不出来。这就是stuid的事情,当一个人太渴望获得达到每日上限所需的其他选票时。。。有时人会被蒙蔽。@GhostCat哈哈,我听到了。有时候你只需要休息一下:)是的,很好。现在已经是晚上9点了,真的是时候停止名誉工作了;-)
public SimonGame1() {
     //....

     rand = new SecureRandom();
     labelTop = new JLabel( "" );

     //initialize with 3
     for(int i = 0; i < 3; i++)
     {
         randomLetters += getRandomLetter();
     } 
     labelTop.setText( randomLetters );

     //...

     add(labelTop, BorderLayout.NORTH);

}
for(int i = 0; i < 0; i++)
{
       numberButtons[i] = new JButton();
       numberButtonPanel.add(numberButtons[i]);
       numberButtons[i].addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{

    if(e.getSource() == red)
    {
            messageBottom += "R";
            //System.out.println("R");
    }
    else if (e.getSource()==blue)
    {
         messageBottom += "B";
         //System.out.println ("B");
    }
    else if (e.getSource()==yellow)
    {
        messageBottom += "Y";
        //System.out.println ("Y");
    }
    else if (e.getSource()==green)
    {
        messageBottom += "G";
        //System.out.println ("G");
    }

    labelBottom.setText (messageBottom);
}