Mastermind en Java

floflo2704 Messages postés 7 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 13 juin 2012 - 4 juin 2012 à 20:24
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 - 6 juin 2012 à 13:48
Bonsoir à tous, je suis occupé de programmer un Master Mind en Java mais je reste bloqué sur quelques points. J'ai déjà réalisé toute l'interface graphique etc. Mais je n'arrive pas à générer la combinaison choisie par l'ordinateur et la vérification de la combinaison entrée par l'utilisateur par rapport à celle choisie par l'ordinateur. Tout coup de pouce et conseil est bienvenu. Merci d'avance.

9 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 juin 2012 à 08:21
Salut,

Sur quoi est ce que tu bloques exactement ? Pour t'en sortir, tu peux utiliser la fonction Math.random qui te retourne une valeur aléatoire comprise entre 0 et 1. Par exemple, si tu as trois couleurs :
0 < Math.random < 0.3333 => couleur1
0.3333 < Math.random < 0.6666 => couleur2
0.6666 < Math.random < 1 => couleur3
0
floflo2704 Messages postés 7 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 13 juin 2012
5 juin 2012 à 17:31
Ben en faite j'ai créé une grille avec un choix de 7 couleurs, mais l'ordinateur doit me créer une combinaison composée de 4 couleurs parmi les 7 uniquement. Merci pour la méthode Math.random en tout cas et pour ton aide
0
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
6 juin 2012 à 08:12
Salut,
ben tu fais en new Random.nextInt(7);
cela te renvoie une valeur aléatoire comprise entre [0;7[ que tu peux utiliser pour trouver la couleur que tu veux...
0
floflo2704 Messages postés 7 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 13 juin 2012
6 juin 2012 à 13:12
Et pour donner une valeur à chaque couleur, je fais ça avec des if alors ? :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
6 juin 2012 à 13:18
oui et non...
je te propose ceci:
Color[] availableColors = new Color{Color.red, Color.blue, Color.green, Color.yellow, Color.white, Color.pink, Color.black};
for ( int i=0; i<4; i++ ) {
   System.out.println("Couleur choisie pour la position " + (i+1) + " : "+ availableColors[new Random().nextInt(availableColors.length)] );
}


ou en tout cas qqch du genre...
0
floflo2704 Messages postés 7 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 13 juin 2012
6 juin 2012 à 13:30
Ben en faite j'ai ceci pour créer un MasterMind et je ne sais pas où introduire cette boucle =/


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

/**
* Panneau sur lequel on vient dessiner...
*/
public class Dessin extends JPanel implements MouseListener, MouseMotionListener
{
private Color[] couleurs = {Color.BLUE,Color.RED,Color.YELLOW,Color.GREEN,Color.ORANGE,Color.WHITE,Color.PINK};
private int nbCol, nbLignes;
private int dx,dy;
private int x,y;
private int rayon = 20;
private Pion pionEnCours;
private Pion[][] cases;
private int ligneEnCours;

public Dessin(int nbCol,int nbTests)
{
super();
this.cases = new Pion[nbCol][nbTests];
ligneEnCours = 0;
this.nbCol = nbCol;
this.nbLignes = nbTests;
this.addMouseListener(this);
this.addMouseMotionListener(this);
setPreferredSize(new Dimension(350,350));
}

public void paint(Graphics g)
{
super.paint(g);
Component [] comp = this.getComponents();
//La grille vierge
for(int j = 0 ; j<this.nbLignes ; j++)
{
for(int i = 0 ; i<this.nbCol ; i++)
{
Color c = g.getColor();
g.setColor(Color.BLACK);
g.drawOval(10+(5*rayon/2)*i,10+(5*rayon/2)*j,2*rayon,2*rayon);
g.setColor(c);
if(cases[i][j]!=null){
System.out.println("PAINT CASES");
cases[i][j].paint(g);
}

}
for (int i=0; i>comp.length; i++)
{
comp[i].paint(g);
}
}

//Les "tiroirs ‡ pions"
for(int i = 0 ; i<this.couleurs.length ; i++)
{
Color c = g.getColor();
g.setColor(couleurs[i]);
g.fillRect(275,10+25*i,25,25);
g.setColor(c);
}
setBackground(new Color(190,200,233));
// Component[] comp = this.getComponents();//getComponents() renvoie un tableau avec TOUS les composants du JPanel
// // System.out.println("\t\t\t\tNombre d'objets : "+comp.length); // Pour les tests ...
// for (int i = 0 ; i < comp.length ; i ++ ){//On affiche chaque composant...
// comp[i].paint(g);
// }
if(pionEnCours != null)
{
pionEnCours.paint(g);
}
}

public void afficheCases()
{
for(int i = 0;i<this.nbCol;i++)
{
for(int j = 0;j<this.nbLignes;j++)
{
System.out.print((cases[i][j]==null)+"\t");
}
System.out.println();
}
}


public void mouseExited(MouseEvent me)
{}
public void mouseEntered(MouseEvent me)
{
}
public void mouseReleased(MouseEvent me)
{
System.out.println("Souris relachÈe");
int x = me.getX();
int y = me.getY();

// this.pionEnCours = null;
//Tester si on se trouve au bon endroit : bonne ligne, une des case
int yc = 10+(5*rayon/2)*ligneEnCours+rayon;
for(int i = 0 ; i<nbCol ; i++)
{
int xc = 10+(5*rayon/2)*i+rayon;
// System.out.println(" -- IF -- xc "+xc+" x "+x+" yc = "+yc+" y = "+y+" r = "+rayon);
if((xc-x)*(xc-x)+(yc-y)*(yc-y)<(rayon*rayon))
{
// System.out.println("OK -- i "+i+" ligneEnCours "+ligneEnCours);
// try
// {
// Pion p = new Pion(this.pionEnCours);
//
// }
// catch(Exception e)
// {
// System.out.println("ERREUR");
// }
// System.out.println("OK - OK");

// try
// {
cases[i][ligneEnCours] = pionEnCours;
cases[i][ligneEnCours].setComposantes(xc,yc);
// }
// catch(Exception e)
// {
// System.out.println("ERREUR BIS");
// }
//this.pionEnCours = null;
}
}
this.pionEnCours = null;
repaint();

this.afficheCases();

}

public void mousePressed(MouseEvent me)
{
//RecupÈrer les coordonnÈes de la souris
int x = me.getX();
int y = me.getY();

//Ces coordonnÈes sont-elles dans une case ?
if(x>=275 && x<=300 && y>=10 && y<=10+25*this.couleurs.length)
{//On est dans la boite
//Dans quelle case sommes-nous ?
//Boucle pour tester si le y est dans la premiËre, deuxiËme, ... case ? ? ?
for(int i = 0 ; i<this.couleurs.length ; i++)
{
if(y>=10+25*i && y<10+25*(i+1))
{
this.x = x;
this.y = y;
this.pionEnCours = new Pion(x,y,this.rayon,this.couleurs[i]);

System.out.println("Couleur : "+this.couleurs[i]);
// Bleu : Color[r=0,g=0,b=255]
// Rouge : Color[r=255,g=0,b=0]
// Jaune : Color[r=255,g=255,b=0]
// Vert : Color[r=0,g=255,b=0]
// Orange : Color[r=255,g=200,b=0]
// Blanc : Color[r=255,g=255,b=255]
// Rose : Color[r=255,g=175,b=175]
}
}
}
}

public void mouseClicked(MouseEvent me){}
public void mouseMoved(MouseEvent me){}
public void mouseDragged(MouseEvent me)
{
System.out.println("TEST");
this.x = me.getX();
this.y = me.getY();
pionEnCours.setComp(this.x,this.y);
repaint();
}
}
0
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
6 juin 2012 à 13:37
je suppose que chaque instance de Dessin représente une nouvelle partie.. si c'est le cas, le mettre dans le constructeur me semble une bonne chose...
0
floflo2704 Messages postés 7 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 13 juin 2012
6 juin 2012 à 13:43
Il me met ce type d'erreur ... '(' or '[' expected
0
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
6 juin 2012 à 13:48
Color[] availableColors = new Color(){Color.red, Color.blue, Color.green, Color.yellow, Color.white, Color.pink, Color.black};
for ( int i=0; i<4; i++ ) {
   System.out.println("Couleur choisie pour la position " + (i+1) + " : "+ availableColors[new Random().nextInt(availableColors.length)] );
}
0
Rejoignez-nous