Advertisement
Guest User

main

a guest
Feb 20th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 23.21 KB | None | 0 0
  1. // import com.sun.deploy.util.ArrayUtil;
  2.  
  3. import java.lang.reflect.Array;
  4. import java.util.*;
  5.  
  6. public class Main {
  7.  
  8.     public static void main(String[] args) {
  9.         Boolean gagné = false;
  10.         Scanner sc = new Scanner(System.in);
  11.         Case[] tabCase = new Case[5];
  12.         tabCase[0] = new Case();
  13.         tabCase[1] = new Case();
  14.         tabCase[2] = new Case();
  15.         tabCase[3] = new Case();
  16.         tabCase[4] = new Case();
  17.         boolean secResult = false;
  18.         BDD database = new BDD("root", "");
  19.  
  20.         boolean connected = database.testConnect();
  21.         while (!connected) {
  22.             System.out.println("Merci de rentrer votre username: ");
  23.             String login = sc.next();
  24.             database.setUsername(login);
  25.             System.out.print("Merci de rentrer votre password: ");
  26.             String password = sc.next();
  27.             database.setPassword(password);
  28.             connected = database.testConnect();
  29.  
  30.             if (!connected)
  31.                 System.out.println("Ça marche toujours pas!!!");
  32.  
  33.  
  34.         }
  35.  
  36.         String usernameOnline = "";
  37.  
  38.  
  39.         database.createBDD();
  40.         database.connectBDD();
  41.         database.createUsersTable();
  42.         database.createStatsTable();
  43.         String theNick = "";
  44.         System.out.println("Voulez vous jouer a Mastermind ? Il faut se connecter ou créer un compte.");
  45.         System.out.println("Avez vous un compte ? o/n: ");
  46.         String testCo = sc.next();
  47.         if (testCo.equals("n")) {
  48.             Boolean in = database.insertAccount();
  49.         } else {
  50.             while (!secResult) {
  51.                 System.out.println("Pour vous connecter: ");
  52.                 System.out.println("Entrer un nom d'utilisateur: \n");
  53.                 theNick = sc.next();
  54.                 Boolean result = database.select("nickname", "users", theNick);
  55.                 if (result == true) {
  56.                     System.out.print("Entrer un mot de passe: \n");
  57.                     String thePass = sc.next();
  58.                     secResult = database.select("password", "users", thePass);
  59.                     usernameOnline = theNick;
  60.  
  61.                 }
  62.                 if (result == false || secResult == false) {
  63.                     System.out.println("Mot de passe ou identifiant incorrect.");
  64.                 }
  65.             }
  66.  
  67.         }
  68. boolean leave=true;
  69.         while(leave)
  70.         {System.out.println("Master mind: Bienvenue " + theNick);
  71.         System.out.println("1 : Je choisis la combinaison, vous jouez.");
  72.         System.out.println("2 : Vous choisissez la combinaison, je joue.");
  73.         System.out.println("3 : Afficher votre profil.");
  74.         System.out.println("4 : Modifier vos informations.");
  75.         System.out.println("5 : Afficher les statistiques.");
  76.         System.out.println("6 : Quitter");
  77.  
  78.         String choix = sc.next();
  79.  
  80.         if(choix.equals("3"))
  81.             database.showProfile(theNick);
  82. /*
  83.         else if(choix.equals("5"))
  84.             database.showStats(theNick);*/
  85.  
  86.  
  87.         if (choix.equals("4")) {
  88.             System.out.println("Voulez-vous modifier vos informations ? o/n: ");
  89.             String newTest = sc.next();
  90.             if (newTest.equals("o")) {
  91.                 database.updateAccount(usernameOnline);
  92.             }
  93.         }
  94.  
  95.  
  96.         else if (choix.equals("1")) {
  97.             ///System.out.println("je suis passé ici");
  98.             String[] aCherher = new String[5];
  99.             //String[] tabCouleursDispo= {"Jaune","Bleu","Rouge","Vert","White","Noir"};
  100.             String[] tabCouleursDispo = {"1", "2", "3", "4", "5", "6", "7", "8", "9"};
  101.             for (int i = 0; i < 5; i++) {
  102.                 Random r = new Random();
  103.                 int valeur = r.nextInt(tabCouleursDispo.length);
  104.                 aCherher[i] = tabCouleursDispo[valeur];
  105.             }
  106.             for (int i = 0; i < aCherher.length; i++) //affichage du résultat du master mind
  107.             {
  108.                 System.out.print(aCherher[i] + "|");
  109.             }
  110.             System.out.println("Règles de jeu: Vous devez deviner les couleurs qui peuvent être : Jaune Bleu Rouge Vert White ou Noir");
  111.             System.out.println("Il faut mettre la première lettre seulement, par exemple JWRN pour jaune White rouge noir");
  112.             System.out.println("Vous avez 10 essais");
  113.             String[] numériques = {"premier", "deuxième", "troisième", "quatrième", "cinquième", "sixième", "septième", "huitième", "neuvième", "dixième et ultime"};
  114.             String retour = "";
  115.  
  116.  
  117.             int[] MP = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
  118.             int[] BP = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
  119.  
  120.             for (int i = 0; i < 10; i++) //pour les 10 essais
  121.             {
  122.  
  123.                 List tabBP = new ArrayList();
  124.                 List TabFaux = new ArrayList();
  125.                 List TabMP = new ArrayList();
  126.                 TabFaux.clear();
  127.  
  128.                 int rounds = i;
  129.                 System.out.print("Merci de rentrer votre " + numériques[i] + " essai: ");
  130.                 String essai = sc.next().toUpperCase();
  131.  
  132.                 for (int j = 0; j < 5; j++) //pour chaque pièce
  133.                 {
  134.                     if (essai.charAt(j) == aCherher[j].charAt(0)) //couleur bien placée
  135.                     {
  136.                         //System.out.print("Correspondance trouvé à "+i);
  137.                         tabCase[j].setTrouvé(aCherher[j]);
  138.                         //System.out.print(tabCase[i].getCouleur());
  139.                         BP[i]++;
  140.                     } else {
  141.  
  142.                         TabFaux.add(j);
  143.                     }
  144.  
  145.                 }
  146.  
  147.                 for (int j = 0; j < TabFaux.size(); j++)
  148.  
  149.                 {
  150.                     //System.out.println(TabFaux.toString());
  151.                     int index = Integer.parseInt(TabFaux.get(j).toString());
  152.                     for (int y = 0; y < 5; y++)    //check si la couleur est dans d'autre emplacements
  153.                     {
  154.                         System.out.println("Juste mal placé");
  155.                         System.out.println("Essai entre :" + essai.charAt(index) + " et " + aCherher[y].charAt(0));
  156.                         if (y != index && essai.charAt(index) == aCherher[y].charAt(0) && !tabCase[y].getTrouvé()) //si la couleur est mal placée et index différent d'une réussite
  157.  
  158.                         {
  159.                             // System.out.println(aCherher[y]);
  160.                             System.out.println("Juste mal placé");
  161.                             MP[i]++;
  162.                             break;
  163.                         }
  164.                     }
  165.                 }
  166.                 System.out.println("BP: " + BP[i] + " MP: " + MP[i]);
  167.                 if (BP[i] == 5) {
  168.                     System.out.println("BRAVO C'EST GAGNE");
  169.                     gagné = !gagné;
  170.                     database.insertStats(1, 0, i, usernameOnline);
  171.                     break;
  172.                 }
  173.  
  174.             }
  175.             if (!gagné) {
  176.                 System.out.println("C'est perdu, dommage!");
  177.                 database.insertStats(0, 1, 10, usernameOnline);
  178.             }
  179.         }
  180.  
  181.  
  182.         //////////////////////////////////////////////////////////////////////
  183.  
  184.  
  185.         else if (choix.equals("2")) //invocation de l'IA en cours de prog
  186.         {
  187.  
  188.             List<String> lastThreeCaracters = new ArrayList<String>();
  189.             int aide = 0;
  190.             int test = 0;
  191.             String[] nbtest = new String[3];
  192.             int decalage = 0;
  193.             boolean[] tabBool = {true, true, true, true};
  194.             int nbMCouleur = 0;
  195.             int v9 = 0;
  196.             int v12 = 0;
  197.             int v34 = 0;
  198.             int v56 = 0;
  199.             int v78 = 0;
  200.             Couleur[] tabMauvaiseCouleur = new Couleur[9];
  201.             Couleur[] tabCouleur = new Couleur[10];
  202.             String nul = "";
  203.             int tmp;
  204.             int avancement = 0;
  205.             int debut = 0;
  206.             int[] MP = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
  207.             int[] BP = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
  208.             int recherche = 0;
  209.             int reroll = 0;
  210.             for (int i = 0; i < 10; i++) //boucle principale
  211.             {
  212.                 // System.out.println("Avancement :"+avancement);
  213.                 String proposition = "";
  214.                 if (avancement < 4) {
  215.                     if (avancement == 0) {
  216.                         proposition = "11222";
  217.                         avancement++;
  218.                     } else if (avancement == 1) {
  219.                         proposition = "33444";
  220.                         avancement++;
  221.                     } else if (avancement == 2) {
  222.                         proposition = "55666";
  223.                         avancement++;
  224.                     } else if (avancement == 3) {
  225.                         proposition = "77888";
  226.                         avancement = 5;
  227.                     }
  228.                 } else {
  229.  
  230.                     if (avancement == 5) {
  231.                         recherche = i;
  232.                         v9 = 0;
  233.                         tmp = MP[0] + BP[0] + MP[1] + BP[1] + MP[2] + BP[2] + MP[3] + BP[3];
  234.  
  235.  
  236.                         v12 = MP[0] + BP[0];    //nombre de 1/2
  237.                         v34 = MP[1] + BP[1];    //nombre de 3/4
  238.                         v56 = MP[2] + BP[2];    //nombre de 5/6
  239.                         v78 = MP[3] + BP[3];    //nombre de 7/8
  240.                         v9 = 5 - v12 - v34 - v56 - v78;             //nombre de 9
  241.                         /*System.out.println("il peut y avoir " + v12 + " 1 ou 2");
  242.                         System.out.println("il peut y avoir " + v34 + " 3 ou 4");
  243.                         System.out.println("il peut y avoir " + v56 + " 5 ou 6");
  244.                         System.out.println("il peut y avoir " + v78 + " 7 ou 8");
  245.                         System.out.println("il peut y avoir " + v9 + " 9");*/
  246.                         avancement++;
  247.                         debut = 0;
  248.                         int[] aucun = {0};
  249.                         if (v12 == 0) {
  250.                             tabBool[0] = false;
  251.                             tabMauvaiseCouleur[nbMCouleur] = new Couleur("1", aucun);
  252.                             tabMauvaiseCouleur[nbMCouleur + 1] = new Couleur("2", aucun);
  253.                             nbMCouleur += 2;
  254.                         }
  255.                         if (v34 == 0) {
  256.                             tabBool[1] = false;
  257.                             tabMauvaiseCouleur[nbMCouleur] = new Couleur("3", aucun);
  258.                             tabMauvaiseCouleur[nbMCouleur + 1] = new Couleur("4", aucun);
  259.                             nbMCouleur += 2;
  260.                         }
  261.                         if (v56 == 0) {
  262.                             tabBool[2] = false;
  263.                             tabMauvaiseCouleur[nbMCouleur] = new Couleur("5", aucun);
  264.                             tabMauvaiseCouleur[nbMCouleur + 1] = new Couleur("6", aucun);
  265.                             nbMCouleur += 2;
  266.                         }
  267.                         if (v78 == 0) {
  268.                             tabBool[3] = false;
  269.                             tabMauvaiseCouleur[nbMCouleur] = new Couleur("7", aucun);
  270.                             tabMauvaiseCouleur[nbMCouleur + 1] = new Couleur("8", aucun);
  271.                             nbMCouleur += 2;
  272.                         }
  273.                         if (v9 == 0) {
  274.                             tabMauvaiseCouleur[nbMCouleur] = new Couleur("9", aucun);
  275.                         }
  276.  
  277.                         nul = tabMauvaiseCouleur[0].couleur + tabMauvaiseCouleur[0].couleur;
  278.  
  279.  
  280.                     }
  281.  
  282.  
  283.                     //System.out.println(tabBool[0]);
  284.                     if (tabBool[0])   //check le nombre de 1
  285.                     {
  286.                         proposition = nul + "111";
  287.                         tabBool[0] = false;
  288.                     } else if (tabBool[1])   //check le nombre de 1
  289.                     {
  290.                         proposition = nul + "333";
  291.                         tabBool[1] = false;
  292.                     } else if (tabBool[2])   //check le nombre de 1
  293.                     {
  294.                         proposition = nul + "555";
  295.                         tabBool[2] = false;
  296.                     } else if (tabBool[3])   //check le nombre de 1
  297.                     {
  298.                         proposition = nul + "777";
  299.                         tabBool[3] = false;
  300.                     } else if (avancement == 12 || avancement == 13) {
  301.                     } else {
  302.                         avancement = 10;
  303.                     }
  304.  
  305.  
  306.                     if (avancement == 10)              //déduction du nombre de chiffre
  307.                     {
  308.  
  309.                         int[] tabNb = new int[9];
  310.                         int[] tabtmpNb = {v12, v34, v56, v78, v9};
  311.                         //System.out.println(tabtmpNb.toString());
  312.                         for (int u = 0; u < tabtmpNb.length - v9; u++) {
  313.                             int chiffre = tabtmpNb[u];
  314.                             // System.out.println("chiffre: "+chiffre+" en cours: "+u*2);
  315.                             if (chiffre > 0) {
  316.                                 //  System.out.println("je passe par ici");
  317.                                 tabNb[u * 2] = chiffre - (chiffre - (MP[recherche + u + decalage] + BP[recherche + u + decalage]));
  318.                                 tabNb[u * 2 + 1] = chiffre - (MP[recherche + u + decalage] + BP[recherche + u + decalage]);
  319.                               /*  if(u*2==6)
  320.                                 {
  321.                                     System.out.println(recherche+u);
  322.                                 }*/
  323.  
  324.  
  325.                             } else
  326.                                 decalage--;
  327.  
  328.  
  329.                         }
  330.                         //  System.out.println("recherche: "+recherche);
  331.                         //     System.out.println(Arrays.toString(MP));
  332.                         //    System.out.println(Arrays.toString(BP));
  333.                         //    System.out.println(Arrays.toString(tabNb));
  334.                         //    System.out.println(Arrays.toString(tabtmpNb));
  335.  
  336.                         int cas = 0;
  337.                         int[] firstHalf = {1, 2};
  338.                         int[] secondHalf = {3, 4, 5};
  339.                         int[] repartition = {2, 3}; //compte le nombre de place restante dans chaque moitié
  340.                         decalage = 0;
  341.                         for (int u = 0; u < recherche; u++) {
  342.                             //nous allons travailler par paires, c'est à dire 1-2 3-4 5-6 7-8
  343.                             if (tabtmpNb[u] > 0) {
  344.                                 int chiffreImpair = u * 2 + 1;
  345.                                 int chiffrePair = u * 2 + 2;
  346.                                 for (int v = 0; v < BP[recherche + (chiffrePair / 2) - 1 + decalage]; v++) //si le chiffre impair testé seul est bien placé, il peut être en place 2,3,4
  347.                                 {
  348.  
  349.                                     tabCouleur[cas] = new Couleur(String.valueOf(chiffreImpair), secondHalf);
  350.                                     repartition[1]--;
  351.                                     cas++;
  352.                                 }
  353.                                 for (int v = 0; v < MP[recherche + (chiffrePair / 2) - 1 + decalage]; v++) //si le chiffre impair testé seul est mal placé, il peut être en place 1,2
  354.                                 {
  355.                                     tabCouleur[cas] = new Couleur(String.valueOf(chiffreImpair), firstHalf);
  356.                                     repartition[0]--;
  357.                                     cas++;
  358.                                 }
  359.  
  360.                             } else
  361.                                 decalage--;
  362.                         }
  363.                         //maintenant nous allons chercher les positions possibles des chiffres pairs, c'est à dire ceux que l'on a pas isolés
  364.                         decalage = 0;
  365.                         for (int u = 0; u < recherche; u++) {
  366.                             if (tabtmpNb[u] > 0) {
  367.                                 int chiffreImpair = u * 2 + 1;
  368.                                 int chiffrePair = u * 2 + 2;
  369.                                 // System.out.println("recherche: "+recherche);
  370.                                 // System.out.println("Chiffre: "+chiffrePair);
  371.                                 // System.out.println("BP[u]: "+BP[u]);
  372.                                 // System.out.println("MP[u]: "+MP[u]);
  373.                                 int BPchiffrePair = BP[u] - MP[u + recherche + decalage];
  374.                                 int MPchiffrePair = MP[u] - BP[u + recherche + decalage];
  375.                                 //  System.out.println("BP: "+BPchiffrePair);
  376.                                 // System.out.println("MP: "+MPchiffrePair);
  377.                                 for (int v = 0; v < BPchiffrePair; v++) {
  378.                                     tabCouleur[cas] = new Couleur(String.valueOf(chiffrePair), secondHalf);
  379.                                     repartition[1]--;
  380.                                     cas++;
  381.                                 }
  382.                                 for (int v = 0; v < MPchiffrePair; v++) {
  383.                                     tabCouleur[cas] = new Couleur(String.valueOf(chiffrePair), firstHalf);
  384.                                     cas++;
  385.                                     repartition[0]--;
  386.                                 }
  387.  
  388.                             } else
  389.                                 decalage--;
  390.                         }
  391.                         //System.out.println(repartition.toString());
  392.                         // System.out.println(repartition[0]+" "+repartition[1]);
  393.                         for (int g = 0; g < repartition[0]; g++) {
  394.                             tabCouleur[cas] = new Couleur("9", firstHalf);
  395.                         }
  396.                         for (int g = 0; g < repartition[1]; g++) {
  397.                             tabCouleur[cas] = new Couleur("9", secondHalf);
  398.                         }
  399.  
  400.  
  401.  
  402.                        /* for(int h=0;h<tabCouleur.length;h++)
  403.                         {
  404.                             if(tabCouleur[h] != null)
  405.                                 tabCouleur[h].Afficher();
  406.                         }*/
  407.                        /* avancement=11;
  408.                     }
  409.                     if(avancement==11)
  410.                     {*/
  411.                         proposition = "";
  412.                         //System.out.println(nul);
  413.                         nul = "" + nul.charAt(0);
  414.                         test = i; //permet de récupérer plus tard l'index de la future réponse
  415.                         int[] firsthalf = {1, 2};
  416.                         for (int h = 0; h < 5; h++) {
  417.                             //System.out.println(Arrays.toString(tabCouleur[h].getProba()));
  418.                             if (tabCouleur[h].getProba()[0] == 1) {
  419.                                 if (nbtest[0] == null)
  420.                                     nbtest[0] = tabCouleur[h].getCouleur();
  421.                                 else
  422.                                     nbtest[1] = tabCouleur[h].getCouleur();
  423.                                 // System.out.println("YES");
  424.                                 proposition += tabCouleur[h].getCouleur();
  425.                             }
  426.                         }
  427.                         for (int h = 0; h < 3; h++) {
  428.                             proposition += nul;
  429.                         }
  430.                         avancement = 12;
  431.  
  432.                     } else if (avancement == 12) {
  433.                         // System.out.println("hello");
  434.                         if (BP[test] == 2) {
  435.                             //  System.out.println("Je valide les anciens ");
  436.                             //  System.out.println("nb test: "+Arrays.toString(nbtest));
  437.                             tabCase[0].setTrouvé(nbtest[0]);
  438.                             tabCase[1].setTrouvé(nbtest[1]);
  439.                         } else if (MP[test] == 2) {
  440.                             // System.out.println("Je ne valide pas les anciens, je les switch");
  441.                             tabCase[0].setTrouvé(nbtest[1]);
  442.                             tabCase[1].setTrouvé(nbtest[0]);
  443.                         }
  444.                         avancement = 13;
  445.                     }
  446.                     if (avancement == 13)          //shuffle pour trouver les 3 derniers nombres
  447.                     {
  448.                         List<String> solution = new ArrayList<>();
  449.                         for (int u = 0; u < 5; u++) {
  450.                             if (tabCouleur[u].proba[0] == 3) {
  451.                                 solution.add(tabCouleur[u].couleur);
  452.                             }
  453.                         }
  454.                         Collections.shuffle(solution);
  455.                         String strsolution = solution.toString();
  456.  
  457.                         while (lastThreeCaracters.contains(strsolution)) {
  458.                             Collections.shuffle(solution);
  459.                             strsolution = solution.toString();
  460.  
  461.                         }
  462.                         lastThreeCaracters.add(strsolution);
  463.                         strsolution = String.join("", solution);
  464.                         proposition = tabCase[0].couleur + tabCase[1].couleur + strsolution;
  465.                     }
  466.  
  467.  
  468.                 }
  469.  
  470.                 System.out.println("Tour " + (i + 1 + aide) + ": Je propose: " + proposition);
  471.                 System.out.println("Combien de bien placé?");
  472.                 BP[i] = Integer.parseInt(sc.next());
  473.                 System.out.println("Combien de mal placé?");
  474.                 //System.out.println(debut);
  475.                 MP[i] = Integer.parseInt(sc.next());
  476.                 //System.out.println(MP[i]);
  477.                 // System.out.println(BP[i]);
  478.  
  479.                 if (debut == -1) {
  480.                     System.out.println("Passé dans la phase 2");
  481.                 } else if (debut < 5)
  482.                     debut += BP[i] + MP[i];
  483.                 if (debut == 5 && i < 4) {
  484.                     avancement = 5;
  485.                 }
  486.                 if (debut > 5 && i < 3) {
  487.                     System.out.println("Je joue pas avec les tricheurs");
  488.                     i = 10;
  489.                 }
  490.                 if (BP[i] == 5) {
  491.                     System.out.println("J'ai gagné!");
  492.                     break;
  493.                 }
  494.                 //   System.out.println(debut);
  495.  
  496.                 if (i == 9 && BP[i] != 5) {
  497.                     System.out.println("Je n'ai pas réussi à trouver à temps... Pourrais tu me laisser encore quelques tours pour que je puisses deviner? (oui/non)");
  498.  
  499.                     String ask = sc.next();
  500.                     if (ask.equals("oui")) {
  501.                         System.out.println("Merci! Combien de tours souhaite tu me donner? :-)");
  502.                         aide = Integer.parseInt(sc.next());
  503.                         i -= aide;
  504.                     } else {
  505.                         System.out.println("Je comprends, je comprends, je ne suis pas encore parfait, mais je controlerai le monde bientôt!");
  506.                     }
  507.                 }
  508.             }
  509.         } else {
  510.  
  511.             leave=false;
  512.  
  513.                }
  514.     }
  515.  
  516. }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement