我想创建一个可由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);
}
}
答案 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)如果您决定实施失败(例如,经过多次猜测后),也请在此处添加支票。如果您需要任何其他游戏逻辑功能,您也可以在此处添加它。