2012-10-08 3 views
0

В настоящее время я изучаю разработку GUI на Java, и я должен сделать игру из камня, бумаги, ножниц. Пока что я сделал сам GUI (уродливый, но все же графический интерфейс), но я не знаю, как «подключить» выбор, который вы делаете в if и else. Это то, что я до сих пор:Java GUI: Rock, scissor paper game

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

public class Oppgave extends JFrame implements ActionListener{ 

public JLabel title; 
public JButton button; 
public JList liste; 
public JList liste2; 

public Oppgave(){ 
    super("A game"); 
    setLayout(new BorderLayout()); 

    title = new JLabel("Rock, scissor, paper!"); 
    add(title, BorderLayout.NORTH); 
    title.setHorizontalAlignment(SwingConstants.CENTER); 

    String[] choice = {"Rock","scissor","paper"}; 
    liste = new JList(choice); 
    liste.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION); 
    add(liste, BorderLayout.WEST); 

    liste2 = new JList(choice); 
    liste2.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION); 
    add(liste2, BorderLayout.EAST); 

    button = new JButton("Play"); 
    add(button, BorderLayout.SOUTH); 

    button.addActionListener(this); 
} 

    public void actionPerformed(ActionEvent e){ 
    if(e.getSource().equals(button)){ 
     JOptionPane.showMessageDialog(null, "Player 1 chose: "+liste.getSelectedValue()); 
     JOptionPane.showMessageDialog(null, "Player 2 chose: "+liste2.getSelectedValue()); 
    } 

    } 
} 

Так что теперь я хочу сделать, если это и то еще, например, если игрок 1 улавливает рок, а затем проверить, что игрок 2 выбирает и отобразить победителя.

Как использовать выборки из JLists в операторах if/else?

+2

Скажет ли ваш выход правильную вещь? IE: Игрок 1 выбрал: Рок, если он действительно выбрал рок? Просто создайте строку и сравните ее. – Max

+0

Да, в диалоговых окнах отображаются правильные варианты. Я просто не знаю, как продолжить, не могли бы вы привести пример или что-то еще? – Misoxeny

+0

Спасибо за оба ответа. Они оба работали хорошо, я выбрал Макса, потому что было немного легче работать с таким новичком, как я. :) – Misoxeny

ответ

3

Вот мое понимание того, что вы должны попытаться сделать:

String player1Choice = liste.getSelectedValue() 
String player2Choice = liste2.getSelectedValue() 

if (player1Choice.equals(player2Choice) 
    System.out.println("Draw"); // Or whatever you want to output to, could be another jLabel 
else if(player1Choice.equals(rock) && player2Choice.equals(paper)) 
    System.out.println("Player 2 wins."); 

// And just keep adding on here..... 
+0

Вы были быстрее, я вам это даю. Но я набрал свой телефон. – Azulflame

+0

@azulflame Я бы ответил ранее, однако, я хотел проверить в комментариях, что он получил правильные значения;) – Max

+0

@azulflame У вас все еще есть верхняя часть от меня. – Max

2

Так у вас есть выход и не знаю, что делать? Пример кода вы можете использовать:

String p1 = ""; 
String p2 = ""; 
if(liste1.getSelectedValue().equals("rock")) 
{ 
    p1 = "rock"; 
} 
if(liste1.getSelectedValue().equals("paper")) 
{ 
    p1 = "paper"; 
} 
if(liste1.getSelectedValue().equals("scissors")) 
{ 
    p1 = "scissors"; 
} 

повторить для игрока 2, используя строку с именем p2. Тогда:

Boolean player2win = false; 
Boolean player1win = false; 
Boolean tie = false; 
if(p1.equals(p2)) 
{ 
    tie = true; 
} 
if(p1.equals("rock") && p2.equals("scissors")) 
{ 
    player1win = true; 
} 
if(p1.equals("paper") && p2.equals("rock")) 
{ 
    player1win = true; 
} 
if(p1.equals("scissors") && p2.equals("paper")) 
{ 
    player1win = true; 
} 
else 
{ 
    player2win = true; 
} 

Это должно работать