2010-09-11 3 views
0
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class guess extends JFrame implements ActionListener 
{ 
    JLabel title = new JLabel ("SAMPLE 1"); 
    JTextField txt1 = new JTextField (10); 
    JLabel direction = new JLabel ("GUESS A NUMBER BETWEEN 1 AND 100"); 
    JLabel status = new JLabel(); 
    JPanel pnl1 = new JPanel(); 
    JPanel pnl2 = new JPanel(); 
    JPanel pnl3 = new JPanel(); 

    public guess() 
    { 
     super ("guess the number"); 
     Container c = getContentPane(); 
     c.setLayout (new BorderLayout()); 
     txt1.addActionListener(this); 
     pnl2.setLayout (new BorderLayout()); 
     c.add(pnl1, BorderLayout.NORTH); 
     c.add(pnl2, BorderLayout.CENTER); 
     pnl1.add(title); 
     pnl2.add(direction, BorderLayout.NORTH); 
     pnl2.add(txt1, BorderLayout.CENTER); 
     pnl2.add(status, BorderLayout.SOUTH);  

     setVisible(true); 
     setSize(350,450); 
    } 


public void guess(int i) 
{ 
    super ("guess the number"); 
    Container c = getContentPane(); 
    c.setLayout (new BorderLayout()); 
    txt1.addActionListener(this); 
    pnl2.setLayout (new BorderLayout()); 
    c.add(pnl1, BorderLayout.NORTH); 
    c.add(pnl2, BorderLayout.CENTER); 
    pnl1.add(title); 
    pnl2.add(direction, BorderLayout.NORTH); 
    pnl2.add(txt1, BorderLayout.CENTER); 
    pnl2.add(status, BorderLayout.SOUTH);  

    setVisible(true); 
    setSize(350,450); 
} 

public static void main(String args[]) 
{ 
    guess start = new guess(); 
    start.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

public void actionPerformed(ActionEvent e) 
{ 
    int counter = 1; 
    int num = (int)(Math.random() * 100); 
    if (e.getSource()==txt1) 
    { 
     int a = Integer.parseInt(txt1.getText()); 
     while(a != num) 
     { 
      if(a < num) 
       int x = num - 10; 
       if(a >= x) 
       { 

       } 
     } 
    } 
} 
} 

voici mon code, mais mon problème pour moi est dans le actionPerformed, je ne sais pas quand mettre la int num = (int)(Math.random() * 100); parce que si je l'ai mis en dehors de la if(e.getSource) alors il sera toujours générer un nombre aléatoire Je pense, mais si à l'intérieur de mon nouveau problème est ce que si je réinitialise l'entrée une nouvelle valeur pour mon estimation sera le int num = (int)(Math.random() * 100); obtenir une nouvelle valeur?java deviner le nombre jeu

+0

Je ne comprends pas très bien votre question, en particulier cette partie: "et si je réinitialise la nouvelle valeur entrée pour mon estimation sera le num int int (int) (Math.random() * 100); obtenir un nouveau valeur?" Aussi, j'aimerais savoir comment vous aimeriez que votre programme fonctionne exactement. – Carlos

+0

Considérez également cette approche alternative utilisée dans un jeu de devinette de couleur, http://stackoverflow.com/questions/3072979 – trashgod

Répondre

0

Vous devez ajouter un bouton de démarrage et désactiver le champ de texte de saisie par défaut.
Lorsque vous cliquez sur le bouton de démarrage, le champ de texte de saisie peut être activé et un nombre aléatoire est généré pour ce tour de jeu.
Vous pouvez également désactiver le bouton de démarrage pendant la lecture du jeu.
Vous pouvez limiter le nombre de suppositions, après quoi le joueur perd le jeu, et le bouton de démarrage est activé et le champ de texte de saisie est désactivé, jusqu'à ce qu'une nouvelle partie soit lancée.

Questions connexes