Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 若单词中包含字母,那个么在刽子手游戏中如何填写字母到空格?_Java_Jframe_Jlabel_Jtextfield - Fatal编程技术网

Java 若单词中包含字母,那个么在刽子手游戏中如何填写字母到空格?

Java 若单词中包含字母,那个么在刽子手游戏中如何填写字母到空格?,java,jframe,jlabel,jtextfield,Java,Jframe,Jlabel,Jtextfield,我正在做一个刽子手游戏,如果单词中包含了这个字母,我就很难把它填入正确的空格。例如: 字:你好 空格:uu_u_u_ 用户输入:e 空格:u e_u_ 这是我所有的代码,它不是一个SSCCE,但我已经将图片上传到了这篇文章。如果你有任何建议,请说。谢谢 package Game; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.a

我正在做一个刽子手游戏,如果单词中包含了这个字母,我就很难把它填入正确的空格。例如:

字:你好

空格:uu_u_u_

用户输入:e

空格:u e_u_

这是我所有的代码,它不是一个SSCCE,但我已经将图片上传到了这篇文章。如果你有任何建议,请说。谢谢

    package Game;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.*;

class GameStructure {
    private String []wordList = {"javatar","java","activity","alaska","appearance","article",
            "automobile","basket","birthday","canada","central","character","chicken","chosen",
            "cutting","daily","darkness","diagram","disappear","driving","effort","establish","exact",
            "establishment","fifteen","football","foreign","frequently","frighten","function","gradually",
            "hurried","identity","importance","impossible","invented","italian","journey","lincoln",
            "london","massage","minerals","outer","paint","particles","personal","physical","progress",
            "quarter","recognise","replace","rhythm","situation","slightly","steady","stepped",
            "strike","successful","sudden","terrible","traffic","unusual","volume","yesterday"};
   private JTextField tf;
   private JLabel jl2;
   static String letter;
   static int []length = new int[64];

   public void window() {
       JMenuBar menuBar = new JMenuBar();
       JMenu menu = new JMenu("File");
       menu.setMnemonic(KeyEvent.VK_A);
       menuBar.add(menu);
       JMenuItem menuItem = new JMenuItem("Developer", KeyEvent.VK_T);
    menu.add(menuItem);
    JMenuItem menuItem2 = new JMenuItem("Instructions", KeyEvent.VK_T);
    menu.add(menuItem2);
    JMenuItem menuItem3 = new JMenuItem("Restart", KeyEvent.VK_T);
    menu.add(menuItem3);
    JMenuItem menuItem4 = new JMenuItem("Exit", KeyEvent.VK_T);
    menu.add(menuItem4);

       ImageIcon ic = new ImageIcon("hangman2.png");
      JFrame gameFrame = new JFrame();
      JPanel bottomRight = new JPanel();
      JPanel bottomLeft = new JPanel();
      JPanel top = new JPanel();
      JPanel bottom = new JPanel();
      JPanel imgPane = new JPanel();
      JPanel panel1 = new JPanel();
      bottom.setLayout(new BoxLayout(bottom, BoxLayout.X_AXIS));
      imgPane.setLayout(new BorderLayout());
      panel1.setLayout(new BorderLayout());
      panel1.setOpaque(false);//!!
      top.setBorder(BorderFactory.createTitledBorder(""));
      bottom.setBorder(BorderFactory.createTitledBorder(""));
      tf = new JTextField(1);
      JLabel img = new JLabel(ic, JLabel.CENTER);
      JLabel jl = new JLabel("Enter a letter", JLabel.CENTER);
      jl2 = new JLabel("Letters used:  ", JLabel.CENTER);
      JLabel jl3 = new JLabel("__ ", JLabel.CENTER);
      jl.setFont(new Font("Rockwell", Font.PLAIN, 20));
      tf.setFont(new Font("Rockwell", Font.PLAIN, 20));
      jl2.setFont(new Font("Rockwell", Font.PLAIN, 20));
      imgPane.add(img);//center
      top.add(jl);//top center
      top.add(tf);//top center
      bottomLeft.add(jl2);//bottom left position
      bottomRight.add(jl3);//bottom right position
      bottom.add(bottomLeft);//bottom
      bottom.add(bottomRight);//bottom
      panel1.add(imgPane, BorderLayout.CENTER);//background image (center)
      panel1.add(top, BorderLayout.NORTH);//text field and jlabel (top)
      panel1.add(bottom, BorderLayout.SOUTH);// blank spaces and letters used (bottom)
      gameFrame.setJMenuBar(menuBar);
      gameFrame.setTitle("Hangman");
      gameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      gameFrame.setIconImage(
      new ImageIcon("hangmanIcon.png").getImage());
      gameFrame.setResizable(false);
      gameFrame.add(panel1);
      gameFrame.setSize(800, 500);
      gameFrame.setLocationRelativeTo(null);
      gameFrame.setVisible(true);

          int j = 0;
          for(j = 0; j<64; j++) {
             length[j] = wordList[j].length();//gets length of words in wordList
          }//end for
          int l = 0;
          String line = "";
          //create line first then put into .setText
          for(int m = 0; m<length[l]; m++) {
              line += "__ ";
              l++;
          }//end for
          jl3.setText(line);


          tf.addActionListener(new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {//when enter key pressed
              JTextField tf = (JTextField)e.getSource();
             letter = tf.getText();
              jl2.setText(jl2.getText() + letter + " ");//sets jlabel text to users entered letter

              int k = 0;
              for(k = 0; k<64;){
                  if(wordList[k].contains(letter)){
                      System.out.println(letter);
                     break;
                  }else{
                      System.out.println("letter not in word");
                      break;
                  }
              }

              }//end actionPerformed method
          });
      }//end window method
   }

public class GameMain {
   public static void main(String[] args) {
      GameStructure game = new GameStructure();
      game.window();
   }
}
打包游戏;
导入java.awt.*;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.event.KeyEvent;
导入javax.swing.*;
类博弈结构{
私有字符串[]单词列表={“javatar”、“java”、“活动”、“阿拉斯加”、“外观”、“文章”,
“汽车”、“篮子”、“生日”、“加拿大”、“中央”、“人物”、“鸡肉”、“精选”,
“切割”、“每日”、“黑暗”、“图表”、“消失”、“驱动”、“努力”、“建立”、“精确”,
“建立”、“十五”、“足球”、“外国”、“频繁”、“恐惧”、“功能”、“逐渐”,
“匆忙”、“身份”、“重要性”、“不可能”、“发明”、“意大利语”、“旅程”、“林肯”,
“伦敦”、“按摩”、“矿物”、“外部”、“油漆”、“颗粒”、“个人”、“身体”、“进步”,
“四分之一”,“识别”,“替换”,“节奏”,“情况”,“轻微”,“稳定”,“步伐”,
“罢工”、“成功”、“突然”、“可怕”、“交通”、“异常”、“数量”、“昨天”};
私人JTextField tf;
私人JLabel jl2;
静态字符串字母;
静态int[]长度=新int[64];
公共作废窗口(){
JMenuBar menuBar=新的JMenuBar();
JMenu菜单=新JMenu(“文件”);
menu.set助记符(KeyEvent.VK_A);
菜单栏。添加(菜单);
JMenuItem menuItem=新的JMenuItem(“开发者”,KeyEvent.VK_T);
menu.add(menuItem);
JMenuItem menuItem2=新的JMenuItem(“指令”,KeyEvent.VK_T);
menu.add(menuItem2);
JMenuItem menuItem3=新的JMenuItem(“Restart”,KeyEvent.VK_T);
menu.add(menuItem3);
JMenuItem menuItem4=新的JMenuItem(“Exit”,KeyEvent.VK_T);
menu.add(menuItem4);
ImageIcon ic=新的ImageIcon(“hangman2.png”);
JFrame gameFrame=新JFrame();
JPanel bottomRight=新的JPanel();
JPanel bottomLeft=新的JPanel();
JPanel top=新的JPanel();
JPanel bottom=新的JPanel();
JPanel imgPane=新的JPanel();
JPanel panel1=新的JPanel();
bottom.setLayout(新的BoxLayout(bottom,BoxLayout.X_轴));
setLayout(新的BorderLayout());
panel1.setLayout(新的BorderLayout());
面板1.设置不透明(假);/!!
top.setboorder(BorderFactory.createTitledBorder(“”);
bottom.setboorder(BorderFactory.createTitledBorder(“”);
tf=新的JTextField(1);
JLabel img=新JLabel(ic,JLabel.CENTER);
JLabel jl=新JLabel(“输入字母”,JLabel.CENTER);
jl2=新的JLabel(“使用的字母:”,JLabel.CENTER);
JLabel jl3=新的JLabel(“uuuu”,JLabel.CENTER);
jl.setFont(新字体(“Rockwell”,Font.PLAIN,20));
tf.setFont(新字体(“Rockwell”,Font.PLAIN,20));
jl2.setFont(新字体(“Rockwell”,Font.PLAIN,20));
imgPane.add(img);//中心
top.add(jl);//上止点
top.add(tf);//上止点
bottomLeft.add(jl2);//左下角位置
bottomRight.add(jl3);//右下角位置
bottom.add(bottomLeft);//bottom
bottom.add(bottomRight);//bottom
panel1.add(imgPane,BorderLayout.CENTER);//背景图像(CENTER)
panel1.add(顶部,BorderLayout.NORTH);//文本字段和jlabel(顶部)
panel1.add(底部,BorderLayout.SOUTH);//使用空格和字母(底部)
gameFrame.setJMenuBar(菜单栏);
游戏框架。设置标题(“刽子手”);
gameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gameFrame.setIconImage(
新的图像图标(“hangmanIcon.png”).getImage();
游戏框架。可设置大小(假);
游戏框架。添加(面板1);
游戏框架设置大小(800500);
gameFrame.setLocationRelativeTo(空);
gameFrame.setVisible(true);
int j=0;

对于(j=0;j那么,您可以使用
getText()
获取
JLabel
的文本,然后编辑
字符串
,然后使用
setText(String)
应用结果

你只需要计算正确的位置,你应该插入字母

char[] jlabelText = yourJLabel.getText().toCharArray();

for (int i = 0; i < word.length(); i++) {
    if (word.charAt(i) == userEnteredChar) {
        jlabelText[3 * i] = ' ';
        jlabelText[3 * i + 1] = userEnteredChar;
    }
}

yourJLabel.setText(String.valueOf(jlabelText));
char[]jlabelText=yourJLabel.getText().tocharray();
for(int i=0;i
那么,您可以使用
getText()
获取
JLabel
的文本,然后编辑
字符串,然后使用
setText(String)
应用结果

你只需要计算正确的位置,你应该插入字母

char[] jlabelText = yourJLabel.getText().toCharArray();

for (int i = 0; i < word.length(); i++) {
    if (word.charAt(i) == userEnteredChar) {
        jlabelText[3 * i] = ' ';
        jlabelText[3 * i + 1] = userEnteredChar;
    }
}

yourJLabel.setText(String.valueOf(jlabelText));
char[]jlabelText=yourJLabel.getText().tocharray();
for(int i=0;i
您现在得到的输出是什么?@mico目前,我能够确定单词是否包含用户输入的字母,但是这些都是输出到控制台的。现在我正在尝试如何填写用户输入到JLabelSibbo上相应空白处的字母。您已经读到了,它比我快关于答案,你有一个很有希望的建议。这个游戏是如何运作的?如果我按字母“k”你搜索单词列表中的每个单词来寻找那个字母?在一个普通的绞刑人游戏中,他只有一个单词。所以我假设他从这个列表中随机抓取了一个单词。你现在得到了什么输出?@mico目前我能够识别这个单词是否包含用户输入的字母,h