Вот краткое изложение программы:

  1. Сделано три JLables.
  2. Соответствующие меткам сделаны три кнопки.
  3. При нажатии кнопки вызывается генератор случайных чисел, который выбирает число от 0 до 9.
  4. В зависимости от того, какая кнопка нажата, соответствующий JLabel изменяется на созданный номер.
  5. Когда все три числа (на каждой метке) совпадают, основная метка автоматически меняется на «Вы выигрываете!».

Номер 5 - это часть, с которой у меня проблемы. Кажется, я не могу сравнить или сказать, когда все трое одинаковы. Я был бы рад, если бы кто-нибудь мог указать мне правильное направление или оказать какую-либо помощь.

Вот код для слушателя действий

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

public class SlotMachinePanel extends JPanel
{

private JRadioButton button1, button2, button3;
private JLabel instr, first, second, third;
private int check1, check2, check3;

//-----------------------------------------------------------------
//  Constructor: Sets up the GUI.
//-----------------------------------------------------------------
public SlotMachinePanel()
{
  // First Panel
  instr = new JLabel ("Please spin a wheel");

  JPanel one = new JPanel();
  one.setPreferredSize (new Dimension(200,50));
  one.setBackground(Color.green);
  one.add(instr);

  // Second Panel
  button1 = new JRadioButton("Spin me!",false);
  first = new JLabel ("1");

  JPanel two = new JPanel();
  two.setPreferredSize (new Dimension(200,50));
  two.setBackground(Color.cyan);
  two.add(first);
  two.add(button1);

  // Third Panel
  button2 = new JRadioButton("Spin me!",false);
  second = new JLabel ("2");

  JPanel three = new JPanel();
  three.setPreferredSize (new Dimension(200,50));
  three.setBackground(Color.green);
  three.add(second);
  three.add(button2);


  // Fourth Panel
  button3 = new JRadioButton("Spin me!",false);
  third = new JLabel ("3");

  JPanel four = new JPanel();
  four.setPreferredSize (new Dimension(200,50));
  four.setBackground(Color.cyan);
  four.add(third);
  four.add(button3);


  ButtonGroup group = new ButtonGroup();
  group.add(button1);
  group.add(button2);
  group.add(button3);

  button1.addActionListener(new ButtonListener());
  button2.addActionListener(new ButtonListener());
  button3.addActionListener(new ButtonListener());

  add(one);
  add(two);
  add(three);
  add(four);

  setPreferredSize(new Dimension(200, 210));
  setBackground(Color.green);
  }

  //*****************************************************************
  // listener for button pushes
  //*****************************************************************
  private class ButtonListener implements ActionListener
  {

  //--------------------------------------------------------------
  //
  //--------------------------------------------------------------
  public void actionPerformed(ActionEvent event)
  {
    int num;

    Random generator1 = new Random();
    num = generator1.nextInt(9);

    Object source = event.getSource();

    if(source == button1){
      check1 = num;
      first.setText(Integer.toString(num));
    }


    if(source == button2){
      check2 = num;
      second.setText(Integer.toString(num));
    }


    if(source == button3){
      check3 = num;
      third.setText(Integer.toString(num));
    }



    if((check1 == check2) && (check2 == check3)){
       instr.setText("You Win");
   }
  }
 }
}

Его запуск с использованием этого

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

public class SlotMachine
{
//-----------------------------------------------------------------
//  Creates the main program frame.
//-----------------------------------------------------------------
public static void main(String[] args)
{


  JFrame frame = new JFrame("Slot Machine");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  frame.getContentPane().add(new SlotMachinePanel());

  frame.pack();
  frame.setVisible(true);
 }
}
0
Lenny 8 Мар 2015 в 23:07

3 ответа

Лучший ответ

Мне кажется, работает ...

Я только что скомпилировал и запустил код и когда все три имеют одинаковые номера, это в случае успеха:

if((check1 == check2) && (check2 == check3)){

И jlabel instr показывает сообщение :

You Win

Если вы хотите добавить еще одно сообщение, в котором не все три одинаковых , используйте следующий код

    if((check1 == check2) && (check2 == check3)){
       instr.setText("You Win");
   }
   else {
           instr.setText("You Did Not Win Yet");
   }

Орелсе, в чем именно проблема?

0
adrCoder 8 Мар 2015 в 20:23

Есть 2 способа проверить, выиграл ли игрок.

Первый способ:

Убедитесь, что текст на всех трех этикетках одинаков.

if (label1.getText().equals(label2.getText()) && label2.getText().equals(label3.getText()))
    instr.setText("Win!");

Вы можете поместить указанные выше коды в прослушиватель, нажав кнопку для генерации случайного числа. Таким образом, каждое нажатие на кнопки проверяет выигрыш.

Второй способ:

Каждый раз, когда генерируется случайное число, вы можете сохранить это число в 3 int переменных. Сравните переменные int вместо текста трех ярлыков.

if ((val1 == val2) && (val2 == val3))
    instr.setText("Win");
0
user3437460 8 Мар 2015 в 20:30

Вы можете сделать что-то вроде этого:

if (label1.text.equals(l2.text) && label1.text.equals(l3.text)) doSomething();
0
neofu 8 Мар 2015 в 20:15