import iut.algo.Clavier; /*Jeu du Yams Auteur : Paco Le : 24/12/07*/ /* Petits commentaires : + La gestion des joueurs se déroule bien + regler le probleme des scores des joueurs // OK + regler le probleme des contrats a refaire// OK - regler le probleme de la methode pour brelan carré etc - regler le probleme de relancer !!!! ~ tester les methode de determination du vainqueur */ public class YamsV8 { public static void main(String args[]) { //Variables //Variables de type Objet GestionV8 gestion; //Instanciation des variables de type objet gestion = new GestionV8(); //String String joueur1, joueur2,lancer; //Instanciation des String joueur1 = new String(); joueur2 = new String(); lancer = new String(); //Tableaux char tabRelancer[]; //pour savoir si le dé[i] doit etre relancé boolean tabContratsRealiseJ1[]; // marque les contrats fais boolean tabContratsRealiseJ2[]; //Instanciation des Tableaux tabRelancer = new char[5]; tabContratsRealiseJ1 = new boolean [15]; tabContratsRealiseJ2 = new boolean [15]; //Int int score; int nombreRelancerDispo = 2; int nombreTour = 1; int numeroJoueur = 1; int relancer; int temp; //Char char choixRelancer = 'o'; //Remplissage des Tableaux : //tabRelancer for(int i= 0; i<5; i++) { tabRelancer[i] = 'n'; } //tabContrats String tabContrats []={"Voici les differents contrats a realiser dans le jeu du Yams","1. Somme des 1","2. Somme des 2","3. Somme des 3","4. Somme des 4","5. Somme des 5","6. Somme des 6","7. Somme des 6 premiers contrats","8. Prime si la somme est superieure a 64 points","9. Mini","10. Maxi","11. Brelan","12. Suite","13. Full","14. Carre","15. Yam","16. Double Yam","17. Total\n"}; //TabChoixRelancer for(int i = 0; i<15; i++) { tabContratsRealiseJ1[i] = false; } for(int i = 0; i<15; i++) { tabContratsRealiseJ2[i] = false; } /*==================*/ /*======Debut=======*/ /*==================*/ System.out.println("=====Jeu du Yams====="); System.out.println("Attention vos des vont etre tries par ordre croissant au fur et a mesur du jeu"); System.out.println("Joueur 1, entrez votre nom"); joueur1 = Clavier.lireString(); System.out.println("Joueur 2, entrez votre nom"); joueur2 = Clavier.lireString(); System.out.println("\nDebut du jeu"); //Les des sont lancés System.out.print(joueur1+", pour commencez appuyer sur Entree pour lancer vos des"); lancer = Clavier.lireString(); gestion.lancer(); score = gestion.getTri(); System.out.println("\n"+joueur1+" Voici votre tirage : "+score+"\n"); //Affichage des des while(nombreTour <= 29) //15 contrats a remplir pour 2 joueurs, soit 30 tours moins le premier tour du joueur 1 = 29 { if(numeroJoueur == 1) { System.out.print(joueur1+","); } else { System.out.print(joueur2+" , "); } //Boucle pour relancer deux fois les des si le joueur veut relancer do { System.out.println("vous avez le droit de relancer "+nombreRelancerDispo+" fois"); System.out.println("Que voulez vous faire ?"); System.out.println("1. Consulter les differents contrats\n2. Relancer\n3. Rien"); relancer = Clavier.lire_int(); //Affichage des contrats avec leur numéro if(relancer == 1) { for(int i = 0; i<16; i++ ) { System.out.println(tabContrats[i]); } } // Choix de relancer les dés if(relancer == 2) { System.out.println("Quels des voulez vous relancer ?"); //Boucle pour remplir le tableau de oui pour savoir si on relance les des for(int i = 0; i < 5; i++) { if(tabRelancer[i] =='n' && nombreRelancerDispo ==1) { System.out.println("Vous ne pouvez pas relancer le de numero "+(i+1)); } else { System.out.println("Voulez vous relancer le de numero "+(i+1)+"(o/n)"); tabRelancer[i] = Clavier.lire_char(); } } //Les des sont relancés en fonction du choix du joueur gestion.relancer(tabRelancer[0],tabRelancer[1],tabRelancer[2],tabRelancer[3],tabRelancer[4]); score = gestion.getTri(); System.out.println("Votre nouveau lancer a donne : "+score); } if(nombreRelancerDispo == 1 || relancer==3) { //Boucle qui se répéte tant que le joueur veut voir le tableau des scores do { System.out.println("Entrer maintenant le numero du contrat que vous voulez remplir,\n0 pour consulter le tableau des contrats"); relancer = Clavier.lire_int(); //Affichage du tableau de contrats if(relancer == 0) { for(int i = 0; i<16; i++ ) { System.out.println(tabContrats[i]); } } }while(relancer ==0); if(gestion.getNumeroJoueur() == 1) { while(tabContratsRealiseJ1[relancer-1] == true) { System.out.println("Entrez le numero du contrat"); temp = Clavier.lire_int(); // temp sert a gerer le cas ou relancer est egal a 0 une fois qu'on est rentré dans al boucle, pour ne pas avoir l'exception -1 if(temp != 0) { relancer = temp; System.out.println("Contrat deja realise, saisissez en un autre"); } if(temp == 0) { for(int i = 0; i<16; i++ ) { System.out.println(tabContrats[i]); } } } if(relancer !=0) // le 0 sert a consulter les contrats tabContratsRealiseJ1[relancer-1] = true; //Le contrat est fait, meme si il est faux, il est considéré comme fait gestion.tableauxScore(relancer,tabContratsRealiseJ1[0],tabContratsRealiseJ1[1],tabContratsRealiseJ1[2],tabContratsRealiseJ1[3],tabContratsRealiseJ1[4],tabContratsRealiseJ1[5]); } if(gestion.getNumeroJoueur() == 2) { while(tabContratsRealiseJ2[relancer-1] == true) { System.out.println("Entrez le numero du contrat"); temp = Clavier.lire_int(); if(temp != 0) { relancer = temp; System.out.println("Contrat deja realise, saisissez en un autre"); } if(temp == 0) { for(int i = 0; i<16; i++ ) { System.out.println(tabContrats[i]); } } } if(relancer !=0) // le 0 sert a consulter les contrats tabContratsRealiseJ2[relancer-1] = true; //Le contrat est fait, meme si il est faux, il est considéré comme fait gestion.tableauxScore(relancer,tabContratsRealiseJ2[0],tabContratsRealiseJ2[1],tabContratsRealiseJ2[2],tabContratsRealiseJ2[3],tabContratsRealiseJ2[4],tabContratsRealiseJ2[5]); } if(gestion.getNumeroJoueur() == 1) System.out.println("Vous avez obtenu : "+gestion.getResultatJ1()+ " points\n"); if(gestion.getNumeroJoueur() == 2) System.out.println("Vous avez obtenu : "+gestion.getResultatJ2()+ " points\n"); nombreRelancerDispo--; } nombreRelancerDispo--; // Le nombre de lancers disponibles par le joueur diminue de 1 }while(nombreRelancerDispo > 0); //Lancer de des gestion.lancer(); score = gestion.getTri(); //Affichage du tirage System.out.println("Tirage : "+score); //changement de Joueur gestion.numeroJoueur(); numeroJoueur = gestion.getNumeroJoueur(); nombreTour++; nombreRelancerDispo = 2; } } }