Ajout d’une interface graphique à un mastermind sous Java's cool
Fermé
Ryuji35
Messages postés3Date d'inscriptionsamedi 12 septembre 2015StatutMembreDernière intervention25 avril 2017
-
25 avril 2017 à 19:52
Bonjour,
nous avons comme projet d'ISN du BAC de faire un mastermind sous Java's cool.
Nous avons récupéré un programme sur Internet et nous l'avons modifié. Nous aimerions désormais ajouter une interface graphique afin qu'il fasse apparaître un tableau de mastermind avec les 4 pions de la solution gagnante (uniquement pour l'instant). Nous avons réalisé un autre programme qui créer des carrés des 8 couleurs choisies .
Programme du mastermind
int bons_bien_places = 0; // bons chiffres bien placés
int bons_mal_places = 0; // bons chiffres mal placés
int c_est_gagne = 0; // 0 = faux, 1 = vrai
// remplir le tableau solution avec 4 chiffres aléatoires compris entre 1 et 8
void nombres_aleatoires(int master[]){
for (int i = 0 ; i < 4 ; i++){
master[i] = random(1,9);
}
}
// remplir le tableau du joueur avec 4 chiffres que le joueur entre
void propositions_du_joueur(int guess[][], int nombre_de_vies){
int x = 10 - nombre_de_vies;
for (int i = 0 ; i < 4 ; i++){
guess[i][x] = readInteger((i+1) + "/4");
}
}
// déterminer le nombre de bons chiffres bien placés et de bons chiffres mal placés
void comparaison_des_resultats(int nombre_de_vies, int master[], int guess[][]){
int x = 10 - nombre_de_vies;
bons_bien_places = 0;
bons_mal_places = 0;
boolean[] masterTest = new boolean[4];
boolean[] guessTest = new boolean[4];
// combien de bons chiffres sont bien placés
for (int i = 0 ; i < 4 ; i++){
if (master[i] == guess[i][x]){
bons_bien_places++;
masterTest[i] = true;
guessTest[i] = true;
}
}
// si tous les chiffres sont bien placés, l'affirmation 'le joueur a gagné' est vraie
if (bons_bien_places == 4){
c_est_gagne = 1;
}
// sinon, combien de bons chiffres sont mal placés
else {
for (int i = 0 ; i < 4 ; i++){
for (int j = 0 ; j < 4 ; j++){
if (master[i] == guess[j][x] && !masterTest[i] && !guessTest[j]){
bons_mal_places++;
masterTest[i] = true;
guessTest[j] = true;
}
}
}
}
}
// afficher les propositions que le joueur a fait et lui retourner les informations 'bien placés' & 'mal placés'
void affiche_les_propositions(int nombre_de_vies, int guess[][]){
int x = 10 - nombre_de_vies;
print(x+1 + " : ");
for (int i = 0 ; i < 4 ; i++){
print(guess[i][x] + " ");
}
println(" : " + bons_bien_places + " bons chiffres bien placés et " + bons_mal_places + " mal placés");
println();
}
// afficher le message de victoire
void gagne(int nombre_de_vies){
println("Félicitations, vous avez gagné au bout de " + (11-nombre_de_vies) + " essais !");
}
// afficher le message de défaite
void perdu(){
println("Vous avez perdu...");
}
// déterminer si le joueur a gagné ou perdu pour appeller les fonctions respectives
void gagne_ou_perdu(int nombre_de_vies){
if (c_est_gagne == 1){
gagne(nombre_de_vies);
}
else if (nombre_de_vies == 1 && c_est_gagne == 0){
perdu();
}
}
void main(){ // prgm principal
int master[] = new int [4]; // tableau solution
int guess[][] = new int [4][10]; // tableau du joueur
int nombre_de_vies = 10; // nombre de vies du joueur
// présentation du jeu
println();
println("Règles du mastermind");
println("L’ordinateur a généré une série de quatre couleurs parmi 8 couleurs disponibles.");
println("On vous demande de trouver l’ordre et le placement de ces 4 couleurs ainsi que les quatre couleurs");
println("de cette suite ");
println("Pour trouver les couleurs et le placement de celle-ci vous avez le droit à 10 essais si vous n’avez pas");
println("trouvé à la fin de ces 10 essais vous perdez ");
println("Si vous trouvé le placement et les couleurs des ces quatre couleurs vous gagné ");
println("Les couleurs sont modélisées par des numéros et le placement des chiffres dans la suite dépend de");
println("l’ordre dans lequel vous rentrez les différents numéros de la suite ");
println("Les différentes couleurs sont les suivantes et elles correspondent aux numéros suivants :");
println("Rouge : 1 ");
println("Vert : 2");
println("Blanc : 3");
println("Rose : 4 ");
println("Jaune : 5");
println("Bleu : 6 ");
println("Orange : 7");
println("Violet : 8");
println("L’ordinateur vous dira à chaque étape le nombre de pions de la bonne couleur bien placés et ceux de");
println("la bonne couleur mal placés.");
println("Good Luck and Have fun");
println();
nombres_aleatoires(master);
// tant que le joueur a au moins 1 vie et qu'il n'a pas gagné, appel de ces fonctions
while (nombre_de_vies != 0 && c_est_gagne == 0){
propositions_du_joueur(guess, nombre_de_vies);
comparaison_des_resultats(nombre_de_vies, master, guess);
affiche_les_propositions(nombre_de_vies, guess);
gagne_ou_perdu(nombre_de_vies);
nombre_de_vies--; // à chaque fin de tour, enlever 1 vie
}
print("Solution : "); // afficher la solution à la fin
for (int i = 0 ; i < 4 ; i++){
print(master[i] + " ");
}
println("");
println("Merci d'avoir joué");
println("Projet d'ISN réalisé par ");
}
Programme des carrés colorés
void main() {
int x, y;
initDrawing("palette de 8 couleurs", 0, 0, 600, 600);
for(x = 50; x <= 100; x = x + 1)//rouge
for(y = 50; y <= 100; y = y + 1)
drawPixel(x, y, 255, 0, 0);
for(x = 150; x <= 200; x = x + 1)//vert
for(y = 50; y <= 100; y = y + 1)
drawPixel(x, y, 0, 255, 0);
for(x = 250; x <= 300; x = x + 1)//turquoise
for(y = 50; y <= 100; y = y + 1)
drawPixel(x, y, 0, 255, 255);
for(x = 350; x <= 400; x = x + 1)//rose
for(y = 50; y <= 100; y = y + 1)
drawPixel(x, y, 255, 0, 100);
for(x = 50; x <= 100; x = x + 1)//jaune
for(y = 150; y <= 200; y = y + 1)
drawPixel(x, y, 255, 255, 0);
for(x = 150; x <= 200; x = x + 1)//bleu
for(y = 150; y <= 200; y = y + 1)
drawPixel(x, y, 0, 0, 255);
for(x = 250; x <= 300; x = x + 1)//orange
for(y = 150; y <= 200; y = y + 1)
drawPixel(x, y, 255, 100, 0);
for(x = 350; x <= 400; x = x + 1)//violet
for(y = 150; y <= 200; y = y + 1)
drawPixel(x, y, 255, 0, 255);
for(x = 10; x <= 440; x = x + 1)//cadre du dessus
for(y = 5; y <= 10; y = y + 1)
drawPixel(x, y, 0, 0, 0);
for(x = 10; x <= 440; x = x + 1)//cadre du dessous
for(y = 250; y <= 255; y = y + 1)
drawPixel(x, y, 0, 0, 0);
for(x = 10; x <= 15; x = x + 1)//cadre de gauche
for(y = 10; y <= 250; y = y + 1)
drawPixel(x, y, 0, 0, 0);
for(x = 440; x <= 445; x = x + 1)//cadre de droite
for(y = 5; y <= 255; y = y + 1)
drawPixel(x, y, 0, 0, 0);
}
Nous souhaiterions donc que le programme original puisse reprendre celui des carrés de couleur.
Si vous avez des idées ou même des pistes nous sommes preneur, s'il vous plaît. =)
A voir également:
Ajout d’une interface graphique à un mastermind sous Java's cool