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

cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012 - 10 mars 2009 à 20:42
shyrachtz Messages postés 50 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 1 juillet 2011 - 17 mars 2009 à 13:19
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

shyrachtz Messages postés 50 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 1 juillet 2011
17 mars 2009 à 13:19
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.
cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012
17 mars 2009 à 08:33
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 ) .
ltb69 Messages postés 5 Date d'inscription samedi 7 octobre 2006 Statut Membre Dernière intervention 16 mars 2009
16 mars 2009 à 09:13
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.
cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012
11 mars 2009 à 17:57
Je pense que la défintion de librairie statique n'a rien à voir avec le mot clé java static .
cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012
11 mars 2009 à 17:53
Je suis désolé de m'être mal exprimé : je pense que ta librairie n'est pas une librairie statique .
shyrachtz Messages postés 50 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 1 juillet 2011
11 mars 2009 à 07:19
meme les experts ne sont pas encore des experts, car chaque jour il y a de nouveaux. ...
shyrachtz Messages postés 50 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 1 juillet 2011
11 mars 2009 à 07:13
Dans ce code la librairie est comme ca, mais, on peut la faire suivant un fichier normale avec ( ; par exemple) comme separateur.
mot1;mot2;……
Puis chargement …..
Mais c’est un exemple, pas plus.
cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012
10 mars 2009 à 20:42
Salut :)

Ne connaissans que le J2SE et non le J2EE, j'ai dû taper sur Google pour oir ce que signifie librairie statique => Conclusion : il semblerait que cela soit davantage une libraire développée en C++ (ou autre langage que Java lui-même peut être) à inclure grâce à l'utilisation de JINI .
Tu as peut être voulu parler de librairie intégréé au code .

Mais bon, je le répète : je suis loin d'être un expert .

Salut :)
Rejoignez-nous