2016-12-04 10 views
-2

6 개의 이미지를 사용하여 게임 진행 상황을 보여주는 GUI로 아주 간단한 행맨 프로그램을 만들고 싶습니다. "Hello"라는 단어를 하드 코딩하고 각 실수에 대해 사용자가 이미지를 변경하려고합니다. (총 6 개의 프로그레시브 이미지).Java에서 매우 간단한 행맨 프로그램

나는 Netbeans에서 Swing 라이브러리를 사용하여 GUI를 만들었지 만 실제 코드를 어떻게 진행할 수 있는지에 관해서는 난처한 편입니다. 포인터가 있습니까?

import javax.swing.JOptionPane; 
import java.util.Scanner; 
import java.util.Random; 
import java.io.*; 


/* 
    * To change this license header, choose License Headers in Project    
Properties. 

* To change this template file, choose Tools | Templates 
    * and open the template in the editor. 
    */ 

/** 
    * 
    * @author ruzni 
    */ 
public class GuessTheWord extends javax.swing.JPanel { 

    /** 
     * Creates new form GuessTheWord 
     */ 
    public GuessTheWord() { 
     initComponents(); 
    } 

    /** 
* 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() { 

    char0 = new javax.swing.JLabel(); 
    char1 = new javax.swing.JLabel(); 
    char2 = new javax.swing.JLabel(); 
    char3 = new javax.swing.JLabel(); 
    char4 = new javax.swing.JLabel(); 
    char5 = new javax.swing.JLabel(); 
    aLetter = new javax.swing.JTextField(); 
    TryLetter = new javax.swing.JButton(); 
    Img = new javax.swing.JButton(); 

    char0.setText("X"); 

    char1.setText("X"); 

    char2.setText("X"); 

    char3.setText("X"); 

    char4.setText("X"); 

    char5.setText("X"); 

    aLetter.setText("e"); 
    aLetter.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      aLetterActionPerformed(evt); 
     } 
    }); 

    TryLetter.setText("TryLetter"); 
    TryLetter.addMouseListener(new java.awt.event.MouseAdapter() { 
     public void mouseClicked(java.awt.event.MouseEvent evt) { 
      TryLetterMouseClicked(evt); 
     } 
    }); 

    Img.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img000.png"))); // NOI18N 
    Img.setText("jButton3"); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); 
    this.setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGap(20, 20, 20) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addComponent(TryLetter) 
       .addComponent(aLetter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGroup(layout.createSequentialGroup() 
        .addComponent(char0) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addComponent(char1) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addComponent(char2) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addComponent(char3) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addComponent(char4) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addComponent(char5))) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 62, Short.MAX_VALUE) 
      .addComponent(Img, javax.swing.GroupLayout.PREFERRED_SIZE, 219, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addGap(21, 21, 21)) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addGroup(layout.createSequentialGroup() 
        .addGap(21, 21, 21) 
        .addComponent(aLetter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addGap(26, 26, 26) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
         .addComponent(char0) 
         .addComponent(char1) 
         .addComponent(char2) 
         .addComponent(char3) 
         .addComponent(char4) 
         .addComponent(char5)) 
        .addGap(71, 71, 71) 
        .addComponent(TryLetter)) 
       .addGroup(layout.createSequentialGroup() 
        .addGap(29, 29, 29) 
        .addComponent(Img, javax.swing.GroupLayout.PREFERRED_SIZE, 265, javax.swing.GroupLayout.PREFERRED_SIZE))) 
      .addContainerGap(36, Short.MAX_VALUE)) 
    ); 
}// </editor-fold>       

private void aLetterActionPerformed(java.awt.event.ActionEvent evt) {           
//GEN-FIRST:event_guessActionPerformed 
}          

private void TryLetterMouseClicked(java.awt.event.MouseEvent evt) {          

}          



// Variables declaration - do not modify      
private javax.swing.JButton Img; 
private javax.swing.JButton TryLetter; 
private javax.swing.JTextField aLetter; 
private javax.swing.JLabel char0; 
private javax.swing.JLabel char1; 
private javax.swing.JLabel char2; 
private javax.swing.JLabel char3; 
private javax.swing.JLabel char4; 
private javax.swing.JLabel char5; 
// End of variables declaration     

}는 배경 코드가 아닌 보이는 부분과 함께 시작하는 데 필요한 모든

+0

다음은 포인터입니다. 정확히 반대입니다. 텍스트를 사용하여 명령 줄에서 개체 모델을 구동 할 때 원하는대로 정확하게 동작하는 개체 모델이있을 때까지 UI를 잊어 버리십시오. 일단 당신이 그것을 가지고 당신은 안전하게 스윙을 진행할 수 있습니다. – duffymo

답변

0

첫째.

예를 들어 행맨 (Hangman)이라는 클래스를 만들 수 있습니다.이 클래스는 진행 상태를 변경하는 방법 (실수 추가)과 현재 상태를 그릴 이미지를 제공합니다.

의사 코드처럼 : 당신이 당신의 교수형 집행 클래스를 가지고 이제

public class Hangman 
{ 
    private int mistakesDone; 

    private HashMap<Integer, Image> progressImages; 

    public Hangman() 
    { 
     mistakesDone = 0; 
     progressImages = new HashMap<Integer, Image>(); 

     for(int i = 0; i < 7;i++) 
      progressImages.put(i, new ImageIcon(new URL("hangman_" + i)).getImage()); 
    } 

    public Image getCurrentImage() 
    { 
     return proressImages.get(mistakesDone); 
    } 

    public void mistakeDone() 
    { 
     mistakesDone++; 
    } 

    public int getMistakesDone() 
    { 
     return mistakesDone; 
    } 

    public void resetMistakes() 
    { 
     mistakesDone = 0; 
    } 
} 

, 당신은 당신의 메인 게임 클래스에서의 객체를 생성 할 필요가 또는 당신은 그것을 그러나 부른다. 그릴 때 객체에 현재 이미지를 가져 오도록 요청할 수 있습니다. 기억을 실수를 업데이 트하기 위해 완료!

짐작할 부분의 기본 코드와 똑같이하는 것이 좋습니다. (아웃소싱은 객체 지향 언어에서 아주 좋은 것입니다.)

일이 잘 모르겠다면, 게시물에 댓글을 달아주십시오.

+0

감사합니다! 나는 그것을 처리 할 수 ​​있었다 :) –