简体   繁体   English

添加文本文件并从中随机获取字符串

[英]add text file and take string randomly from it

basically i have to add a textfile to my program and be able to take strings randomly from the text file so to do the other functions. 基本上,我必须向程序中添加一个文本文件,并且能够从文本文件中随机获取字符串,以便执行其他功能。 to be able to play the hangman game. 才能玩hang子手游戏。 anybody help would be very welcome. 任何人的帮助都会非常欢迎。 find my code below how to add to it.. 在下面的代码中找到我的代码。

public class Main extends javax.swing.JFrame {

    public ImageIcon imgs[];
    public JButton btns[];
    public String msgs[];
    public int ran;
    public int err;
    public String res[];

    public Main() {
        initComponents();
        imgs = new ImageIcon[6];
        btns = new JButton[27];
        msgs = new String[20];

        //Images of the young man hanged
        imgs[0] = new ImageIcon(getClass().getResource("/Hangnam/im1.jpg"));
        imgs[1] = new ImageIcon(getClass().getResource("/Hangnam/im2.jpg"));
        imgs[2] = new ImageIcon(getClass().getResource("/Hangnam/im3.jpg"));
        imgs[3] = new ImageIcon(getClass().getResource("/Hangnam/im4.jpg"));
        imgs[4] = new ImageIcon(getClass().getResource("/Hangnam/im5.jpg"));
        imgs[5] = new ImageIcon(getClass().getResource("/Hangnam/im6.jpg"));

        //Buttons for letters
        btns[1] = jButton2;
        btns[2] = jButton3;
        btns[3] = jButton4;
        btns[4] = jButton5;
        btns[5] = jButton6;
        btns[6] = jButton7;
        btns[7] = jButton8;
        btns[8] = jButton9;
        btns[9] = jButton10;
        btns[10] = jButton11;
        btns[11] = jButton12;
        btns[12] = jButton13;
        btns[13] = jButton14;
        btns[14] = jButton15;
        btns[15] = jButton16;
        btns[16] = jButton17;
        btns[17] = jButton18;
        btns[18] = jButton19;
        btns[19] = jButton20;
        btns[20] = jButton21;
        btns[21] = jButton22;
        btns[22] = jButton23;
        btns[23] = jButton24;
        btns[24] = jButton25;
        btns[25] = jButton26;
        btns[26] = jButton27;

        //words to guess
        msgs[0] = "understanding".toUpperCase();
        msgs[1] = "proliferation".toUpperCase();
        msgs[2] = "University".toUpperCase();
        msgs[3] = "Academic".toUpperCase();
        msgs[4] = "Atlas".toUpperCase();
        msgs[5] = "Tigres".toUpperCase();
        msgs[6] = "baby".toUpperCase();
        msgs[7] = "pumpy".toUpperCase();
        msgs[8] = "jump".toUpperCase();
        msgs[9] = "fun".toUpperCase();
        msgs[10] = "love".toUpperCase();
        msgs[11] = "something".toUpperCase();
        msgs[12] = "sometime".toUpperCase();
        msgs[13] = "mauritian".toUpperCase();
        msgs[14] = "lovers".toUpperCase();
        msgs[15] = "timetravel".toUpperCase();
        msgs[16] = "political".toUpperCase();
        msgs[17] = "psychologist".toUpperCase();
        msgs[18] = "rodrigues".toUpperCase();
        msgs[19] = "jackfruit".toUpperCase();


        //An event is assigned to each letter to check that it exists in the word to guess
        for (int i = 1; i < 27; i++) {
            btns[i].addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    checkLetter(e);
                }
            });
        }
        start();
    }

    //Function to start the game parameters or start a new game
    public void start() {
        //ERRORES EN 0
        err = 0;
        jButton1.setIcon(imgs[0]);
        jTextPane1.setText("");
        //To activate the letters on the board
        for (int i = 1; i < 27; i++) {
            btns[i].setEnabled(true);
        }
        //To generate a word randomly
        ran = 0 + (int) (Math.random() * ((msgs.length - 1) + 1));
        //SEPARATE THE MESSAGE BY WORDS
        String pal[] = msgs[ran].split(" ");
        res = new String[msgs[ran].length() + 1];
        int j = 0;
        // Will be the word that go under the letters as a separation_
        for (String pal1 : pal) {
            for (int i = 0; i < pal1.length(); i++) {
                jTextPane1.setText(jTextPane1.getText() + "_ ");
                res[j++] = "_";
            }
            jTextPane1.setText(jTextPane1.getText() + "\n");
            res[j++] = " ";
        }
    }

    //When pressing a letter, this will be searched if it belongs to the word, otherwise mark it as error
    public void checkLetter(ActionEvent e) {
        JButton bt = (JButton) e.getSource();
        char c[];
        //Look for the letter in the word after it has been pressed
        for (int i = 1; i < 27; i++) {
            if (bt == btns[i]) {
                //The key is initialized
                c = Character.toChars(64 + i);
                //Check if the letter is in the sentence
                boolean esta = false;
                for (int j = 0; j < msgs[ran].length(); j++) {
                    if (c[0] == msgs[ran].charAt(j)) {
                        res[j] = c[0] + "";
                        esta = true;
                    }
                }
                //IF THE LETTER IS IN THE MESSAGE IS SHOWN ON THE TEXTPANEL
                if (esta) {
                    jTextPane1.setText("");
                    for (String re : res) {
                        if (" ".equals(re)) {
                            jTextPane1.setText(jTextPane1.getText() + "\n");
                        } else {
                            jTextPane1.setText(jTextPane1.getText() + re + " ");
                        }
                    }
                    //Makes a check of the remaining letters and missing, in case there are no letters will be a winner
                    boolean gano = true;
                    for (String re : res) {
                        if (re.equals("_")) {
                            gano = false;
                            break;
                        }
                    }
                    //To be correct a message is displayed and the game is restarted
                    if (gano) {
                        JOptionPane.showMessageDialog(this, "Congratulation you won xD!!!");
                        start();
                        return;
                    }
                    //IF THE LETTER IS NOT IN THE MESSAGE, THE ERROR IS INCREASED AND THE IMAGE IS CHANGED
                } else {
                    jButton1.setIcon(imgs[++err]);
                    //IF THE 5 try ARE REACHED THEN THE GAME IS MISSED AND THE MESSAGE IS MADE:
                    if (err == 5) {
                        JOptionPane.showMessageDialog(this, "Sorry you lose"+"\n"+"Please Try Again, the answer is: \n" + msgs[ran]);
                        start();
                        return;
                    }
                }
                //This is the line that deactivates the letters after being used
                bt.setEnabled(false);
                break;
            }
        }

    }
}

Here's a simple program to get words from a random place in a text file: 这是一个简单的程序,可从文本文件中的随机位置获取单词:

public static void main(String[] args) {
    String fileName = "/Users/[YOUR_NAME]/Desktop/words.txt"; //change to location of file
    File wordList = new File(fileName);
    List<String> words = new ArrayList<>();
    Scanner reader = null;

    try {
        reader = new Scanner(wordList);
    } catch (FileNotFoundException e) {
        System.out.println("file \"" + fileName + "\" not found");
        System.exit(0);
    }

    while(reader.hasNextLine()) {
        String word = reader.nextLine();
        words.add(word);
    }

    int place = rand.nextInt(words.size());
    String s = words.get(place);
    System.out.println("Random word from file: " + s);
}

Just incorporate it into your code. 只需将其合并到您的代码中即可。 You may have to make some minor changes, but this will give you the answer. 您可能需要进行一些小的更改,但这将为您提供答案。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM