lundi 22 mai 2017

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. 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;
        }
    }

}




Aucun commentaire:

Enregistrer un commentaire