基本上我必须在我的程序中添加一个文本文件,并能够从文本文件中随机获取字符串,以便执行其他功能。能够玩刽子手游戏。任何人的帮助都会非常受欢迎。找到我的代码如何添加到它..
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;
}
}
}
}
答案 0 :(得分:0)
这是一个简单的程序,用于从文本文件中的随机位置获取单词:
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);
}
只需将其合并到您的代码中即可。您可能需要进行一些小的更改,但这会给您答案。