Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.InputMismatchException;
- import java.util.Scanner;
- public class Kingdomino {
- // FONCTION POUR LE DEBUG
- private static boolean debug = false;
- // les terrains sur la partie gauche de chaque domino ; p=prairie, m=marais,
- // c=champ,f=forêt, e=eau, M=mine.
- static String domino_terrain_g[] = { "p", "c", "c", "e", "f", "c", "e", "f", "c", "f", "m", "e", "f", "c", "c", "M",
- "e", "c", "m", "f", "c", "c", "m", "c", "f", "c", "f", "e", "p", "f", "e", "e", "f", "c", "f", "f", "e",
- "f", "f", "f", "c", "M", "e", "p", "e", "e", "f", "c" };
- // les terrains sur la partie droite de chaque domino, les lettres ont la
- // même
- // signification que ci-dessus.
- static String domino_terrain_d[] = { "m", "p", "m", "f", "f", "f", "e", "c", "p", "e", "m", "c", "c", "c", "c", "e",
- "M", "M", "e", "m", "e", "m", "M", "m", "c", "p", "p", "e", "p", "f", "f", "f", "p", "e", "c", "f", "c",
- "c", "p", "c", "m", "c", "p", "p", "p", "f", "f", "m" };
- // le nombre de couronnes sur la partie gauche de chaque domino
- static int domino_couronne_g[] = { 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0,
- 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0 };
- // le nombre de couronnes sur la partie droite de chaque domino
- static int domino_couronne_d[] = { 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 2, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 2, 0, 0, 2 };
- // indique si le domino est déjà joué (true) ou pas (false).
- static boolean domino_joue[] = new boolean[48];
- // tableau contenant les terrains de chaque joueur ; indice 1= numéro de
- // ligne,
- // indice 2= numéro de colonne, indice 3= numéro du joueur.
- static String platjeu_terrain[][][] = new String[13][13][2];
- // tableau contenant le nombre de couronne de chaque joueur ; indice 1=
- // numéro
- // de ligne, indice 2= numéro de colonne, indice 3= numéro du joueur.
- static int platjeu_couronne[][][] = new int[13][13][2];
- // Initialise le plateau de jeu et definit tous les dominos comme étant non
- // joués.
- public static void initialisation() {
- for (int i = 0; i < 48; i++) {
- domino_joue[i] = false;
- }
- for (int joueur = 0; joueur < 2; joueur++) {
- for (int ligne = 0; ligne < 13; ligne++) {
- for (int colonne = 0; colonne < 13; colonne++) {
- platjeu_terrain[ligne][colonne][joueur] = " ";
- platjeu_couronne[ligne][colonne][joueur] = 0;
- }
- }
- }
- platjeu_terrain[6][6][0] = "C";
- platjeu_terrain[6][6][1] = "C";
- }
- // Choisit un domino au hasard, valeur retournée = numéro du domino ou -1 si
- // tous les dominos sont joués.
- public static int choix_domino() {
- int domino;
- boolean dominos_tous_joues = true;
- for (int i = 0; i < 48; i++) {
- if (domino_joue[i] != true) {
- dominos_tous_joues = false;
- }
- }
- if (!dominos_tous_joues) {
- do {
- domino = (int) (Math.random() * 48);
- } while (domino_joue[domino] == true);
- domino_joue[domino] = true;
- return domino;
- } else {
- return -1;
- }
- }
- // Indique si la case à la ligne "l" et la colonne "c" colle bien le
- // château.
- public static boolean case_colle_chateau(int l, int c) {
- return ((l == 5) && (c == 6)) || ((l == 6) && (c == 7)) || ((l == 7) && (c == 6)) || ((l == 6) && (c == 5));
- }
- // indique si la case à la ligne "ligne" et à la colonne "colonne" est bien
- // dans
- // le plateau de jeu.
- public static boolean case_dans_tableau(int ligne, int colonne) {
- return (((ligne <= 12) && (ligne >= 0)) && ((colonne <= 12) && (colonne >= 0)));
- }
- // Indique si la case à la ligne "ligne" et à la colonne "colonne" du joueur
- // "joueur" est vide ou non
- public static boolean case_vide(int ligne, int colonne, int joueur) {
- return (platjeu_terrain[ligne][colonne][joueur].contentEquals(" "));
- }
- // Indique si la case à la ligne "ligne" et à la colonne "colonne" du joueur
- // "joueur" colle un terrain de meme nature que le terrain "terrain".
- public static boolean case_colle_terrain(String terrain, int ligne, int colonne, int joueur) {
- String terrain_dessus, terrain_dessous, terrain_droite, terrain_gauche;
- if (ligne > 1) {
- terrain_dessus = platjeu_terrain[ligne - 1][colonne][joueur];
- } else {
- terrain_dessus = " ";
- }
- if (ligne < 12) {
- terrain_dessous = platjeu_terrain[ligne + 1][colonne][joueur];
- } else {
- terrain_dessous = " ";
- }
- if (colonne > 1) {
- terrain_gauche = platjeu_terrain[ligne][colonne - 1][joueur];
- } else {
- terrain_gauche = " ";
- }
- if (colonne < 12) {
- terrain_droite = platjeu_terrain[ligne][colonne + 1][joueur];
- } else {
- terrain_droite = " ";
- }
- return ((terrain == terrain_dessus) || (terrain == terrain_dessous) || (terrain == terrain_gauche)
- || (terrain == terrain_droite));
- }
- // Indique si on a le droit de mettre le domino "domino" à la ligne "ligne"
- // et à
- // la colonne "colonne" pour le joueur "joueur" ; valeur retournée= true si
- // positionnement autorisé.
- public static boolean positionnement_autorise(int domino, int ligne1, int colonne1, String orientation,
- int joueur) {
- boolean P;
- boolean colle_chateau;
- boolean dans_tableau;
- boolean colle_terrain;
- boolean positionnement_sur_cases_vides;
- int ligne2 = ligne1;
- int colonne2 = colonne1;
- boolean erreur = false;
- switch (orientation) {
- case "d":
- ligne2 = ligne1;
- colonne2 = colonne1 + 1;
- break;
- case "g":
- ligne2 = ligne1;
- colonne2 = colonne1 - 1;
- break;
- case "h":
- ligne2 = ligne1 - 1;
- colonne2 = colonne1;
- break;
- case "b":
- ligne2 = ligne1 + 1;
- colonne2 = colonne1;
- break;
- default:
- erreur = true;
- }
- dans_tableau = case_dans_tableau(ligne1, colonne1) && case_dans_tableau(ligne2, colonne2);
- if (dans_tableau && !erreur) {
- colle_chateau = case_colle_chateau(ligne1, colonne1) || case_colle_chateau(ligne2, colonne2);
- positionnement_sur_cases_vides = case_vide(ligne1, colonne1, joueur) && case_vide(ligne2, colonne2, joueur);
- colle_terrain = case_colle_terrain(domino_terrain_g[domino], ligne1, colonne1, joueur)
- || case_colle_terrain(domino_terrain_d[domino], ligne2, colonne2, joueur);
- P = ((colle_chateau || colle_terrain) && positionnement_sur_cases_vides && taille_7x7(ligne1,colonne1,ligne2,colonne2,joueur));
- } else {
- P = false;
- }
- return P;
- }
- // calcul le nombre de lignes du début vierges
- public static int lignes_debut(int joueur) {
- int nombre_lignes_vierges_début = 0;
- for (int i = 0; i < 13; i++) {
- int k = 0;
- for (int j = 0; j < 13; j++) {
- if (case_vide(i, j, joueur) == true) {
- k++;
- }
- }
- if (k == 13) {
- nombre_lignes_vierges_début++;
- } else {
- break;
- }
- }
- return nombre_lignes_vierges_début;
- }
- // calcul le nombre de lignes de la fin vierge
- public static int lignes_fin(int joueur) {
- int nombre_lignes_vierges_fin = 0;
- for (int i = 12; i >= 0; i--) {
- int k = 0;
- for (int j = 0; j < 13; j++) {
- if (case_vide(i, j, joueur) == true) {
- k++;
- }
- }
- if (k == 13) {
- nombre_lignes_vierges_fin++;
- } else {
- break;
- }
- }
- return nombre_lignes_vierges_fin;
- }
- // calcul le nombre de colonnes du début vierges
- public static int colonnes_debut(int joueur) {
- int nombre_colonnes_vierges_début = 0;
- for (int i = 0; i < 13; i++) {
- int k = 0;
- for (int j = 0; j < 13; j++) {
- if (case_vide(j, i, joueur) == true) {
- k++;
- }
- }
- if (k == 13) {
- nombre_colonnes_vierges_début++;
- } else {
- break;
- }
- }
- return nombre_colonnes_vierges_début;
- }
- // calcul le nombre de colonnes de la fin vierges
- public static int colonnes_fin(int joueur) {
- int nombre_colonnes_vierges_début = 0;
- for (int i = 12; i >= 0; i--) {
- int k = 0;
- for (int j = 0; j < 13; j++) {
- if (case_vide(j, i, joueur) == true) {
- k++;
- }
- }
- if (k == 13) {
- nombre_colonnes_vierges_début++;
- } else {
- break;
- }
- }
- return nombre_colonnes_vierges_début;
- }
- public static boolean empireDuMilieu (int joueur) {
- boolean leBoolean;
- int nombre_lignes_vierges_début=0;
- int nombre_lignes_vierges_fin=0;
- int nombre_colonnes_vierges_début=0;
- int nombre_colonnes_vierges_fin=0;
- nombre_lignes_vierges_début=lignes_debut(joueur);
- nombre_lignes_vierges_fin=lignes_fin(joueur);
- nombre_colonnes_vierges_début=colonnes_debut(joueur);
- nombre_colonnes_vierges_fin=colonnes_fin(joueur);
- if (nombre_lignes_vierges_début==nombre_lignes_vierges_fin) {
- if (nombre_colonnes_vierges_début==nombre_colonnes_vierges_fin) {
- leBoolean=true;
- }
- else leBoolean=false;
- }
- else {
- leBoolean=false;
- }
- return leBoolean;
- }
- /*
- //Tableau de 7 par 7
- public static boolean taille_7x7_origine(int joueur) {
- boolean leBoolean;
- leBoolean=true;
- //Plateau de 7 par 7.
- int nombre_lignes_vierges_début=0;
- int nombre_lignes_vierges_fin=0;
- int nombre_colonnes_vierges_début=0;
- int nombre_colonnes_vierges_fin=0;
- nombre_lignes_vierges_début=lignes_début(joueur);
- nombre_lignes_vierges_fin=lignes_fin(joueur);
- nombre_colonnes_vierges_début=colonnes_début(joueur);
- nombre_colonnes_vierges_fin=colonnes_fin(joueur);
- if ((nombre_lignes_vierges_début + nombre_lignes_vierges_fin) < 6) {
- leBoolean=false;
- }
- if ((nombre_colonnes_vierges_début + nombre_colonnes_vierges_fin) < 6) {
- leBoolean=false;
- }
- return leBoolean;
- }
- */
- // Règle du tableau de 7 par 7
- public static boolean taille_7x7(int ligne1, int colonne1, int ligne2, int colonne2, int joueur) {
- int ligne_min, ligne_max, colonne_min, colonne_max; // initialisation du nombre de lignes et de colonnes que prennent l'ensemble des dominos placés dans le plateau de jeu
- int ligne, colonne;// initialisation d'une ligne et d'une colonne quelconque à partir d'ici, le joueur n'a pas encore placé le domino
- ligne_min = ligne1;
- colonne_min = colonne1;
- ligne_max = ligne1;
- colonne_max = colonne1;// affectation d'une valeur a ligne min et ligne max qui evoluera par la suite
- if (ligne2 < ligne_min) {
- ligne_min = ligne2;
- }
- if (ligne2 > ligne_max) {
- ligne_max = ligne2;
- }
- if (colonne2 < ligne_min) {
- colonne_min = colonne2;
- }
- if (colonne2 > ligne_max) {
- colonne_max = colonne2;
- } // l'ordinateur va calculer la ligne min et la ligne max à l'aide de ligne2 et colonne2 si on place le domino a une position quelconque
- // à partir de maintenant, le joueur a placé son domino
- for (ligne = 0; ligne < 13; ligne++) {
- for (colonne = 0; colonne < 13; colonne++) {
- if (!case_vide(ligne, colonne, joueur)) {// après avoir parcouru le tableau, les cases qui nous interressent pour calculer ligne min, lignes max,
- // colonne min et colonne max sont les cases non vides
- if (ligne < ligne_min) {
- ligne_min = ligne;// la ligne min devient la ligne si cette ligne est plus petite que la ligne min déjà calculée
- }
- if (ligne > ligne_max) {
- ligne_max = ligne;// la ligne max devient la ligne si cette ligne est plus grande que la ligne max déjà calculée
- }
- if (colonne < colonne_min) {
- colonne_min = colonne;// la colonne min devient la colonne si cette colonne est plus petite que la colonne min déjà calculée
- }
- if (colonne > colonne_max) {
- colonne_max = colonne;// la colonne max devient la colonne si cette colonne est plus grande que la colonne déjà calculée
- }
- }
- }
- }
- return (((ligne_max - ligne_min) < 7) && ((colonne_max - colonne_min) < 7));// si la différence entre la ligne(resp colonne) la plus grande et la ligne(resp colonne)
- // la plus petite est inferieure à 7, alors elle est contenue dans un tableau de 7x7
- }
- // Affiche les deux dominos d'indice "domino1" et "domino2".
- public static void affiche_deux_dominos(int domino1, int domino2) {
- System.out.println(" ------- ------- ");
- System.out.print("1 : |");
- if (domino_couronne_g[domino1] != 0) {
- System.out.print(domino_couronne_g[domino1]);
- } else {
- System.out.print(" ");
- }
- System.out.print(domino_terrain_g[domino1]);
- System.out.print("|");
- System.out.print(domino_terrain_d[domino1]);
- if (domino_couronne_d[domino1] != 0) {
- System.out.print(domino_couronne_d[domino1]);
- } else {
- System.out.print(" ");
- }
- System.out.print("| 2 : |");
- if (domino_couronne_g[domino2] != 0) {
- System.out.print(domino_couronne_g[domino2]);
- } else {
- System.out.print(" ");
- }
- System.out.print(domino_terrain_g[domino2]);
- System.out.print("|");
- System.out.print(domino_terrain_d[domino2]);
- if (domino_couronne_d[domino2] != 0) {
- System.out.print(domino_couronne_d[domino2]);
- } else {
- System.out.print(" ");
- }
- System.out.println("|");
- System.out.println(" ------- ------- ");
- }
- // Affiche un domino d'indice "domino".
- public static void affiche_un_domino(int domino) {
- System.out.println(" ------- ");
- System.out.print("domino restant : |");
- if (domino_couronne_g[domino] != 0) {
- System.out.print(domino_couronne_g[domino]);
- } else {
- System.out.print(" ");
- }
- System.out.print(domino_terrain_g[domino]);
- System.out.print("|");
- System.out.print(domino_terrain_d[domino]);
- if (domino_couronne_d[domino] != 0) {
- System.out.print(domino_couronne_d[domino]);
- } else {
- System.out.print(" ");
- }
- System.out.println("|");
- System.out.println(" ------- ");
- }
- // Demande au joueur "joueur" le numéro du domino qu'il veut jouer parmi les
- // deux qui lui sont présentés ; valeur retournée = 1 (choix du premier
- // domino)
- // ou 2 (choix du deuxième).
- public static int choix_domino_par_joueur(int joueur, String joueur1, String joueur2) {
- Scanner sc = new Scanner(System.in);
- int domino;
- if (joueur == 0) {
- System.out.println(joueur1 + ", c'est à toi. Choisis un domino : ");
- do {
- domino = 0;
- System.out.println("Tape 1 ou 2 :");
- try {
- domino = sc.nextInt();
- } catch (InputMismatchException ex) {
- sc.nextLine();
- }
- } while ((domino != 1) && (domino != 2));
- } else {
- System.out.println(joueur2 + ", c'est à toi. Choisis un domino : ");
- do {
- domino = 0;
- System.out.println("Tape 1 ou 2 :");
- try {
- domino = sc.nextInt();
- } catch (InputMismatchException ex) {
- sc.nextLine();
- }
- } while ((domino != 1) && (domino != 2));
- }
- // sc.close();
- return domino;
- }
- public static int choix_domino_Intelligence_artificielle(int joueur, String joueur_solo,
- String intelligence_artificielle) {
- Scanner sc = new Scanner(System.in);
- int domino = 0;
- if (joueur == 0) {
- System.out.println(joueur_solo + ", c'est à toi. Choisis un domino : ");
- do {
- domino = 0;
- System.out.println("Tape 1 ou 2 :");
- try {
- domino = sc.nextInt();
- } catch (InputMismatchException ex) {
- sc.nextLine();
- }
- } while ((domino != 1) && (domino != 2));
- } else {
- domino = (int) (Math.random() * 2) + 1;
- if (domino == 2) {
- System.out.println("le domino choisi par l'ordinateur est le " + domino + "ème");
- }
- if (domino == 1) {
- System.out.println("le domino choisi par l'ordinateur est le " + domino + "er");
- }
- }
- return domino;
- }
- public static int choix_domino_IA_difficile(int joueur, String joueur_solo,
- String intelligence_artificielle) {
- Scanner sc = new Scanner(System.in);
- int domino = 0;
- if (joueur == 0) {
- System.out.println(joueur_solo + ", c'est à toi. Choisis un domino : ");
- do {
- domino = 0;
- System.out.println("Tape 1 ou 2 :");
- try {
- domino = sc.nextInt();
- } catch (InputMismatchException ex) {
- sc.nextLine();
- }
- } while ((domino != 1) && (domino != 2));
- } else {
- String orientation = " ";
- int k = 0;
- for (int dom = 0; dom < 2; dom++) {
- for (int ligne = 0; ligne < 13; ligne++) {
- for (int colonne = 0; colonne < 13; colonne++) {
- switch (orientation) {
- case "d":
- if (calcul_scores(joueur)<k){// méthode qui calcule le score du joueur sans prendre en compte dom, ligne,colonne, switch ;)
- k=calcul_scores(joueur);
- }
- case "g":
- if (calcul_scores(joueur)<k){
- k=calcul_scores(joueur);
- }
- case "h":
- if (calcul_scores(joueur)<k){
- k=calcul_scores(joueur);
- }
- case "b":
- if (calcul_scores(joueur)<k){
- k=calcul_scores(joueur);
- }
- }
- }
- }
- }
- int domino_choix;
- int i1;
- int j1;
- String orient;
- String orientation1 = " ";
- for (int choix_domino=0;choix_domino<2;choix_domino++){
- for (int i=0;i<13;i++) {
- for (int j=0;j<13;j++){
- switch (orientation1) {
- case "d":
- if (calcul_scores(joueur)==k){
- domino_choix=choix_domino;
- i1=i;
- j1=j;
- orient="d";
- }
- case "g":
- if (calcul_scores(joueur)==k){
- domino_choix=choix_domino;
- i1=i;
- j1=j;
- orient="g";
- }
- case "h":
- if (calcul_scores(joueur)==k){
- domino_choix=choix_domino;
- i1=i;
- j1=j;
- orient="h";
- }
- case "b":
- if (calcul_scores(joueur)==k){
- domino_choix=choix_domino;
- i1=i;
- j1=j;
- orient="b";
- }
- }
- }
- }
- }
- choix_ligne_par_intelligence_artificielle();
- choix_colonne_par_intelligence_artificielle();
- choix_orientation_par_intelligence_artificielle();
- }
- if (domino == 2) {
- System.out.println("le domino choisi par l'ordinateur est le " + domino + "ème");
- }
- if (domino == 1) {
- System.out.println("le domino choisi par l'ordinateur est le " + domino + "er");
- }
- return domino;
- }
- // Demande au joueur d'entrer le numéro de ligne dans laquelle il veut
- // placer
- // son domino ; valeur retournée = numéro de ligne;
- public static int choix_ligne() {
- Scanner sc = new Scanner(System.in);
- int ligne;
- do {
- System.out.print("numéro de ligne : ");
- ligne = 0;
- try {
- ligne = sc.nextInt();
- } catch (InputMismatchException ex) {
- sc.nextLine();
- }
- } while ((ligne < 1) && (ligne > 13));
- // sc.close();
- return ligne - 1;
- }
- // Demande au joueur d'entrer le numéro de colonne dans laquelle il veut
- // placer
- // son domino ; valeur retournée = numéro de colonne;
- public static int choix_colonne() {
- Scanner sc = new Scanner(System.in);
- int colonne;
- do {
- System.out.print("numéro de colonne : ");
- colonne = 0;
- try {
- colonne = sc.nextInt();
- } catch (InputMismatchException ex) {
- sc.nextLine();
- }
- } while ((colonne < 1) && (colonne > 13));
- // sc.close();
- return colonne - 1;
- }
- // Demande au joueur d'entrer l'orientation dans laquelle il veut placer son
- // domino ; valeur retournée : "g"=gauche, "d"=droite, "h"=haut, "b"=bas.
- public static String choix_orientation() {
- Scanner sc = new Scanner(System.in);
- String orientation;
- do {
- System.out.print("Orientation (g=gauche=+180°, d=droite=0°, h=haut=+90°, b=bas=-90°) : ");
- orientation = "a";
- try {
- orientation = sc.nextLine();
- } catch (InputMismatchException ex) {
- sc.nextLine();
- }
- } while ((!orientation.equals("g")) && (!orientation.equals("d")) && (!orientation.equals("h"))
- && (!orientation.equals("b")));
- // sc.close();
- return orientation;
- }
- // Demande au joueur "joueur" de placer le demino "domino" dans le plateau
- // de
- // jeu.
- public static void positionner_domino(int domino, int joueur) {
- int ligne;
- int colonne;
- String orientation;
- do {
- System.out.println("Où veux-tu le placer ? ");
- ligne = choix_ligne();
- colonne = choix_colonne();
- orientation = choix_orientation();
- } while (!positionnement_autorise(domino, ligne, colonne, orientation, joueur));
- platjeu_terrain[ligne][colonne][joueur] = domino_terrain_g[domino];
- platjeu_couronne[ligne][colonne][joueur] = domino_couronne_g[domino];
- if (orientation.equals("d")) {
- platjeu_terrain[ligne][colonne + 1][joueur] = domino_terrain_d[domino];
- platjeu_couronne[ligne][colonne + 1][joueur] = domino_couronne_d[domino];
- }
- if (orientation.equals("g")) {
- platjeu_terrain[ligne][colonne - 1][joueur] = domino_terrain_d[domino];
- platjeu_couronne[ligne][colonne - 1][joueur] = domino_couronne_d[domino];
- }
- if (orientation.equals("h")) {
- platjeu_terrain[ligne - 1][colonne][joueur] = domino_terrain_d[domino];
- platjeu_couronne[ligne - 1][colonne][joueur] = domino_couronne_d[domino];
- }
- if (orientation.equals("b")) {
- platjeu_terrain[ligne + 1][colonne][joueur] = domino_terrain_d[domino];
- platjeu_couronne[ligne + 1][colonne][joueur] = domino_couronne_d[domino];
- }
- }
- public static int choix_ligne_par_intelligence_artificielle() {
- int ligne;
- ligne = (int) (Math.random() * 14);
- return ligne - 1;
- }
- public static int choix_colonne_par_intelligence_artificielle() {
- int colonne;
- colonne = (int) (Math.random() * 14);
- return colonne - 1;
- }
- public static String choix_orientation_par_intelligence_artificielle() {
- String orientation[] = { "d", "g", "h", "b" };
- return orientation[(int) (Math.random() * 4)];
- }
- public static void positionnement_par_intelligence_artificielle(int domino) {
- int ligne;
- int colonne;
- String orientation;
- do {
- ligne = choix_ligne_par_intelligence_artificielle();
- colonne = choix_colonne_par_intelligence_artificielle();
- orientation = choix_orientation_par_intelligence_artificielle();
- } while (!positionnement_autorise(domino, ligne, colonne, orientation, 1));
- platjeu_terrain[ligne][colonne][1] = domino_terrain_g[domino];
- platjeu_couronne[ligne][colonne][1] = domino_couronne_g[domino];
- if (orientation.equals("d")) {
- platjeu_terrain[ligne][colonne + 1][1] = domino_terrain_d[domino];
- platjeu_couronne[ligne][colonne + 1][1] = domino_couronne_d[domino];
- }
- if (orientation.equals("g")) {
- platjeu_terrain[ligne][colonne - 1][1] = domino_terrain_d[domino];
- platjeu_couronne[ligne][colonne - 1][1] = domino_couronne_d[domino];
- }
- if (orientation.equals("h")) {
- platjeu_terrain[ligne - 1][colonne][1] = domino_terrain_d[domino];
- platjeu_couronne[ligne - 1][colonne][1] = domino_couronne_d[domino];
- }
- if (orientation.equals("b")) {
- platjeu_terrain[ligne + 1][colonne][1] = domino_terrain_d[domino];
- platjeu_couronne[ligne + 1][colonne][1] = domino_couronne_d[domino];
- }
- }
- // Affiche le plateau de jeu
- public static void affiche_tableau() {
- String espace_suppl = " ";
- System.out.println(" Joueur 1 : "+ calcul_scores(0)+" Joueur 2 : "+calcul_scores(1));
- System.out.println(" 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13 ");
- System.out.println(" ════════════════════════════════════════ ════════════════════════════════════════");
- for (int ligne = 0; ligne <= 12; ligne++) {
- if (ligne >= 9) {
- espace_suppl = "";
- }
- System.out.print(espace_suppl+(ligne+1)+" ");
- for (int colonne = 0; colonne <= 12; colonne++) {
- System.out.print("▌" + platjeu_terrain[ligne][colonne][0]);
- if (platjeu_couronne[ligne][colonne][0] == 0) {
- System.out.print(" ");
- } else {
- System.out.print(platjeu_couronne[ligne][colonne][0]);
- }
- }
- System.out.print("▌");
- System.out.print(" "+espace_suppl+(ligne +1)+" ");
- for (int colonne = 0; colonne <= 12; colonne++) {
- System.out.print("▌" + platjeu_terrain[ligne][colonne][1]);
- if (platjeu_couronne[ligne][colonne][1] == 0) {
- System.out.print(" ");
- } else {
- System.out.print(platjeu_couronne[ligne][colonne][1]);
- }
- }
- System.out.println("▌");
- System.out.println(" ════════════════════════════════════════ ════════════════════════════════════════");
- }
- }
- // Définit si le domino est jouable ou non
- public static boolean domino_jouable(int domino, int joueur) {
- boolean jouable = false;
- for (int ligne = 0; ligne < 13; ligne++) {
- for (int colonne = 0; colonne < 13; colonne++) {
- jouable = jouable || positionnement_autorise(domino, ligne, colonne, "d", joueur);
- jouable = jouable || positionnement_autorise(domino, ligne, colonne, "g", joueur);
- jouable = jouable || positionnement_autorise(domino, ligne, colonne, "h", joueur);
- jouable = jouable || positionnement_autorise(domino, ligne, colonne, "b", joueur);
- }
- }
- return jouable;
- }
- // affectation du numéro d'ensemble au terrain
- public static void numero_terrain(String terrain, int ligne, int colonne, int numero_ensemble_terrain[][],
- int num_terrain, int joueur) {
- if ((platjeu_terrain[ligne][colonne][joueur].equals(terrain))
- && (numero_ensemble_terrain[ligne][colonne] == 0)) {
- numero_ensemble_terrain[ligne][colonne] = num_terrain;
- if (ligne > 1) {
- numero_terrain(terrain, ligne - 1, colonne, numero_ensemble_terrain, num_terrain, joueur);
- }
- if (ligne < 12) {
- numero_terrain(terrain, ligne + 1, colonne, numero_ensemble_terrain, num_terrain, joueur);
- }
- if (colonne > 1) {
- numero_terrain(terrain, ligne, colonne - 1, numero_ensemble_terrain, num_terrain, joueur);
- }
- if (colonne < 12) {
- numero_terrain(terrain, ligne, colonne + 1, numero_ensemble_terrain, num_terrain, joueur);
- }
- }
- }
- // Calcul des scores
- public static int calcul_scores(int joueur) {
- int score = 0;
- int num_terrain = 1;
- int numero_ensemble_terrain[][] = new int[13][13];
- for (int ligne = 0; ligne < 13; ligne++) {
- for (int colonne = 0; colonne < 13; colonne++) {
- numero_ensemble_terrain[ligne][colonne] = 0;
- }
- }
- for (int ligne = 0; ligne < 13; ligne++) {
- for (int colonne = 0; colonne < 13; colonne++) {
- if (!platjeu_terrain[ligne][colonne][joueur].equals(" ")
- && (numero_ensemble_terrain[ligne][colonne] == 0)) {
- numero_terrain(platjeu_terrain[ligne][colonne][joueur], ligne, colonne, numero_ensemble_terrain,
- num_terrain, joueur);
- num_terrain++;
- }
- }
- }
- int nbe_terrains_ds_ensemble[] = new int[num_terrain - 1];
- for (int i = 0; i < (num_terrain - 1); i++) {
- nbe_terrains_ds_ensemble[i] = 0;
- }
- for (int ligne = 0; ligne < 13; ligne++) {
- for (int colonne = 0; colonne < 13; colonne++) {
- if (numero_ensemble_terrain[ligne][colonne] != 0) {
- nbe_terrains_ds_ensemble[numero_ensemble_terrain[ligne][colonne] - 1]++;
- }
- }
- }
- int nbe_couronnes_ds_ensemble[] = new int[num_terrain - 1];
- for (int ligne = 0; ligne < 13; ligne++) {
- for (int colonne = 0; colonne < 13; colonne++) {
- if ((numero_ensemble_terrain[ligne][colonne] != 0) && (platjeu_couronne[ligne][colonne][joueur] != 0)) {
- nbe_couronnes_ds_ensemble[numero_ensemble_terrain[ligne][colonne]
- - 1] += platjeu_couronne[ligne][colonne][joueur];
- }
- }
- }
- for (int i = 0; i < (num_terrain - 1); i++) {
- score += nbe_terrains_ds_ensemble[i] * nbe_couronnes_ds_ensemble[i];
- }
- return score;
- }
- // Calcul de la taille du domaine le plus
- public static int taille_domaine_le_plus_etendu(int joueur) {
- int taille = 0;
- int num_terrain = 1;
- int numero_ensemble_terrain[][] = new int[13][13];
- for (int ligne = 0; ligne < 13; ligne++) {
- for (int colonne = 0; colonne < 13; colonne++) {
- numero_ensemble_terrain[ligne][colonne] = 0;
- }
- }
- for (int ligne = 0; ligne < 13; ligne++) {
- for (int colonne = 0; colonne < 13; colonne++) {
- if (!platjeu_terrain[ligne][colonne][joueur].equals(" ")
- && (numero_ensemble_terrain[ligne][colonne] == 0)) {
- numero_terrain(platjeu_terrain[ligne][colonne][joueur], ligne, colonne, numero_ensemble_terrain,
- num_terrain, joueur);
- num_terrain++;
- }
- }
- }
- int nbe_terrains_ds_ensemble[] = new int[num_terrain - 1];
- for (int i = 0; i < (num_terrain - 1); i++) {
- nbe_terrains_ds_ensemble[i] = 0;
- }
- for (int ligne = 0; ligne < 13; ligne++) {
- for (int colonne = 0; colonne < 13; colonne++) {
- if (numero_ensemble_terrain[ligne][colonne] != 0) {
- nbe_terrains_ds_ensemble[numero_ensemble_terrain[ligne][colonne] - 1]++;
- }
- }
- }
- for (int i = 0; i < (num_terrain - 1); i++) {
- if (nbe_terrains_ds_ensemble[i] > taille) {
- taille = nbe_terrains_ds_ensemble[i];
- }
- }
- return taille;
- }
- // Calcul du plus grand nombre de couronnes
- public static int nbe_de_couronnes(int joueur) {
- int couronnes = 0;
- for (int ligne = 0; ligne < 13; ligne++) {
- for (int colonne = 0; colonne < 13; colonne++) {
- couronnes += platjeu_couronne[ligne][colonne][joueur];
- }
- }
- return couronnes;
- }
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int style_partie;
- int domino1;
- int domino2;
- int domino_choisi;
- String joueur1 = new String(), joueur2 = new String(), joueur_solo = new String(),
- intelligence_artificielle = "ordinateur";
- int ordinateur = 0;
- System.out.println("Quel type de partie voulez-vous jouer ? ");
- System.out.println("1 : partie contre ordinateur facile : ");
- System.out.println("2 : partie contre ordinateur difficile : ");
- System.out.println("3 : partie 2 joueurs: ");
- style_partie = sc.nextInt();
- if (style_partie==2){
- }
- if (style_partie == 3) {
- initialisation();
- do {
- // afficher le jeu
- affiche_tableau();
- // choisir le premier joueur aléatoirement
- int joueur = (int) (Math.random() * 2);
- // génerer deux dominos aléatoirement
- domino1 = choix_domino();
- domino2 = choix_domino();
- if ((domino1 != -1) && (domino2 != -1)) {
- // afficher les deux dominos
- affiche_deux_dominos(domino1, domino2);
- // demander au joueur choisi de choisir un domino parmi les
- // deux
- domino_choisi = choix_domino_par_joueur(joueur, joueur1, joueur2);
- // demander aux deux joueurs où placer les dominos tout en
- // respectant les règles
- if (joueur == 1) {
- if (domino_jouable(domino1, joueur)) {
- positionner_domino(domino1, joueur);
- affiche_tableau();
- } else {
- System.out.println("Domino défaussé mon pote... désolé");
- }
- System.out.println(joueur1 + " c'est à toi. ");
- if (domino_jouable(domino2, 1 - joueur)) {
- affiche_un_domino(domino2);
- positionner_domino(domino2, 1 - joueur);
- } else {
- System.out.println("Domino défaussé mon pote... désolé");
- }
- } else {
- if (domino_jouable(domino2, joueur)) {
- positionner_domino(domino2, joueur);
- affiche_tableau();
- } else {
- System.out.println("Domino défaussé mon pote... désolé");
- }
- System.out.println(joueur2 + " c'est à toi. ");
- if (domino_jouable(domino1, 1 - joueur)) {
- affiche_un_domino(domino1);
- positionner_domino(domino1, 1 - joueur);
- } else {
- System.out.println("Domino défaussé mon pote... désolé");
- }
- }
- }
- } while ((domino1 != -1) && (domino2 != -1));
- //Empire Du Milieu
- int score_final_0=calcul_scores(0);
- int score_final_1=calcul_scores(1);
- if (empireDuMilieu(0)==true) {
- score_final_0=score_final_0+10;
- }
- if (empireDuMilieu(1)==true) {
- score_final_1=score_final_1+10;
- }
- if (score_final_0==score_final_1) {
- if (taille_domaine_le_plus_etendu(0)==taille_domaine_le_plus_etendu(1)) {
- if (nbe_de_couronnes(0)==nbe_de_couronnes(1)) {
- System.out.println("Egalité !! ");
- }
- if (nbe_de_couronnes(0)>nbe_de_couronnes(1)) {
- System.out.println("Vainqueur : joueur 1");
- }
- if (nbe_de_couronnes(0)<nbe_de_couronnes(1)) {
- System.out.println("Vainqueur : joueur 2");
- }
- }
- if (taille_domaine_le_plus_etendu(0)>taille_domaine_le_plus_etendu(1)) {
- System.out.println("Vainqueur : joueur 1");
- }
- if (taille_domaine_le_plus_etendu(0)<taille_domaine_le_plus_etendu(1)) {
- System.out.println("Vainqueur : joueur 2");
- }
- }
- if (score_final_0>score_final_1) {
- System.out.println("Vainqueur : joueur 1");
- }
- if (score_final_0<score_final_1) {
- System.out.println("Vainqueur : joueur 2");
- }
- System.out.println("~FIN DE LA PARTIE~");
- }
- if (style_partie == 1) {
- initialisation();
- do {
- // afficher le jeu
- affiche_tableau();
- // choisir le premier joueur aléatoirement
- int joueur = (int) (Math.random() * 2);
- ordinateur = joueur;
- // génerer deux dominos aléatoirement
- domino1 = choix_domino();
- domino2 = choix_domino();
- if ((domino1 != -1) && (domino2 != -1)) {
- // afficher les deux dominos
- affiche_deux_dominos(domino1, domino2);
- // choix du domino par le joueur ou l'ordinateur
- domino_choisi = choix_domino_Intelligence_artificielle(joueur, joueur_solo,
- intelligence_artificielle);
- // demander aux deux joueurs où placer les dominos tout en
- // respectant les règles
- if (joueur == 1) {
- if (domino_choisi == 1) {
- if (domino_jouable(domino1, joueur)) {
- // do {
- positionnement_par_intelligence_artificielle(domino1);
- // } while
- // (positionnement_autorise(domino1,choix_ligne_par_intelligence_artificielle(),choix_colonne_par_intelligence_artificielle(),choix_orientation_par_intelligence_artificielle(),joueur)==false);
- affiche_tableau();
- } else {
- System.out.println("Domino défaussé pour l'ordinateur !");
- }
- System.out.println(joueur_solo + " c'est à toi. ");
- if (domino_jouable(domino2, 1 - joueur)) {
- affiche_un_domino(domino2);
- positionner_domino(domino2, 1 - joueur);
- } else {
- System.out.println("Domino défaussé mon pote... désolé");
- }
- }
- if (domino_choisi == 2) {
- if (domino_jouable(domino2, joueur)) {
- positionnement_par_intelligence_artificielle(domino2);
- affiche_tableau();
- } else {
- System.out.println("Domino défaussé pour l'ordinateur !");
- }
- System.out.println(joueur_solo + " c'est à toi. ");
- if (domino_jouable(domino1, 1 - joueur)) {
- affiche_un_domino(domino1);
- positionner_domino(domino1, 1 - joueur);
- } else {
- System.out.println("Domino défaussé mon pote... désolé");
- }
- }
- } else {
- if (domino_choisi == 1) {
- if (domino_jouable(domino1, joueur)) {
- positionner_domino(domino1, joueur);
- affiche_tableau();
- } else {
- System.out.println("Domino défaussé mon pote... désolé");
- }
- if (domino_jouable(domino2, 1 - joueur)) {
- affiche_un_domino(domino2);
- positionnement_par_intelligence_artificielle(domino2);
- affiche_tableau();
- } else {
- System.out.println("Domino défaussé pour l'ordinateur !");
- }
- }
- if (domino_choisi == 2) {
- if (domino_jouable(domino2, joueur)) {
- positionner_domino(domino2, joueur);
- affiche_tableau();
- } else {
- System.out.println("Domino défaussé mon pote... désolé");
- }
- if (domino_jouable(domino1, 1 - joueur)) {
- affiche_un_domino(domino1);
- // do {
- positionnement_par_intelligence_artificielle(domino1);
- // } while
- // (positionnement_autorise(domino1,choix_ligne_par_intelligence_artificielle(),choix_colonne_par_intelligence_artificielle(),choix_orientation_par_intelligence_artificielle(),1-joueur)==false);
- affiche_tableau();
- } else {
- System.out.println("Domino défaussé pour l'ordinateur !");
- }
- }
- }
- }
- } while ((domino1 != -1) && (domino2 != -1));
- //Empire Du Milieu
- int score_final_0=calcul_scores(0);
- int score_final_1=calcul_scores(1);
- if (empireDuMilieu(0)==true) {
- score_final_0=score_final_0+10;
- }
- if (empireDuMilieu(1)==true) {
- score_final_1=score_final_1+10;
- }
- if (score_final_0 == score_final_1) {
- if (taille_domaine_le_plus_etendu(0) == taille_domaine_le_plus_etendu(1)) {
- if (nbe_de_couronnes(0) == nbe_de_couronnes(1)) {
- System.out.println("Egalité !! ");
- }
- if (nbe_de_couronnes(0) > nbe_de_couronnes(1)) {
- System.out.println("Vainqueur : " + joueur1);
- }
- if (nbe_de_couronnes(0) < nbe_de_couronnes(1)) {
- System.out.println("Vainqueur : " + intelligence_artificielle);
- }
- }
- if (taille_domaine_le_plus_etendu(0) > taille_domaine_le_plus_etendu(1)) {
- System.out.println("Vainqueur : " + joueur1);
- }
- if (taille_domaine_le_plus_etendu(0) < taille_domaine_le_plus_etendu(1)) {
- System.out.println("Vainqueur : " + intelligence_artificielle);
- }
- }
- if (score_final_0 > score_final_1) {
- System.out.println("Vainqueur : " + joueur1);
- }
- if (score_final_0 < score_final_1) {
- System.out.println("Vainqueur : " + intelligence_artificielle);
- }
- System.out.println("~FIN DE LA PARTIE~");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement