Mastermind javascool

Fermé
retyry Messages postés 49 Date d'inscription mardi 22 janvier 2013 Statut Membre Dernière intervention 5 octobre 2016 - 22 janv. 2013 à 20:24
morlescou Messages postés 5 Date d'inscription mardi 15 janvier 2013 Statut Membre Dernière intervention 19 février 2013 - 19 févr. 2013 à 17:06
Bonjour,

Je suis en terminal S option ISN, je dois réaliser un programme Mastermind comprenant 8 couleurs, 10 chances et des indications. Je dois utiliser que des fonctions.

Mon programme étant assez long je vous dis où je suis bloqué.
Je n'arrive pas a comparer correctement 2 tableaux String de 4 lignes.
j'utilise equal(tabJ1,tabJ2) mais cela ne me compare que les 1eres valeurs.

Comment faire pour comparer toutes les valeurs du tableaux ( soit 4 caractères)?
Et une autre petite question comment faire une fonction indication qui dit si le pion est bien placé ou pas?

Merci par avance.

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
22 janv. 2013 à 20:34
"j'utilise equal(tabJ1,tabJ2) mais cela ne me compare que les 1eres valeurs.
Comment faire pour comparer toutes les valeurs du tableaux ( soit 4 caractères)?"

C'est quoi cette méthode equal ? Si c'est une méthode à toi, il faudrait que tu nous la montre, mais comme ça, je ne vois pas ce que c'est...
En revanche tu peux utiliser la méthode Arrays.equals

"comment faire une fonction indication qui dit si le pion est bien placé ou pas?"
Pour te répondre il faudrait voir ton code, au moins en partie, c'est impossible de deviner ce qu'est un pion, comment tu l'as codé, etc.
0
retyry Messages postés 49 Date d'inscription mardi 22 janvier 2013 Statut Membre Dernière intervention 5 octobre 2016 2
22 janv. 2013 à 20:39
Voila le programme. Les indications pour l'instant sont effectuées par le joueur.

//Variables globales

String tabJ1[]= new String [4];
String tabJ2[] = new String [4];
String tabindic[] = new String [4];

int i,indice,n;
String combiJ1,combiJ2,x;
boolean boucleJ2faux,gagne,combiJ2vrai;

//Demande et affichage des noms des participants

void saisie(){
println(" ");
println("Veuillez saisir vos noms s'il vous plait");
String J1 = readString();
String J2 = readString();
println("Joueur 1 : "+ J1);
println("Joueur 2 : "+ J2);
}


// Fonction boucle qui s'execute si la 1 ere combinaison du joueur 2 est fausse
void boucleJ2faux(){
int j ;
String combicouleurJ2;

for(int i =0; i<3 ; i++){
print("[ "+ tabJ2[i] +" ]");
}
print("[ "+ tabJ2[i] +" ]"+" Voici la combinaison du joueur 2");

println(" ");
println("Votre Combinaision est fausse veuillez réessayé ! ");
indication();

}

//Demande et stockage de la combinaison J1

void combiJ1(){
println(" ");
println("Joueur 1 veuillez saisir votre combinaison parmi les couleurs possibles.");

for(int i =0; i<4 ; i++){
tabJ1[i] = readString();

}

}

//Début partie

void debut(){
println(" ");
println("Le jeu peut commencer. Bonne chance et que le meilleur gagne !");
}

//Demande de la combi J2

void combiJ2(){
println(" ");
println("Joueur 2 veuillez saisir votre combinaison parmi les couleurs possibles.");
for(int i =0; i<4 ; i++){
tabJ2[i] = readString();
}

}

//Comparer combiJ1 et J2

void combiJ2vrai(){



if(equal(tabJ1[i],tabJ2[i])){
println(" ");
for(int i =0; i<4 ; i++){
print("[ "+ tabJ1[i] +" ]");
}
print(" Voici la combinaison du joueur 1");

println(" ");

for(int i =0; i<4 ; i++){
print("[ "+ tabJ2[i] +" ]");
}
print(" Voici la combinaison du joueur 2");
println(" ");
println("Bravo Joueur 2 vous avez gagné !");


}

}

// fonction qui demande au J1 de mettre les indication 0,1,2 ou 3
// en fonction des couleurs rentrées
void indication(){
int k;
println("J1 veuillez mettre les indications.");
for(k=0;k<4;k++){

indice=readInteger();
print("[" + indice + " ] ");
}
}

//Boucle qui permet de répéter 9 fois.
void boucle(){
for(n=0;n<9;n++){
combiJ2();
if (equal(tabJ1[i],tabJ2[i])){
combiJ2vrai();
n=9;
}else{
boucleJ2faux();


}
}
}

void resultat(){
if(n==9) {
println(" ");
for(int i =0; i<3 ; i++){
println(" ");
print("[ "+ tabJ1[i] +" ]");
}

print("[ "+ tabJ1[i]+" ]"+" Voici la combinaison du joueur 1");


println(" ");
println("Bravo Joueur 1 vous avez gagné !");


}
}



//Programme principal

void main(){

affichage();
saisie();

combiJ1();
debut();
combiJ2();

if (equal(tabJ1[i],tabJ2[i])){
combiJ2vrai();
}else{
boucleJ2faux();
boucle();
resultat();
}
}
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
22 janv. 2013 à 20:45
Est-ce que tu est dans une proglet particulière ? Parce que je n'ai pas la méthode affichage(), ça permettrait aussi d'expliquer pourquoi je n'est pas la méthode equal.
0
retyry Messages postés 49 Date d'inscription mardi 22 janvier 2013 Statut Membre Dernière intervention 5 octobre 2016 2
22 janv. 2013 à 20:48
affichage() correspond aux regles du jeu les voici :

//Affichage des caractéristiques et des règles

void affichage(){
println(" MASTERMIND ");
println(" ");
println("Bonjour,bien venu dans le jeu MASTERMIND voici quelques caractéristiques du jeu. Il se compose : ");
println("* 10 rangées de 4 couleurs");
println("* 8 couleurs au choix : Cyan, Jaune, Rouge, Bleu, Vert, Orange, Violet, Noir");
println("* des indications : Faux ; Bon mais mal placé ; Bon et bien placé");
println("* se joue à 1 contre 1");
println(" ");
println("Voici maintenant les règles du jeu : ");
println("Un joueur commence par placer son choix de couleurs sans qu'ils soient vus de l'autre joueur. ");
println("Le joueur qui n'a pas sélectionné les couleurs doit trouver quelles sont les quatre couleurs, c'est-à-dire leurs couleurs et leurs positions.");
println("Pour cela, à chaque tour, le joueur doit placer des couleurs pour remplir une rangée selon l'idée qu'il se fait des couleurs dissimulées.");
println("Une fois les couleurs placées, l'autre joueur indique :");
println("* le nombre de couleurs bien placées. ");
println("* le nombre de couleurs bonnes mais mal placées.");
println("* le nombre de couleurs fausses.");

}
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
22 janv. 2013 à 21:08
Pour ta méthode de comparaison tu peux faire comme ceci :

boolean equalAll(String[] t1,String[] t2)
{
	//return java.util.Arrays.equals(t1,t2);
	
	if (t1==null)
	    return t2==null;
	
	if (t2==null || t1.length!=t2.length)
		return false;
	
	for (int i=0; i<t1.length; i++)
		if (!equal(t1[i],t2[i]))
			return false;
	
	return true;
}

Éventuellement tu peux adapter la méthode pour renvoyer le nombre de valeurs égales.

C'est quoi que tu appelles le "pion" et la position qu'il devrait avoir ?
0
retyry Messages postés 49 Date d'inscription mardi 22 janvier 2013 Statut Membre Dernière intervention 5 octobre 2016 2
22 janv. 2013 à 21:15
Pour la methode de comparaison, on a jamais fais sa en cours donc je ne comprend pas trop et puis le professeur va me poser beaucoup de questions.( je fais du javascool)
Pour le pion , par exemple :
combinaison J1 : bleu vert rouge violet
Combinaison J2 : bleu noir violet jaune

Je voudrais que le programme dit automatique que le bleu est bien placé, le violet est bon mais mal placé et le noir et jaune faux.
0
morlescou Messages postés 5 Date d'inscription mardi 15 janvier 2013 Statut Membre Dernière intervention 19 février 2013
19 févr. 2013 à 17:06
Pouvais vous m'aidez svp : https://forums.commentcamarche.net/forum/affich-27175534-mastermind-sur-java-s-cool#p27175534
0