在我的刽子手游戏中坚持使用userInput(Java)

时间:2016-05-23 11:28:27

标签: java

我想创建一个可由2名玩家玩的刽子手游戏。玩家1给出了另一个玩家需要猜测的词。玩家2获得了无限的尝试。

我的问题是我需要用完整的词来代替字母。我希望在我的游戏中有一个功能,玩家2可以通过输入字母来查询单词。我知道我需要使用StringBuffer让它工作,但我不知道我需要怎么做。

我是Java的新手,我总是喜欢学习!

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

public class Hangman {
    public static void main(String[] args) {

        JFrame frame = new JFrame("Hangman");
        frame.setLayout(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBounds(50,50,800,600);


        //OBJECTS
        JButton start = new JButton("START");
        start.setBounds(140,80,110,30);
        frame.getContentPane().add(start);
        frame.repaint();

        JButton guess = new JButton("GUESS");
        guess.setBounds(280,80,110,30);
        frame.getContentPane().add(guess);
        frame.repaint();


        start.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                String tip = JOptionPane.showInputDialog("Give a tip for the user.");

                JLabel givenTip = new JLabel(tip);
                givenTip.setBounds(50, 300, 300, 40);
                frame.getContentPane().add(givenTip);
                frame.repaint();

                JButton buttons = new JButton();

                String word = JOptionPane.showInputDialog("What is the word?");

                for (int i = 0; i < word.length(); i++) {

                    buttons = new JButton("___");
                    buttons.setBounds(50 + (i * 80), 350, 60, 40);

                    frame.getContentPane().add(buttons);
                    frame.repaint();
                }

                guess.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                //I think that I need to add this function here.
                String inputUser = JOptionPane.showInputDialog("Give a letter.");

                if (word.equals(inputUser)) {


                        JOptionPane.showMessageDialog(null,"This is right!");

                        JLabel won = new JLabel("You won the game!");
                        won.setBounds(50, 400, 110, 40);
                        frame.getContentPane().add(won);


                        JLabel restart = new JLabel("Restart the game to play again.");
                        restart.setBounds(50, 500, 250, 40);
                        frame.getContentPane().add(restart);


                        JButton correctInput = new JButton(inputUser);
                        correctInput.setBounds(210, 400, 300, 40);
                        frame.getContentPane().add(correctInput);
                        frame.repaint();
                    }
                    else
                    {
                        JOptionPane.showMessageDialog(null,"This is not right.");


                    }



            }

        });





            }
        });

        frame.setVisible(true);

    }

}

2 个答案:

答案 0 :(得分:0)

使用if (word.equals(inputUser)) {您只是检查输入是否是完整的单词而不仅仅是一个字母。

char[] charArray = inputUser.toCharArray();
if (charArray.length == 1) {
   //checks if the input is only one character
   //now you can check if the word contains this letter
   // and find the buttons with '__' and replace them with the letter
}

答案 1 :(得分:0)

你可以先保留一个版本的player1的单词,但由下划线(_)组成,因此在猜测时更容易在正确的位置添加字母,并且更好地通过播放器2进行可视化。

然后你可以为player2添加一个按钮来进行猜测,并且在该按钮的监听器方法中只需执行(通过方法调用)通常的检查,如下所示:

1)猜猜字母是玩家1的一部分吗?如果是这样,将它添加到player2的单词中的正确位置(在player1的单词中找到位置)

2)player1的单词与player2的相同?然后通知player2他赢了

3)如果您决定实施失败(例如,经过多次猜测后),也请在此处添加支票。如果您需要任何其他游戏逻辑功能,您也可以在此处添加它。