Member 13743392 Ответов: 0

Как показать первое и последнее слово в 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);

0 Ответов