JEUX DEVINER LE MOT, POUR LES DÉBUTANTS EN JAVA.

Signaler
Messages postés
342
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
6 novembre 2012
-
Messages postés
50
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
1 juillet 2011
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49448-jeux-deviner-le-mot-pour-les-debutants-en-java

Messages postés
50
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
1 juillet 2011

La nouvelle version, V2.... (un de deux solution....)
//---------------------------------- V2 -------------------

import java.io.*;
import javax.swing.JOptionPane;
import java.util.Properties;

class Prop {

private String basePathProp=".\\lib.txt";
File fichier;
FileWriter ff;
private Properties properties = null;

public Prop(){
init();
try{
loadProperties(basePathProp);
}catch(Exception e){
JOptionPane.showMessageDialog(null,"erreur in loading the TXT file \n"+e.getMessage());}
}

private void init(){
fichier=new File(basePathProp);
if(!fichier.exists() || !fichier.canRead()){
try {
ff=new FileWriter(fichier);

ff.write("# 10 est le nombre des mots qui seront en services.\n");
ff.write("nbmot=10\n");

ff.write("\n #key(format numerique)=value\n");
ff.write("1=auxiliairement\n");
ff.write("2=avachie\n");
ff.write("3=avaler\n");
ff.write("4=avec\n");
ff.write("5=aventures\n");
ff.write("6=coing\n");
ff.write("7=colidacilles\n");
ff.write("8=collant\n");
ff.write("9=collectionneurs\n");
ff.write("10=crache\n");
} catch (Exception ex) {
JOptionPane.showMessageDialog(null,"erreur initialisation....\n"+ex.getMessage());
} finally {
try {
ff.close();
} catch (IOException ex) {
JOptionPane.showMessageDialog(null,"Erreur in Closing ... \n"+ex.getMessage());
}
}
}
}

private void loadProperties(String propertiesFileName) throws FileNotFoundException {
properties = new Properties();
FileInputStream fileInputStream = new FileInputStream(propertiesFileName);
try {
properties.load(fileInputStream);
} catch (IOException e) {
e.printStackTrace();}
finally{
try {
fileInputStream.close();
} catch (Exception e) { }
}
}

public String get(String s){
return properties.getProperty(s);}

public static void main(String[] arg){
Prop p=new Prop();
System.out.println("test1="+p.get("1"));
}
}

// ----------------------------------------------

class Mot{
private String w=" ";
final int module;
int nbE=0;
private int nbV=0;
private int Rest;
final int f=10;
private String t=" ";
boolean[] o;
Prop p;

Mot(){
p = new Prop();
w=word();
introduction();

System.out.print("Le mot est forme de "+ w.length()+" caracteres");
o=new boolean[w.length()];
module=w.length();
for(int j=0;j<w.length();j++)
o[j]=false;
Rest=module;}

void Testg(String a){
int i,j,passe=1,trouve=0;

char u=a.charAt(0);
for( i=0;i<t.length();i++) {
if(t.charAt(i)==u){
passe=0;
break;}
}
t+=u;
if(passe==1){
System.out.println("lettre entrer est: "+u);
for( i=0;i<w.length();i++)
if(w.charAt(i) == u ){
nbV++;trouve=1; Rest-=1;o[i]=true;
System.out.print(" ");
for(int l=0;l<o.length;l++)
if(o[l]==true)
{System.out.print(w.charAt(l));}
else System.out.print("-");
System.out.println("\n\n "+(char)16+"\t donc il rest "+(module-nbV)+" a les trouver"+
"\n_______________________________________________\n" );}

if(trouve==0){ setnbE();
System.out.println(" !! letre est fausse et il rest pour vous: "+(10-getE())+
" essayes\n__________________________________________________\n");}
}
else{
System.out.println("le lettre ( "+u+" ) est deja saisi"+
"\n__________________________________________________________\n");}///
}


void aff(){
String s=" ";
for(int i=0;i<module;i++)
s+="-";
System.out.println(s);
for(int i=0;i<50;i++)
System.out.print((char)205);
System.out.println();}

public String toString(){
String s=" les resultats sont:\n\t nombre d'erreur: "+getE()+"\n\t les lettres saisient sont: "+getT();
if(getR()==0)
s+="\n\n\t***le mot etait: "+getW()+"\n\t"+ (char)16+" La resultat: tu es gagnant "+(char)17+"\n";
else
s+="\n\n"+(char)7+"\t\t***le mot etait: "+getW()+"\n "+(char)2+" !!!! La resultat: tu ne gagnes pas "+(char)2;
return s;}
String getT(){
return t;}

String getW(){
return w;}

int getE(){
return nbE;}
int getR(){
return Rest;}
int getF(){
return f;}

void setnbE(){
nbE=nbE+1;}

int getV(){
return nbV;}
void introduction(){
System.out.println( "CHARBEL ELIAS TANNOUS\n\n"+
(char)177+" cherchez le mot?");}

String word(){
String s="";

try{
int nb=Integer.parseInt(p.get("nbmot"));
s= p.get(""+(1+(int)(Math.random()*nb)));
} catch(Exception e){
System.out.println("erreur:"+e.getMessage());
return p.get("1"); }
return s;}
}
//-------------------------------

import javax.swing.*;
class Jeux{

static String lir(){
String a;
a=JOptionPane.showInputDialog("Entrer une china de caractere");
return a;}

static int lirmod(){
int a=0,c=0;String b=" ";
while(c==0){
b=JOptionPane.showInputDialog("entrer module de mot");
try{a=Integer.parseInt(b);c=1;}
catch(NumberFormatException e){
System.out.println("*******ERROR pour le nombre de caractere******");}}
return a;}
}
//------------------------
class CHT{
public static void main(String args[]){
Mot a=new Mot();
String e;
a.aff();

while((a.getE()<a.getF())&& (a.getR()!=0) ){
e=Jeux.lir();
a.Testg(e); }

System.out.println(a);
new Charbel();
}
}

//-----------------------------------
Ce jeu est adressé au débutant et pas à l’expert,
Il est pour ceux qui ont fini la première année universitaire de l’informatique,
Et pas la deuxième, ou ….
L’autre solution est comme a dit loloof64 avec les Stream et buffer….

Les information dans le fichier: lib.txt
Vous pouvez ajoute, après la premier exécution...
Explorez-le.
Messages postés
342
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
6 novembre 2012

Bonjour,

en effet j'avais mal compris l'idée de l'auteur .

Je pense aussi qu'une meilleure méthode (si toutefois il maitrise les flux de données textes) aurait été de mettre tous les mots dans un .txt, et de creer un classe (ayant son propre main, de préférence) qui crée une classe à partir des mots de ce texte; les mots etant contenus dans un tableau, éventuellement déclaré statique .

( C'est possible, j'ai réussi à le faire ) .
Messages postés
5
Date d'inscription
samedi 7 octobre 2006
Statut
Membre
Dernière intervention
16 mars 2009

Par "Un petit jeu avec une librairie statique des mots.", je pense que l'auteur veut dire que la liste des mots est statique, i.e. non dynamique donc non évolutive => pour modifier la liste, il faut modifier le code. Les mots sont mal choisis, mais on sent quelque faiblesse dans le phrasé :).
Petits commentaires, en sachant que je ne l'ai pas lu a fond :
- Les noms de variables nbE, nbV, Rest, f, t, o : pas trés explicite
- Les noms de méthodes ne sont pas top non plus : aff, lir, lirmod
- Une lecture des mots dans un fichier avec un mot par ligne ne coute pas cher (BufferedReader) et apporte un vrai plus.
- une petit fonction "à la mastermind", avec le nombre de lettre bien placées / mal placées aurait été un plus.
Messages postés
342
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
6 novembre 2012

Je pense que la défintion de librairie statique n'a rien à voir avec le mot clé java static .
Afficher les 8 commentaires