Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Le code est disponible sous la licence "Creative Commons 3.0": http://creativecommons.org/licenses/by-sa/3.0/deed.fr
- Dernière compilation: 31/05/2015 @ 18:06
- */
- /*
- -----------------------
- |******MASTERMIND*****|
- -----------------------
- ************************************************************
- * GOMES Kévin - ROMIGUIERES Victoria - ROMIGUIERES William *
- ************************************************************
- */
- /*
- * Précisions :
- * -> pion noir correcteur = bonne couleur, mal placée
- * -> pion rouge correcteur = bonne couleur, bien placée
- * -> mode débutant = pion correcteur placé à l'emplacement de la couleur du joueur qui devine
- * mais côté correcteur
- */
- /*Ces variables sont définies partout dans les sous-programmes et dans le main. Il est donc inutile des les définir ailleur.*/
- int temps = 0;
- int temps_2 = 0; //permet de diviser le temps qui s'écoule trop vite.
- String couleurs_j1_initial[]=new String[4]; //couleur que va choisir l'ordinateur ou le joueur au début
- String couleurs_j1[]=new String[4]; //les 4 couleurs que va jouer l'utilisateur cherchant
- String couleurs_j2[]=new String[4]; //les 4 couleurs que va jouer l'utilisateur correcteur
- String couleur_j1_manuel=""; //variable définie partout
- String chemin = "H:/TRAVAIL/TERMINALE S - 2014-2015/ISN/"; //les fichiers du jeu doivent être mis dans un dossier nommé "MasterMind". Iic, indiquez le chemin de ce dossier
- String couleur_j2_manuel=""; // variable définie partout : choix couleur correction
- int choix_menu = 0;
- //initialisation du fichier de configuration
- int []config = new int[6];
- /* FICHIER DE CONFIGURATION
- * [0] --> Mode de jeu: 1 = JCJ, 2 = JCIA
- * [1] --> Sous-mode: 1 = Débutant, 2 = Normal
- * [2] --> Difficultée: 1 = Facile, 2 = Normal, 3 = Difficile, 4 = Expert, 5 = Aléatoire
- * [3] --> Vérification: 1 = Auto, 2 = Manuel
- * [4] --> Temps maximum (en secondes)
- * [5] --> Nombre de coups maximums
- */
- int changer_dif(){
- //permet de changer la difficultée
- println("Choisissez la difficulté selon les nombres : ");
- println();
- println("Facile : 1");
- println("Normal : 2");
- println("Difficile : 3");
- println("Expert : 4");
- println("Aléatoire : 5");
- int dif = readInt("Entrez un nombre entre 1 et 5 selon la difficulté voulue");
- if(dif == 5){
- dif = random(1,4);
- //on tire une difficulté au hasard
- }
- return dif;
- }
- int changer_verif (){
- println("1 : vérif auto");
- println("2 : vérif manuelle");
- int num_verif = readInt("Entrez un numéro selon la vérification voulue :");
- return num_verif;
- }
- void ecran_fin(int win){
- if(win ==1){
- //victoire
- load(chemin+"Mastermind/images/fin_win.png");
- sleep(50000);
- }else{
- //défaite
- load(chemin+"Mastermind/images/fin_go.png");
- sleep(50000);
- }
- }
- void choix_couleur_initial(int type){
- //type: 1=JCJ, 2=JCO
- int choix_couleur_user = 0;
- if(type == 1){
- //on charge l'image de sélection des couleurs par le joueur 1
- load(chemin+"Mastermind/images/choix_couleur_user.png");
- for(int a = 1; a<=4; a++){
- choix_couleur_user = readInt("Choisissez la couleur n°"+a);
- if(choix_couleur_user == 1){
- couleurs_j1_initial[a-1] = "noir";
- }
- if(choix_couleur_user == 2){
- couleurs_j1_initial[a-1] = "rouge";
- }
- if(choix_couleur_user == 3){
- couleurs_j1_initial[a-1] = "vert";
- }
- if(choix_couleur_user == 4){
- couleurs_j1_initial[a-1] = "jaune";
- }
- if(choix_couleur_user == 5){
- couleurs_j1_initial[a-1] = "bleu";
- }
- if(choix_couleur_user == 6){
- couleurs_j1_initial[a-1] = "violet";
- }
- if(choix_couleur_user == 7){
- couleurs_j1_initial[a-1] = "orange";
- }
- if(choix_couleur_user == 8){
- couleurs_j1_initial[a-1] = "blanc";
- }
- if(choix_couleur_user < 0 || choix_couleur_user >8){
- couleurs_j1_initial[a-1] = "noir";
- }
- }
- }else{
- //joueur contre ordinateur: choix couleur aléatoire
- int couleur_choisi_ordi[]= new int[4];
- couleur_choisi_ordi[0] = random (1,8);
- couleur_choisi_ordi[1] = random (1,8);
- couleur_choisi_ordi[2] = random (1,8);
- couleur_choisi_ordi[3] = random (1,8);
- //couleur_j1_initial étant un tableau d'entiers, on convertit les entiers trouvés aléatoirement en string
- for(int a = 0; a<=3; a++){
- if(couleur_choisi_ordi[a] == 1){
- couleurs_j1_initial[a] = "noir";
- }
- if(couleur_choisi_ordi[a] == 2){
- couleurs_j1_initial[a] = "rouge";
- }
- if(couleur_choisi_ordi[a] == 3){
- couleurs_j1_initial[a] = "vert";
- }
- if(couleur_choisi_ordi[a] == 4){
- couleurs_j1_initial[a] = "jaune";
- }
- if(couleur_choisi_ordi[a] == 5){
- couleurs_j1_initial[a] = "bleu";
- }
- if(couleur_choisi_ordi[a] == 6){
- couleurs_j1_initial[a] = "violet";
- }
- if(couleur_choisi_ordi[a] == 7){
- couleurs_j1_initial[a] = "orange";
- }
- if(couleur_choisi_ordi[a] == 8){
- couleurs_j1_initial[a] = "blanc";
- }
- }
- }
- }
- int demander_menu() {
- //routine qui va demander à l'utilisateur de selectionner la zone du menu et qui renvois le choix fait
- setRunnable(new Runnable() {
- public void run() {
- int x = getX();
- int y = getY();
- clear();
- //suivant les coordonnées du clic, on retourne le choix
- if(y>=14 && y <= 58 && x<= 114 && x>=-95){
- choix_menu = 1;
- }
- if(y>=-80 && y <= -36 && x<= 114 && x>=-95){
- choix_menu = 2;
- }
- if(y>=-80 && y <= -36 && x<= 114 && x>=-95){
- choix_menu = 2;
- }
- if(y>=-177 && y <= -113 && x<= 114 && x>=-95){
- choix_menu = 3;
- }
- }
- }
- );
- return choix_menu;
- }
- void coup_joueur_cherche(int coup){
- String choix_couleur = "";
- //le coup du joueur qui cherche: s'occupe de tout charger
- clear();
- for(int nb_couleur_choix = 0; nb_couleur_choix<4; nb_couleur_choix++){
- while(choix_couleur == ""){
- //pendant le choix de l'utilisateur qui cherche, on incrémente le temps
- temps++;
- temps_2 = temps/5;
- lcd_temps(temps_2);
- sleep(200);
- effacer_digits_temps();
- if(temps_2 >= config[4] || coup == config[5]){
- ecran_fin(0);
- }
- choix_couleur = demander_couleurs_j1_manuel();
- }
- couleurs_j1[nb_couleur_choix] = choix_couleur;
- choix_couleur = "";
- couleur_j1_manuel="";
- }
- afficher_couleurs_coup(coup);
- //fin demander couleur
- }
- void coup_joueur_correcteur(int coup){
- String choix_couleur = "";
- clear();
- for(int nb_couleur_choix = 0; nb_couleur_choix<4; nb_couleur_choix++){
- while(choix_couleur == ""){
- //tant que l'utilisateur correcteur n'a pas choisi de couleur, on reste dans la boucle.
- choix_couleur = demander_couleurs_j2_correction();
- }
- //On stocke les couleurs du correcteur
- couleurs_j2[nb_couleur_choix] = choix_couleur;
- //on réinitialise les 2 variables pour éviter que le while ne s'execute pas de suite
- choix_couleur = "";
- couleur_j2_manuel="";
- }
- afficher_couleurs_correcteur(coup);
- //on lance la routine qui va afficher les couleurs du correcteur suivant le coup
- //fin demander couleur
- }
- String demander_couleurs_j1_manuel() {
- /* int []rouge = {250,38,21}; //rouge
- int []vert = {2,221,9}; //vert
- int []jaune = {255,255,51}; //jaune
- int []bleu = {0,255,255}; //bleu
- int []violet = {179,14,211}; //violet
- int []orange = {255,126,39}; //orange
- int []blanc = {255,255,255}; //blanc
- int []noir = {0,0,0}; //noir */
- setRunnable(new Runnable() {
- public void run() {
- couleur_j1_manuel = "";
- int rgb2[] = getPixelColor(getX(), getY());
- if(rgb2[0] == 250 && rgb2[1] == 38 && rgb2[2] == 21){
- couleur_j1_manuel = "rouge";
- }
- if (rgb2[0] == 2 && rgb2[1] == 221 && rgb2[2] == 9){
- couleur_j1_manuel = "vert";
- }
- if (rgb2[0] == 255 && rgb2[1] == 255 && rgb2[2] == 51){
- couleur_j1_manuel = "jaune";
- }
- if (rgb2[0] == 0 && rgb2[1] == 255 && rgb2[2] == 255){
- couleur_j1_manuel = "bleu";
- }
- if (rgb2[0] == 179 && rgb2[1] == 14 && rgb2[2] == 211){
- couleur_j1_manuel = "violet";
- }
- if (rgb2[0] == 255 && rgb2[1] == 126 && rgb2[2] == 39){
- couleur_j1_manuel = "orange";
- }
- if (rgb2[0] == 255 && rgb2[1] == 255 && rgb2[2] == 255){
- couleur_j1_manuel = "blanc";
- }
- if (rgb2[0] == 0 && rgb2[1] == 0 && rgb2[2] == 0){
- couleur_j1_manuel = "noir";
- }
- clear();
- }
- }
- );
- return couleur_j1_manuel;
- }
- String demander_couleurs_j2_correction(){
- /*on demande au joueur 2 de saisir les couleurs de la correction.
- On retourne la valeur de la couleur choisie (rouge, noir ou rien
- si l'utilisateur a cliqué dans le vide)*/
- setRunnable(new Runnable() {
- public void run() {
- couleur_j2_manuel = "";
- int rgb2[] = getPixelColor(getX(), getY());
- //on stocke les valeurs rgb du pixel sélectionné par l'utilisateur.
- //On retourne en fonction du clic la valeur de la couleur.
- if(rgb2[0] == 250 && rgb2[1] == 38 && rgb2[2] == 22){
- couleur_j2_manuel = "rouge";
- }
- if (rgb2[0] == 0 && rgb2[1] == 0 && rgb2[2] == 1){
- couleur_j2_manuel = "noir";
- }
- if(couleur_j2_manuel == "" && getX() != 0 && getY() != 0){
- couleur_j2_manuel = "rien";
- //s'il clique autre part que dans la case rouge/noire, on retourne "rien".
- }
- clear();
- }
- }
- );
- return couleur_j2_manuel;
- }
- int[] changer_variables_difficultee(){
- //change les variables suivant la difficultée
- int[]temps_et_coup_max = new int[2];
- if(config[2] == 1){
- temps_et_coup_max[0] = 99;//le temps est en secondes !
- temps_et_coup_max[1] = 12;
- }
- if(config[2] == 2){
- temps_et_coup_max[0] = 60;
- temps_et_coup_max[1] = 12;
- }
- if(config[2] == 3){
- temps_et_coup_max[0] = 60;
- temps_et_coup_max[1] = 10;
- }
- if(config[2] == 4){
- temps_et_coup_max[0] = 30;
- temps_et_coup_max[1] = 8;
- }
- return temps_et_coup_max;
- }
- /*
- *************************************************************************************
- ICI EST LE MAIN() !
- *************************************************************************************
- */
- void main(){
- //*******************début partie menu*********************************
- //on initialise les variables de choix (JcJ/JcIA/Option et Débutant/Normal)
- int choix1 = 0;
- int choix2 = 0;
- //on charge l'image contenant les choix JcJ/JcIA/Options
- load(chemin+"Mastermind/images/intro1.png");
- //on attend que l'utilisateur ait choisi. Sinon on reste dans la boucle.
- while(choix1 == 0){
- choix1 = demander_menu();
- //on demande le clic de l'utilisateur
- }
- config[0] = choix1;
- config[3] = 2; //par défaut, vérification manuel
- config[2] = 2; //par défaut difficulté normale
- if(choix1 == 3){ //si l'utilisateur a choisi la 3e option du menu 1: on affiche le menu d'options du jeu
- config[2] = changer_dif();
- int[]temps_coup_max = changer_variables_difficultee();
- config[4] = temps_coup_max[0];
- config[5] = temps_coup_max[1];
- println();
- println("Le temps max est de : "+config[4]+" secondes !");
- println();
- println("Le coup max est de : "+config[5]);
- println();
- config[3] = changer_verif();
- }else{
- //valeurs par défault
- config[2] = 2; //difficultée normal
- config[3] = 2; //vérification manuelle par défaut
- config[4] = 60; //60s comme le mode normal
- config[5] = 12; //nombre de coup par défaut=12
- }
- //on charge l'image contenant les choix JcJ/JcIA/Options
- load(chemin+"Mastermind/images/intro2.png");
- choix_menu = 0;
- while(choix2 == 0){
- choix2 = demander_menu();
- }
- config[1] = choix2;
- if(config[1] == 1){
- //si l'utilisateur choisit le mode débutant, on charge la difficulté facile.
- config[2] = 1; //difficultée facile
- config[4] = 99; //99s comme le mode facile
- config[5] = 12; //nombre de coup par défaut=12
- }
- //*******************fin partie menu*********************************
- //début partie choix couleur
- choix_couleur_initial(config[0]);
- //démarrage du jeu
- //on charge l'image principale du jeu
- load(chemin+"Mastermind/images/fond2.png");
- //on charge tout les graphismes
- affichage_palette_couleur();
- affichage_grille_gauche();
- affichage_grille_droite();
- affichage_palette_couleur_correcteur();
- //score
- int score = 0;
- for(int coup=1;coup<=config[5]+2;coup++){
- score = (score + 3*config[2] + config[1]*2) - coup;
- //le score est calculé en fonction du niveau de difficulté, du mode débutant/normal et du nombre de coups
- if(score < 0){
- score = 0;
- }
- lcd_score(score);
- lcd_coup(coup);
- coup_joueur_cherche(coup);
- if(config[0] == 2){
- corriger_auto(couleurs_j1_initial,couleurs_j1, config[1], coup);
- }else{
- if(config[3] == 1){
- corriger_auto(couleurs_j1_initial,couleurs_j1, config[1], coup);
- }else{
- coup_joueur_correcteur(coup);
- }
- }
- effacer_digits_coup();
- effacer_digits_score();
- }
- }
- void lcd_score(int r){
- //r = nombre à afficher pour le nb de coups: [0;99]
- int prem = r/10; //a afficher sur le digit de gauche
- int second = r - 10*prem; //a afficher sur le digit de droite
- lcd_aff_seg_digit(prem, 180,95,20); //on affiche le premier segment
- lcd_aff_seg_digit(second, 220,95,20); //le second
- }
- void lcd_coup(int r){
- //r = nombre à afficher pour le nb de coups: [0;99]
- int prem = r/10; //a afficher sur le digit de gauche
- int second = r - 10*prem; //a afficher sur le digit de droite
- lcd_aff_seg_digit(prem, 180,-20,20); //on affiche le premier segment
- lcd_aff_seg_digit(second, 220,-20,20); //le second
- }
- void lcd_temps(int r){
- //r = nombre à afficher pour le nb de coups: [0;99]
- int prem = r/10; //a afficher sur le digit de gauche
- int second = r - 10*prem; //a afficher sur le digit de droite
- lcd_aff_seg_digit(prem, 180,-155,20); //on affiche le premier segment
- lcd_aff_seg_digit(second, 220,-155,20); //le second
- }
- void lcd_aff_seg_digit(int r, int x, int y, int tailleseg){
- /*
- ********************************************************************************************************
- Paramètres: (chiffre [0;9], extremité gauche du segment, extremité haut du segment, taille des segments)
- ********************************************************************************************************
- /*cette fonction permet d'afficher un seul digit
- //pourra être réutilisé pour d'autres afficheurs */
- clear();
- int info_lcd[] = new int [3];
- info_lcd[0] = x; //centre sur la largeur:210
- info_lcd[1] = y; //centre sur la hauteur: -30
- info_lcd[2] = tailleseg; //tailles des segments:10
- //centre = pixel en haut à gauche du digit
- //Séquence affichage des différents digits
- //les numéros correspondent au numéro de segment et non le numéro affiché
- int lcdseg[][] = new int[11][8];
- //premier niveau = le chiffre affiché -1 (0 = chiffre1)
- //second niveau = la séquence à suivre pour afficher ce numéro
- //8 = segment non affiché
- int[]seg1 = {1,2,4,5,6,7,8}; //code afficher 0
- int[]seg2 = {7,6,8,8,8,8,8}; //code afficher 1...
- int[]seg3 = {1,2,6,5,3,8,8};
- int[]seg4 = {1,2,6,7,3,8,8};
- int[]seg5 = {4,6,3,7,8,8,8};
- int[]seg6 = {1,2,3,4,7,8,8};
- int[]seg7 = {1,2,3,4,5,7,8};
- int[]seg8 = {1,6,7,8,8,8,8};
- int[]seg9 = {1,2,3,4,5,6,7};
- int[]seg10 = {1,2,3,4,8,6,7};
- int[]segeff = {8,8,8,8,8,8,8};
- lcdseg[0] = seg1;
- lcdseg[1] = seg2;
- lcdseg[2] = seg3;
- lcdseg[3] = seg4;
- lcdseg[4] = seg5;
- lcdseg[5] = seg6;
- lcdseg[6] = seg7;
- lcdseg[7] = seg8;
- lcdseg[8] = seg9;
- lcdseg[9] = seg10;
- lcdseg[10] = segeff;
- //effacer_digits_coup();
- for(int w = 0; w<7; w++){
- if(lcdseg[r][w] == 1){
- seghm(info_lcd);
- }
- if(lcdseg[r][w] == 2){
- segbm(info_lcd);
- }
- if(lcdseg[r][w] == 3){
- segmm(info_lcd);
- }
- if(lcdseg[r][w] == 4){
- seghg(info_lcd);
- }
- if(lcdseg[r][w] == 5){
- segbg(info_lcd);
- }
- if(lcdseg[r][w] == 6){
- seghd(info_lcd);
- }
- if(lcdseg[r][w] == 7){
- segbd(info_lcd);
- }
- }//fin
- //partie correspondence:
- //fin affichage digit
- }
- //début affichage segments
- void seghm(int[]inf){
- for(int i = inf[0]; i<= inf[0]+inf[2]; i++){
- setPixel(i, inf[1], "cyan");
- }
- }
- void segbm(int[]inf){
- for(int i = inf[0]; i<= inf[0]+inf[2]; i++){
- setPixel(i, inf[1]-60, "cyan");
- }
- }
- void segmm(int[]inf){
- for(int i = inf[0]; i<= inf[0]+inf[2]; i++){
- setPixel(i, inf[1]-30, "cyan");
- }
- }
- void seghg(int[]inf){
- for(int i = inf[1]-30; i<= inf[1]; i++){
- setPixel(inf[0]-3, i, "cyan");
- }
- }
- void segbg(int[]inf){
- for(int i = inf[1]-60; i<= inf[1]-30; i++){
- setPixel(inf[0]-3, i, "cyan");
- }
- }
- void seghd(int[]inf){
- for(int i = inf[1]-30; i<= inf[1]; i++){
- setPixel(inf[0]+inf[2]+3, i, "cyan");
- }
- }
- void segbd(int[]inf){
- for(int i = inf[1]-60; i<= inf[1]-30; i++){
- setPixel(inf[0]+inf[2]+3, i, "cyan");
- }
- }
- void effacer_digits_coup(){
- for(int i = 170; i<=250;i++){
- for(int k = -93; k<= -3; k++){
- setPixel(i, k, 102, 102, 102);
- }
- }
- }
- void effacer_digits_score(){
- for(int i = 170; i<=250;i++){
- for(int k = 27; k<=116; k++){
- setPixel(i, k, 102, 102, 102);
- }
- }
- }
- void effacer_digits_temps(){
- for(int i = 170; i<=250;i++){
- for(int k = -228; k<=-120; k++){
- setPixel(i, k, 102, 102, 102);
- }
- }
- }
- //fin affichage segments
- void affichage_palette_couleur(){
- clear();
- int largeur = getWidth();
- int hauteur = getHeight();
- int taille_cases = 10;
- int tab_centre_pt[][][] = new int[8][8][3];
- int hauteur_palette = -hauteur+20; //hauteur centre palette
- //couleurs palette:
- int []rouge = {250,38,21}; //rouge
- int []vert = {2,221,9}; //vert
- int []jaune = {255,255,51}; //jaune
- int []bleu = {0,255,255}; //bleu
- int []violet = {179,14,211}; //violet
- int []orange = {255,126,39}; //orange
- int []blanc = {255,255,255}; //blanc
- int []noir = {0,0,0}; //noir
- tab_centre_pt[2][1] = rouge;
- tab_centre_pt[2][2] = vert;
- tab_centre_pt[2][3] = jaune;
- tab_centre_pt[2][4] = bleu;
- tab_centre_pt[2][5] = violet;
- tab_centre_pt[2][6] = orange;
- tab_centre_pt[2][7] = blanc;
- tab_centre_pt[2][0] = noir;
- int cpt = 0;
- for(int i = 15; i<=280; i = i+35){
- tab_centre_pt[1][cpt][0] = -largeur+i;
- cpt++;
- }
- for(int j = hauteur_palette -taille_cases; j <= hauteur_palette +taille_cases; j++){
- for(int cpt2 = 0; cpt2 <= 7; cpt2++){
- for(int k = tab_centre_pt[1][cpt2][0] -taille_cases; k <= tab_centre_pt[1][cpt2][0] +taille_cases; k++){
- setPixel(k, j, tab_centre_pt[2][cpt2][0], tab_centre_pt[2][cpt2][1], tab_centre_pt[2][cpt2][2]);
- }
- }
- }
- //fin affichage palette couleur
- }
- void affichage_grille_gauche(){
- /*240 - (-197) = 437 (amplitude hauteur)
- * 437/12 = 37
- *
- */
- //affiche les lignes horizontales
- for(int a = -197; a<= 240; a = a+37){
- for(int b = -250; b<=30; b++){
- setPixel(b, a, "black");
- }
- }
- //affichage case
- //30- -250 = 280: amplitude sur les x
- //280/4 = 70
- int centre_case_x=0;
- int centre_case_y=0;
- int epaisseur = 4; //epaisseur des cases
- int taille_case = 10; // taille des cases
- for(int y = -160; y<= 277; y = y+37){
- //centre la case sur les y
- centre_case_y=y-37/2;
- for(int x = -180; x<100; x = x+70 ){
- //centre la case sur les x
- centre_case_x=x-70/2;
- //affiche les cases pleines avec les bordures
- for(int gauche = centre_case_x-taille_case-epaisseur; gauche<= centre_case_x+taille_case+epaisseur; gauche++){
- for(int haut = centre_case_y-taille_case-epaisseur; haut<= centre_case_y+taille_case+epaisseur; haut++){
- setPixel(gauche, haut, "black");
- }
- }
- //on efface l'intérieur des cases
- for(int gauche = centre_case_x-taille_case-epaisseur/2; gauche<= centre_case_x+epaisseur/2+taille_case; gauche++){
- for(int haut = centre_case_y-taille_case-epaisseur/2; haut<= centre_case_y+epaisseur/2+taille_case; haut++){
- setPixel(gauche, haut, 195,195,180);
- }
- }
- }
- }
- //fin procedure affichage grille gauche
- }
- void affichage_grille_droite(){
- /*240 - (-197) = 437 (amplitude hauteur)
- * 437/12 = 37
- *
- * 159 -36 = 123 (amplitude largeur)
- *
- */
- //affiche les lignes horizontales
- for(int a = -197; a<= 240; a = a+37){
- for(int b = 36; b<=159; b++){
- setPixel(b, a, "black");
- }
- }
- //affichage case
- /* 159 -36 = 123 (amplitude largeur)
- * 123/4 = 31 */
- int centre_case_x=0;
- int centre_case_y=0;
- int epaisseur =2; //epaisseur des cases
- int taille_case = 3; // taille des cases
- for(int y = -160; y<= 277; y = y+37){
- //centre la case sur les y
- centre_case_y=y-37/2;
- for(int x = 67; x<=190; x = x+31 ){
- //centre la case sur les x
- centre_case_x=x-31/2;
- //affiche les cases pleines avec les bordures
- for(int gauche = centre_case_x-taille_case-epaisseur; gauche<= centre_case_x+taille_case+epaisseur; gauche++){
- for(int haut = centre_case_y-taille_case-epaisseur; haut<= centre_case_y+taille_case+epaisseur; haut++){
- setPixel(gauche, haut, "black");
- }
- }
- //on efface l'intérieur des cases
- for(int gauche = centre_case_x-taille_case-epaisseur/2; gauche<= centre_case_x+epaisseur/2+taille_case; gauche++){
- for(int haut = centre_case_y-taille_case-epaisseur/2; haut<= centre_case_y+epaisseur/2+taille_case; haut++){
- setPixel(gauche, haut, 195,195,180);
- }
- }
- }
- }
- //fin procedure affichage grille droite
- }
- void affichage_palette_couleur_correcteur(){
- int largeur = getWidth();
- int hauteur = getHeight();
- //création première case
- int hauteur_pixel = -212; //coordonnées hauteur centre sur y
- int largeur_pixel = 70; // coordonnées largeur centre sur x
- int taille_case = 8; // taille case à partir du centre
- for(int x = largeur_pixel - taille_case; x<= largeur_pixel+taille_case; x++ ){
- for(int y = hauteur_pixel - taille_case; y<= hauteur_pixel+taille_case; y++ ){
- setPixel(x, y, 250,38,22);
- }
- }
- //création seconde case
- hauteur_pixel = -212; //coordonnées hauteur centre sur y
- largeur_pixel = 120; // coordonnées largeur centre sur x
- for(int x = largeur_pixel - taille_case; x<= largeur_pixel+taille_case; x++ ){
- for(int y = hauteur_pixel - taille_case; y<= hauteur_pixel+taille_case; y++ ){
- setPixel(x, y, 0,0,1);
- }
- }
- //Fin affichage palette couleurs correction
- }
- void afficher_couleurs_coup(int coup){
- int []rouge = {250,38,21}; //rouge
- int []vert = {2,221,9}; //vert
- int []jaune = {255,255,51}; //jaune
- int []bleu = {0,255,255}; //bleu
- int []violet = {179,14,211}; //violet
- int []orange = {255,126,39}; //orange
- int []blanc = {255,255,255}; //blanc
- int []noir = {0,0,0}; //noir
- int[] color = new int[3];
- for(int aff_couleur = 1; aff_couleur<=4; aff_couleur++){
- if(couleurs_j1[aff_couleur-1] == "rouge"){
- color = rouge;
- }
- if(couleurs_j1[aff_couleur-1] == "vert"){
- color = vert;
- }
- if(couleurs_j1[aff_couleur-1] == "jaune"){
- color = jaune;
- }
- if(couleurs_j1[aff_couleur-1] == "bleu"){
- color = bleu;
- }
- if(couleurs_j1[aff_couleur-1] == "violet"){
- color = violet;
- }
- if(couleurs_j1[aff_couleur-1] == "orange"){
- color = orange;
- }
- if(couleurs_j1[aff_couleur-1] == "blanc"){
- color = blanc;
- }
- if(couleurs_j1[aff_couleur-1] == "noir"){
- color =noir;
- }
- afficher_couleur_grille(aff_couleur,coup,color);
- }
- }
- void afficher_couleurs_correcteur(int coup){
- int[]rouge ={250,38,22};//rouge
- int[]noir = {0,0,1}; //noir
- int[]rien = {195, 195, 180}; //rien dans la case
- int[] color = new int[3];
- for(int aff_couleur = 1; aff_couleur<=4; aff_couleur++){
- if(couleurs_j2[aff_couleur-1] == "rouge"){
- color = rouge;
- }
- if(couleurs_j2[aff_couleur-1] == "noir"){
- color =noir;
- }
- if(couleurs_j2[aff_couleur-1] == "rien"){
- color = rien;
- }
- afficher_couleur_correcteur(aff_couleur,coup,color); //affiche une couleur
- }
- }
- void afficher_couleur_grille(int num_case_x, int num_case_y, int[]couleur){
- int grille_gauche[][][] = new int[4][12][2]; //tableau qui stocke les coordonnées des cases
- int centre_case_x=0;
- int centre_case_y=0;
- int cpt_x = 0;
- int cpt_y = 0;
- for(int y = -160; y<= 277; y = y+37){
- //stocker les coordonnées réelles de la case sur y
- centre_case_y=y-37/2;
- for(int x = -180; x<100; x = x+70 ){
- //stocker les coordonnées réelles de la case sur x
- centre_case_x=x-70/2;
- grille_gauche[cpt_x][cpt_y][0] = centre_case_x;
- grille_gauche[cpt_x][cpt_y][1] = centre_case_y;
- cpt_x++;
- }
- cpt_y++;
- cpt_x = 0;
- }
- int epaisseur = 4; //epaisseur des cases
- int taille_case = 10; // taille des cases
- int xcase = grille_gauche[num_case_x-1][num_case_y-1][0];
- int ycase = grille_gauche[num_case_x-1][num_case_y-1][1];
- //cases sur x allant de 1 à 4 et sur y allant de 1 à 12. Il faudra donc enlever 1 pour retrouver le bon index du tableau.
- //setPixel(grille_gauche[num_case_x-1][num_case_y-1][0], grille_gauche[num_case_x-1][num_case_y-1][1], "red");
- //on efface l'intérieur des cases
- for(int gauche = xcase-taille_case-epaisseur/2; gauche<= xcase+epaisseur/2+taille_case; gauche++){
- for(int haut = ycase-taille_case-epaisseur/2; haut<= ycase+epaisseur/2+taille_case; haut++){
- setPixel(gauche, haut, couleur[0], couleur[1], couleur[2]);
- }
- }
- }
- void afficher_couleur_correcteur(int num_case_x, int num_case_y, int[]couleur){
- int grille_droite[][][] = new int[4][12][2]; //tableau qui stocke les coordonnées des cases
- int centre_case_x=0;
- int centre_case_y=0;
- int cpt_x = 0;
- int cpt_y = 0;
- for(int y = -160; y<= 277; y = y+37){
- //stocker les coordonnées réelles de la case sur y
- centre_case_y=y-37/2;
- for(int x = 67; x<190; x = x+31 ){
- //stocker les coordonnées réelles de la case sur x
- centre_case_x=x-31/2;
- grille_droite[cpt_x][cpt_y][0] = centre_case_x;
- grille_droite[cpt_x][cpt_y][1] = centre_case_y;
- cpt_x++;
- }
- cpt_y++;
- cpt_x = 0;
- }
- int epaisseur = 4; //épaisseur des cases
- int taille_case = 2; // taille des cases
- int xcase = grille_droite[num_case_x-1][num_case_y-1][0];
- int ycase = grille_droite[num_case_x-1][num_case_y-1][1];
- //on efface l'intérieur des cases
- for(int gauche = xcase-taille_case-epaisseur/2; gauche<= xcase+epaisseur/2+taille_case; gauche++){
- for(int haut = ycase-taille_case-epaisseur/2; haut<= ycase+epaisseur/2+taille_case; haut++){
- setPixel(gauche, haut, couleur[0], couleur[1], couleur[2]);
- }
- }
- }
- void corriger_auto(String couleur_a_deviner_str[], String couleurJ_str[], int mode,int coup){
- clear();
- int couleur_a_deviner[] = new int[4];
- int couleurJ[] = new int[4];
- //partie conversion tableau de string en tableau d'entiers
- for(int r = 0; r<=3;r++){
- couleur_a_deviner[r] = conv_couleurstring_couleurint(couleur_a_deviner_str[r]);
- couleurJ[r] = conv_couleurstring_couleurint(couleurJ_str[r]);
- }
- //fin partie conversion
- String[]cases_pions = new String[4];
- //DEBUT PARTIE KEVIN GESTION DES COUPS
- int compteur = 0;
- if(couleur_a_deviner[0] == couleurJ[0]){
- if(mode == 1){
- cases_pions[compteur] = "rouge";
- compteur++;
- //println();
- }else{
- cases_pions[0] = "rouge";
- }
- }else{
- if(couleurJ[0] == couleur_a_deviner[1] || couleurJ[0] == couleur_a_deviner[2] || couleurJ[0] == couleur_a_deviner[3]){
- //println("pion noir");
- if(mode == 1){
- cases_pions[compteur] = "noir";
- compteur++;
- }else{
- cases_pions[0] = "noir";
- }
- }
- }
- if(couleur_a_deviner[1] == couleurJ[1]){
- //println("pion rouge");
- if(mode == 1){
- cases_pions[compteur] = "rouge";
- compteur++;
- }else{
- cases_pions[1] = "rouge";
- }
- }else{
- if(couleurJ[1] == couleur_a_deviner[0] || couleurJ[1] == couleur_a_deviner[2] || couleurJ[1] == couleur_a_deviner[3]){
- //println("pion noir");
- if(mode == 1){
- cases_pions[compteur] = "noir";
- compteur++;
- }else{
- cases_pions[1] = "noir";
- }
- }
- }
- if(couleur_a_deviner[2] == couleurJ[2]){
- //println("pion rouge");
- if(mode == 1){
- cases_pions[compteur] = "rouge";
- compteur++;
- }else{
- cases_pions[2] = "rouge";
- }
- }else{
- if(couleurJ[2] == couleur_a_deviner[0] || couleurJ[2] == couleur_a_deviner[1] || couleurJ[2] == couleur_a_deviner[3]){
- //println("pion noir");
- if(mode == 1){
- cases_pions[compteur] = "noir";
- compteur++;
- }else{
- cases_pions[2] = "noir";
- }
- }
- }
- if(couleur_a_deviner[3] == couleurJ[3]){
- //println("pion rouge");
- if(mode == 1){
- cases_pions[compteur] = "rouge";
- compteur++;
- }else{
- cases_pions[3] = "rouge";
- }
- }else{
- if(couleurJ[3] == couleur_a_deviner[0] || couleurJ[3] == couleur_a_deviner[1] || couleurJ[3] == couleur_a_deviner[2]){
- //println("pion noir");
- if(mode == 1){
- cases_pions[compteur] = "noir";
- compteur++;
- }else{
- cases_pions[3] = "noir";
- }
- }
- }
- //DEBUT PARTIE KEVIN GESTION DES COUPS
- if(couleurJ[0] == couleur_a_deviner[0] && couleurJ[1] == couleur_a_deviner[1] && couleurJ[2] == couleur_a_deviner[2] && couleurJ[3] == couleur_a_deviner[3]){
- ecran_fin(1);
- }
- //affichage des pions au bon endroit
- //afficher_couleur_correcteur(int num_case_x, int num_case_y, int[]couleur)
- int[]rouge = {250,38,21}; //rouge
- int []noir = {0,0,0}; //noir
- int[]rien = {195, 195, 180}; //rien dans la case
- for(int c = 0;c<=3;c++){
- if(cases_pions[c] == "noir"){
- afficher_couleur_correcteur(c+1, coup, noir);
- }
- if(cases_pions[c] == "rouge"){
- afficher_couleur_correcteur(c+1, coup, rouge);
- }
- if(cases_pions[c] == "null"){
- afficher_couleur_correcteur(c+1, coup, rouge);
- }
- }
- }
- int conv_couleurstring_couleurint(String couleur){
- //on va convertir la couleur qui est en String en un entier.
- //C'est nécessaire pour certaines fonctions.
- int couleur_int = 0;
- if(couleur == "rouge"){
- couleur_int = 1;
- }
- if(couleur == "noir"){
- couleur_int = 8;
- }
- if(couleur == "vert"){
- couleur_int = 2;
- }
- if(couleur == "rouge"){
- couleur_int = 1;
- }
- if(couleur == "jaune"){
- couleur_int = 3;
- }
- if(couleur == "bleu"){
- couleur_int = 4;
- }
- if(couleur == "violet"){
- couleur_int = 5;
- }
- if(couleur == "orange"){
- couleur_int = 6;
- }
- if(couleur == "blanc"){
- couleur_int = 7;
- }
- return couleur_int;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement