Jeu de pendu

Soyez le premier à donner votre avis sur cette source.

Vue 19 767 fois - Téléchargée 1 703 fois

Description

#####Appliquette de jeu de pendu#####
    • Sous forme de jar file
    • Gère que des dictionnaires de 100 mots (voir la méthode de lecture, qui est certainement améliorable), on ne peut pas encore rajouter de dictionnaire, la combobox est codé en dur, mais c'est réalisable.
    • Affichage du Score, mais pas d'enregistrement ni de top 10.
    • Nombre de coups codé en dur
    • En swing : ne marche pas avec la jvm de Microsoft.


#####Infos Supplémentaires#####
    • Taille de l'appliquette : 500*100 pixels
    • Les dictionnaires sont intégrés au jar file (sinon j'avais une erreur de sécurité)
    • Couleur de fond : #eeeeee


#####Pour tester l'appliquette#####
http://www.planetgraff.com/pendu.htm

Source / Exemple :


/*

  • Cree le 17/12/2007 a 18:05
  • /
package pendu; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JMenuBar; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; /**
  • @author Mr-Hide
  • /
public class Jeu extends JApplet implements ActionListener { //instancie les éléments graphiques et autres private JButton nouveau = new JButton("Nouveau"); private JTextField entree = new JTextField(2); private JButton ok = new JButton("Ok"); private JButton trouver = new JButton("Trouve !"); private int nombreCoup = 0; private int score = 0; private JLabel coups = new JLabel("coups restants :"); private String mot = null; private JLabel devines = new JLabel("Faites Nouveau"); private JTextField finale = new JTextField(5); private String lettres = ""; private String level = null; static final String[] NIVEAUX = {"facile", "moyen", "difficile", "tremulous"}; private JComboBox niveau = new JComboBox(NIVEAUX); /**
  • @Override initialisation de l'applet
  • /
public void init() { //Barre menu + action listener sur les differents boutons JMenuBar menu = new JMenuBar(); JButton aide = new JButton("Aide"); JButton propos = new JButton("A Propos"); aide.addActionListener(this); propos.addActionListener(this); menu.add(nouveau); menu.add(aide); menu.add(propos); menu.add(niveau); nouveau.addActionListener(this); trouver.addActionListener(this); JLabel lettre = new JLabel("Entrez une lettre"); ok.setEnabled(false); ok.addActionListener(this); entree.setEditable(false); finale.setText("mot final"); //Disposition avec GridLayout this.setLayout(new GridLayout(3, 1, 1, 1)); this.add(menu); JPanel panneau = new JPanel(); panneau.add(lettre); panneau.add(entree); panneau.add(devines); panneau.add(ok); panneau.add(trouver); this.add(panneau); this.add(coups); } public void actionPerformed(ActionEvent e) { //Le listener, gere aide et a propos, et regarde le score JButton bouton_clique = (JButton) e.getSource(); if(bouton_clique.getText().equals("Nouveau")){ start(); } else if(bouton_clique.getText().equals("Aide")){ JOptionPane.showMessageDialog(null, "Jeu du Pendu,\n entrez une lettre pour resoudre le mot cache,\n il n'y a pas d'accents", "Aide", JOptionPane.QUESTION_MESSAGE); } else if(bouton_clique.getText().equals("A Propos")){ JOptionPane.showMessageDialog(null, "<html>Jeu du Pendu,<br /> crée par <bold>Mr-Hide</bold> en exclusivitée pour la <a href=\"http://naxisoft.tuxfamily.org\">Naxisoft</a>", "Jeu de Pendu", JOptionPane.INFORMATION_MESSAGE); } else if(bouton_clique.getText().equals("Ok")){ if(!entree.getText().isEmpty() && entree.getText().length()==1 && nombreCoup!=0){ lettres = lettres+entree.getText(); String sauvegarde = devines.getText(); String txt2 = convert(mot, "[azertyuiopqsdfghjklmwxcvbn&&[^"+lettres+"]]", "_ "); devines.setText(txt2); entree.setText(""); if(sauvegarde.equals(devines.getText())){ nombreCoup = nombreCoup-1; coups.setText("coups restants :"+nombreCoup+" # score :"+score); } Pattern win = Pattern.compile("_"); Matcher match = win.matcher(devines.getText()); if(!match.find()){ JOptionPane.showMessageDialog(null, "GAGNÉ", "gagné", JOptionPane.PLAIN_MESSAGE); desactive(); score++; } if(nombreCoup==0){ JOptionPane.showMessageDialog(null, "LOOSER", "perdu", JOptionPane.PLAIN_MESSAGE); desactive(); score--; } } else if(entree.getText().length()!=1){ JOptionPane.showMessageDialog(null, "erreur, metez UNE lettre dans la boite", "erreur", JOptionPane.ERROR_MESSAGE); } else{ JOptionPane.showMessageDialog(null, "LOOSER", "perdu", JOptionPane.PLAIN_MESSAGE); desactive(); score--; } } else if(bouton_clique.getText().equals("Trouve !")){ String txt = JOptionPane.showInputDialog("Indiquez la valeur trouvée :"); if(txt.equals(mot)){ JOptionPane.showMessageDialog(null, "GAGNÉ", "gagné", JOptionPane.PLAIN_MESSAGE); desactive(); score++; } else{ JOptionPane.showMessageDialog(null, "Pas exactement", "Perdu", JOptionPane.PLAIN_MESSAGE); nombreCoup = 0; coups.setText("coups restants :"+nombreCoup+" # score :"+score); desactive(); score--; } } } private void desactive(){ entree.setEditable(false); ok.setEnabled(false); trouver.setEnabled(false); } private String convert(String aConvert, String regex, String replace) { //convertie le mot aConvert en replace grace a regex Pattern pattern = Pattern.compile(regex); Matcher match = pattern.matcher(aConvert); StringBuffer sb = new StringBuffer(); String trouve = null; boolean occurence = match.find(); while(occurence){ match.appendReplacement(sb, replace); occurence = match.find(); } match.appendTail(sb); trouve = sb.toString(); return trouve; } public void start(){ //lance la partie ok.setEnabled(true); //active les éléments graphiques trouver.setEnabled(true); entree.setEditable(true); entree.setText(""); level = this.niveau.getSelectedItem().toString(); //lis le niveau selectionne mot = nouveauMot(); //prend un mot dans le niveau selectionne devines.setText(convert(mot, "[azertyuiopqsdfghjklmwxcvbn123456789-]", "_ ")); //convertie le mot en ''_'' nombreCoup=6; //nombre de coup de la partie lettres = ""; //lettres entrée par le joueur coups.setText("coups restants :"+nombreCoup+" # score :"+score); //label affichant le nombre de coups restants et le score } private String nouveauMot() { //Lis les defferents dictionnaire, selectionne une ligne au hazard grace a Math.random et revoie le mot correspondant BufferedReader stream = null; String nouveauMot = null; //bloc try/catch pour les differentes erreurs de lecture possible try { Class classe = getClass(); InputStream dictionnaire = classe.getResourceAsStream(level+".dico"); stream = new BufferedReader(new InputStreamReader(dictionnaire)); int ligne = (int)(1+(Math.random()*100)); for(int i=0 ; i<=ligne ; i++){ nouveauMot = stream.readLine(); } } catch (FileNotFoundException ex) { Logger.getLogger(Jeu.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex){ Logger.getLogger(Jeu.class.getName()).log(Level.SEVERE, null, ex); } return nouveauMot; } }

Conclusion :


Le "À Propos" le jeu était crée pour un groupe de développeurs libre.

Si vous voyez une amélioration, faites m'en profiter, j'ai commencé le java en amateur il y a peu de temps et c'est l'un de mes premiers projets ;)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.