Как показать первое и последнее слово в readarray в игре
Привет, парень, я сделал игру hangman игрой в угадайку слов . а теперь я сам не могу правильно угадать слово, поэтому хочу добавить подсказку в игру, чтобы сделать ее легкой. я хочу показать первый и последний символ слова в игре .ниже приведен мой код arrray считывается из файла, который я сохранил.
String[] words =readArray("C:\\Users\\Muham\\OneDrive\\Desktop\\Word Game\\Hangman\\src\\words.txt");
я дал следующие слова в текстовом файле
МОБИЛЬНЫЙ
СТОЛ
МЫШЬ
КОШКА
ЖИР
ЛОЖЬ
КОЛЬЦО
СТУЛ
Что я уже пробовал:
import java.io.*; import java.awt.Color; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; import javax.swing.ImageIcon; import javax.swing.JOptionPane; import javax.swing.Timer; import sun.audio.AudioPlayer; import sun.audio.AudioStream; /** * * @author Muhammmad Kashif */ public class HangmanGameFrame extends javax.swing.JFrame { char c; String pass; String[] words =readArray("C:\\Users\\Muham\\OneDrive\\Desktop\\Word Game\\Hangman\\src\\words.txt"); Random rn = new Random(); int randomNumber = rn.nextInt(words.length); String answer; int numberofMisses=0; String rightorWrong; int count=30; Timer t1; ArrayList<String> letterArrayList=new ArrayList<String>(); int numberOfBlank; ImageIcon hang = new ImageIcon("C:\\Users\\Muham\\OneDrive\\Desktop\\Word Game\\Hangman\\src\\First.png"); ImageIcon hang1 = new ImageIcon("C:\\Users\\Muham\\OneDrive\\Desktop\\Word Game\\Hangman\\src\\Second.png"); ImageIcon hang2 = new ImageIcon("C:\\Users\\Muham\\OneDrive\\Desktop\\Word Game\\Hangman\\src\\Third.png"); ImageIcon hang3 = new ImageIcon("C:\\Users\\Muham\\OneDrive\\Desktop\\Word Game\\Hangman\\src\\Fourth.png"); ImageIcon hang4 = new ImageIcon("C:\\Users\\Muham\\OneDrive\\Desktop\\Word Game\\Hangman\\src\\Fifth.png"); ImageIcon hangdead = new ImageIcon("C:\\Users\\Muham\\OneDrive\\Desktop\\Word Game\\Hangman\\src\\First.png"); public HangmanGameFrame() { initComponents(); this.setTitle("Hangman Game"); getContentPane().setBackground(Color.WHITE); wrongwords.setText(null); answer = words[randomNumber]; answer = answer.toUpperCase(); StringBuilder tempDisplayAnswer= new StringBuilder(answer); for(int x=0; x<=answer.length()-1;x++) { tempDisplayAnswer.setCharAt(x,'-'); // converting all the input characters to -(label dash) String displayAnswer = tempDisplayAnswer.toString(); labelword.setText(displayAnswer); } hangman.setIcon(hang); tryagain1.setVisible(false); Dimension dim=Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation(dim.width/2-this.getSize().width/2,dim.height/2-this.getSize().height/2); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jPanel1 = new javax.swing.JPanel(); infoNOofMisses = new javax.swing.JLabel(); labelword = new javax.swing.JLabel(); jLabel1 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); wrongwords = new javax.swing.JTextArea(); tryagain1 = new javax.swing.JButton(); inputtext = new javax.swing.JTextField(); outputtext = new javax.swing.JTextField(); conform = new javax.swing.JButton(); hangman = new javax.swing.JLabel(); labOutputNoOfMisses = new javax.swing.JLabel(); time = new javax.swing.JLabel(); exit1 = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setBackground(new java.awt.Color(153, 51, 255)); jPanel1.setBackground(new java.awt.Color(255, 255, 255)); jPanel1.setLayout(null); infoNOofMisses.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N infoNOofMisses.setText("No. Of Misses:"); jPanel1.add(infoNOofMisses); infoNOofMisses.setBounds(10, 20, 170, 27); labelword.setFont(new java.awt.Font("Tahoma", 1, 70)); // NOI18N labelword.setForeground(new java.awt.Color(61, 211, 134)); labelword.setText("- - - "); jPanel1.add(labelword); labelword.setBounds(180, 50, 380, 70); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N jLabel1.setText("WRONG WORDS"); jPanel1.add(jLabel1); jLabel1.setBounds(470, 240, 197, 29); wrongwords.setEditable(false); wrongwords.setColumns(4); wrongwords.setFont(new java.awt.Font("Tahoma", 1, 48)); // NOI18N wrongwords.setForeground(new java.awt.Color(255, 51, 0)); wrongwords.setRows(2); wrongwords.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 8)); jScrollPane1.setViewportView(wrongwords); jPanel1.add(jScrollPane1); jScrollPane1.setBounds(390, 270, 355, 249); tryagain1.setBackground(new java.awt.Color(255, 255, 255)); tryagain1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N tryagain1.setText("NEXT WORD"); tryagain1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { tryagain1ActionPerformed(evt); } }); jPanel1.add(tryagain1); tryagain1.setBounds(480, 170, 186, 58); inputtext.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N inputtext.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { inputtextActionPerformed(evt); } }); inputtext.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { inputtextKeyTyped(evt); } }); jPanel1.add(inputtext); inputtext.setBounds(100, 200, 180, 37); outputtext.setEditable(false); outputtext.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N outputtext.setDisabledTextColor(new java.awt.Color(0, 0, 0)); jPanel1.add(outputtext); outputtext.setBounds(40, 280, 330, 43); conform.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N conform.setText("CONFORM"); conform.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { conformActionPerformed(evt); } }); jPanel1.add(conform); conform.setBounds(40, 410, 160, 60); hangman.setIcon(new javax.swing.ImageIcon("C:\\Users\\Muham\\OneDrive\\Desktop\\Word Game\\Hangman\\src\\First.png")); // NOI18N jPanel1.add(hangman); hangman.setBounds(760, 170, 300, 358); labOutputNoOfMisses.setFont(new java.awt.Font("Tahoma", 1, 36)); // NOI18N jPanel1.add(labOutputNoOfMisses); labOutputNoOfMisses.setBounds(190, 20, 122, 35); time.setFont(new java.awt.Font("Tahoma", 1, 40)); // NOI18N time.setForeground(new java.awt.Color(255, 0, 0)); jPanel1.add(time); time.setBounds(440, 20, 550, 90); exit1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N exit1.setText("EXIT"); exit1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exit1ActionPerformed(evt); } }); jPanel1.add(exit1); exit1.setBounds(220, 410, 154, 60); jLabel2.setIcon(new javax.swing.ImageIcon("C:\\Users\\Muham\\OneDrive\\Desktop\\Word Game\\Hangman\\src\\2d-game-background-11395_imgs_11395.jpg")); // NOI18N jPanel1.add(jLabel2); jLabel2.setBounds(0, 0, 1070, 560); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 1066, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 2, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 559, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 2, Short.MAX_VALUE)) ); pack(); }// </editor-fold> public static String[] readArray(String file){ //step 1: Count How many Lines // Step2: Create array and copy the elements in. int ctr=0; try{ Scanner s1=new Scanner(new File(file)); while(s1.hasNextLine()) { ctr++; s1.next(); } String[] words=new String[ctr]; Scanner s2 = new Scanner(new File(file)); for(int i=0;i<ctr;i++) { words[i]=s2.next(); } return words; } catch(FileNotFoundException e) { return null; } } static public int SortedLinearSearch(String [] A,String B) { for(int k=0;k<A.length;k++) { if(A[k].equals(B)) { return k; } } return -1; } private void conformActionPerformed(java.awt.event.ActionEvent evt) { numberOfBlank=(labelword.getText()).length(); String b=inputtext.getText(); for(int x=0;x<=answer.length()-1;x++){ //add char of the answer to "LetterArrayList" letterArrayList.add(String.valueOf(answer.charAt(x))); } String[] letter=new String[answer.length()]; for(int x=0;x<=answer.length()-1;x++) // Convert Array List To Array { letter[x]=letterArrayList.get(x); } if(numberofMisses<6)// error trapping for blank inputbox { if(wrongwords.getText().equals("")){ pass="yes"; } else{ pass="no"; } if(inputtext.getText().equals("")) { outputtext.setText("Please Give Me A Letter! "); } if( !inputtext.getText().equals("")){ for(int x=0;x<=(wrongwords.getText()).length()-1;x++) { char WrongLetter=(wrongwords.getText()).charAt(x); //determine wheather key is repeated or not if((inputtext.getText()).charAt(0) != WrongLetter){ pass="yes"; } else if((inputtext.getText()).charAt(0)== WrongLetter){ pass="no"; outputtext.setText("This Letter Is Already Used"); break; } } } if(pass=="yes"){ if(Character.isLetter(c)){ if(SortedLinearSearch(letter,b)== -1){ wrongwords.setText(wrongwords.getText()+ String.valueOf(inputtext.getText())+" "); //For Audios InputStream in; try{ in=new FileInputStream(new File("C:\\Users\\Muham\\OneDrive\\Desktop\\Word Game\\Hangman\\src\\beep-01a.wav")); AudioStream audios=new AudioStream(in); AudioPlayer.player.start(audios); } catch(Exception e) { JOptionPane.showMessageDialog(null,e); } /////////// for(int x=0;x<=wrongwords.getText().length()-1;x++) { if(Character.isLetter((wrongwords.getText()).charAt(x))){ numberofMisses++; break; } } } } } inputtext.setText(null); } //change image of Hangman if(numberofMisses == 1) { hangman.setIcon(hang1); } else if(numberofMisses == 2) { hangman.setIcon(hang2); } else if(numberofMisses == 3) { hangman.setIcon(hang3); } else if(numberofMisses == 4) { hangman.setIcon(hang4); } if(numberofMisses == 6) //loosing condition { hangman.setIcon(hangdead); outputtext.setText("You Lost !"); inputtext.setEnabled(false); conform.setEnabled(false); tryagain1.setVisible(true); } if(SortedLinearSearch(letter,b)!= -1){ StringBuilder tempWord=new StringBuilder(labelword.getText()); tempWord.setCharAt(SortedLinearSearch(letter, b),letter[SortedLinearSearch(letter, b)].charAt(0)); String displayAnswer=tempWord.toString(); labelword.setText(displayAnswer); //////audio InputStream in; try{ in=new FileInputStream(new File("C:\\Users\\Muham\\OneDrive\\Desktop\\Word Game\\Hangman\\src\\righty.wav")); AudioStream audios=new AudioStream(in); AudioPlayer.player.start(audios); } catch (Exception e){ JOptionPane.showMessageDialog(null,e); } /////////////////////////////////// } for(int x=0;x<=labelword.getText().length()-1;x++) { if(((labelword.getText()).charAt(x)) != '-'){ numberOfBlank--; //count number Of blanks in labelword } } if(numberOfBlank ==0){ conform.setEnabled(false);//if no label - player wins outputtext.setText("Hurray! You Won"); tryagain1.setVisible(true); InputStream in; try{ in=new FileInputStream(new File("C:\\Users\\Muham\\OneDrive\\Desktop\\Word Game\\Hangman\\src\\applause.wav")); AudioStream audios=new AudioStream(in); AudioPlayer.player.start(audios); } catch (Exception e){ JOptionPane.showMessageDialog(null,e); } /////////////////////////// } labOutputNoOfMisses.setText(String.valueOf(numberofMisses)); } private void inputtextKeyTyped(java.awt.event.KeyEvent evt) { if(numberofMisses<6){ c=evt.getKeyChar(); if(!(Character.isLetter(c))){ outputtext.setText("A Letter Please"); evt.consume(); inputtext.setText(""); } else{ if(inputtext.getText() !=null){ inputtext.setText(null); outputtext.setText(""); } if(Character.isLowerCase(c)){ evt.setKeyChar(Character.toUpperCase(c)); }} } } private void tryagain1ActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); final HangmanGameFrame a=new HangmanGameFrame();//this will refresh page a.setVisible(true); t1=new Timer(1000,new ActionListener() { @Override public void actionPerformed(ActionEvent e) { count--; if(count==0) { t1.stop(); JOptionPane.showMessageDialog(null,"OOPS! Times Up"); a.tryagain1.setVisible(true); } a.time.setText("Time Left : "+count+" Seconds"); } }); t1.start(); } private void exit1ActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); // TODO add your handling code here: } private void inputtextActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(HangmanGameFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(HangmanGameFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(HangmanGameFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(HangmanGameFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new HangmanGameFrame().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton conform; private javax.swing.JButton exit1; private javax.swing.JLabel hangman; private javax.swing.JLabel infoNOofMisses; private javax.swing.JTextField inputtext; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel labOutputNoOfMisses; private javax.swing.JLabel labelword; public javax.swing.JTextField outputtext; javax.swing.JLabel time; public javax.swing.JButton tryagain1; private javax.swing.JTextArea wrongwords; // End of variables declaration static class setVisible{ public setVisible(boolean b){ } } }
Richard MacCutchan
И вы хотите, чтобы мы проанализировали весь этот код и сказали вам, где ошибка?
Member 13743392
нет никакой ошибки в коде, программа просто работает идеально. просто хочу знать, как дать подсказки в этом коде, который показывает первый и последний символ из массива в графическом интерфейсе.
Richard MacCutchan
Затем, пожалуйста, удалите весь код, не связанный с вашим вопросом, и покажите нам, где именно вы хотите это сделать. Вы не можете ожидать, что люди будут проходить через весь этот код, пытаясь понять, где его изменить; мы никогда не видели его раньше и понятия не имеем, как он работает.
Member 13743392
public static String[] readArray(строковый файл){
//Шаг 1: подсчитайте, сколько строк
// Шаг 2: Создайте массив и скопируйте в него элементы.
int ctr=0;
пробовать{
Сканер s1=новый сканер(новый файл(файл));
в то время как(С1.hasNextLine())
{
CTR++;
С1.далее();
}
String[] words=новая строка[ctr];
Scanner s2 = новый сканер(новый файл(файл));
for(int i=0;i<ctr;i++)
{
слова[i]=s2.далее();
}
ответные слова;
}
catch(FileNotFoundException e)
{
возвращать null;
}
}
это массив чтения кода из файла word, теперь я должен показать первый и последний символ строки во всех раундах.
Richard MacCutchan
char firstChar = word.charAt(0);
char lastChar = word.charAt(word.length() - 1);