Exemplo n.º 1
0
        /// <summary>
        /// Lancement du menu continuer
        /// </summary>
        /// <param name="grilleJoueurBateaux"></param>
        /// <param name="grilleJoueurMissiles"></param>
        /// <param name="grilleOrdiBateaux"></param>
        /// <param name="grilleOrdiMissiles"></param>
        /// <param name="tabTaillesBateaux"></param>
        /// <param name="rdn"></param>
        /// <param name="tabToucheBateauxJoueur"></param>
        /// <param name="tabToucheBateauxOrdi"></param>
        /// <param name="diff"></param>
        /// <param name="preDir"></param>
        /// <param name="typePrec"></param>
        /// <param name="preCoord"></param>
        /// <param name="goodDir"></param>
        /// <param name="tour"></param>
        public static void DemarrerMenuContinue(int[,] grilleJoueurBateaux, int[,] grilleJoueurMissiles
                                                , int[,] grilleOrdiBateaux, int[,] grilleOrdiMissiles, int[] tabTaillesBateaux, Random rdn
                                                , int[] tabToucheBateauxJoueur, int[] tabToucheBateauxOrdi, int diff,
                                                int[] preDir, int[] typePrec, int[][] preCoord, bool[] goodDir, int tour)
        {
            //obtenir le path du directory //Save
            string pathSave = Fichier.ObtenirPathSave();

            //variable menu continue
            string[] labelsContinue    = { "Continuer", "Sauvegarder", "Quitter" };
            int      selectionContinue = 0;

            //variable menu sauvegarde
            string[] labelsFiles;
            int      selectFile = 0;
            string   name;

            string[] nameFiles;

            //Proposer de continuer
            selectionContinue = InterfaceJoueur.CreerMenu(labelsContinue, "--------- Menu Continuer ------------", false);

            //sauvegarder
            if (selectionContinue == 1)
            {
                nameFiles   = Fichier.ObtenirNomFichierdansSaveDirectory(pathSave);
                labelsFiles = new string[nameFiles.Length + 2];
                nameFiles.CopyTo(labelsFiles, 0);
                labelsFiles[nameFiles.Length]     = "Nouvelle sauvegarde";
                labelsFiles[nameFiles.Length + 1] = "Retour";

                selectFile = InterfaceJoueur.CreerMenu(labelsFiles, "--------- Menu Sauvegarde ------------", true);

                //sauvegarde dans un fichier existant
                if (selectFile < nameFiles.Length)
                {
                    Fichier.EcrireSavePartie(Fichier.ObtenirPathAvecNom(pathSave,
                                                                        nameFiles[selectFile]),
                                             new int[][, ] {
                        grilleJoueurBateaux, grilleOrdiBateaux,
                        grilleJoueurMissiles, grilleOrdiMissiles
                    },
                                             new int[][] { tabToucheBateauxJoueur, tabToucheBateauxOrdi, preDir, typePrec }, preCoord, goodDir,
                                             diff, tour);
                }
                //sauvegarde dans un nouveau fichier
                else if (selectFile == nameFiles.Length)
                {
                    Console.WriteLine("--------- Nouveau Fichier ------------");

                    //demande ddu nom du fichier
                    name = InterfaceJoueur.DemanderNomNouveauFile();

                    //adaptation du nom du fichier
                    name = Fichier.CreerNouveauFichier(name, pathSave);


                    //sauvegarde
                    Fichier.EcrireSavePartie(pathSave + "\\" + name,
                                             new int[][, ] {
                        grilleJoueurBateaux, grilleOrdiBateaux,
                        grilleJoueurMissiles, grilleOrdiMissiles
                    },
                                             new int[][] { tabToucheBateauxJoueur, tabToucheBateauxOrdi, preDir, typePrec }, preCoord, goodDir,
                                             diff, tour);
                }

                //retour au menu principal
                DemarrerMenuContinue(grilleJoueurBateaux, grilleJoueurMissiles, grilleOrdiBateaux,
                                     grilleOrdiMissiles, tabTaillesBateaux, rdn, tabToucheBateauxJoueur, tabToucheBateauxOrdi, diff
                                     , preDir, typePrec, preCoord, goodDir, tour);
            }
            //Quitter
            else if (selectionContinue == 2)
            {
                Environment.Exit(0);
            }
            //Continuer
            else
            {
                return;
            }

            InterfaceJoueur.AfficherGrilles(grilleJoueurBateaux, grilleJoueurMissiles, grilleOrdiBateaux,
                                            grilleOrdiMissiles, 0, tabToucheBateauxJoueur, tabToucheBateauxOrdi, 0);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Lancement du jeu
        /// </summary>
        public static void Demarrer()
        {
            //constante
            int[] tabTaillesBateaux = { 2, 3, 3, 4, 5 };

            // définition grilles
            int[,] grilleJoueurBateaux  = new int[10, 10];
            int[,] grilleOrdiBateaux    = new int[10, 10];
            int[,] grilleJoueurMissiles = new int[10, 10];
            int[,] grilleOrdiMissiles   = new int[10, 10];


            //définition tableau
            int[] tabToucheBateauxJoueur = tabTaillesBateaux.ToArray();
            int[] tabToucheBateauxOrdi   = tabTaillesBateaux.ToArray();

            //random instance
            Random rdn = new Random();

            //variable difficulté
            int diff = 0;

            //paramètres de l'application
            bool   saveEachTurn = false;
            string nameSave     = "quicksave";
            string path         = Fichier.ObtenirPathSave();

            //chargement des paramètres à partir du fichier parametre
            path = Path.GetDirectoryName(path);
            Fichier.LireSaveParametre(path + "\\" + "parametre.txt", ref saveEachTurn);


            //init variable ordi
            int[][] preCoord = new int[5][] { new int[2], new int[2], new int[2], new int[2], new int[2] };
            int[]   preDir   = new int[] { -1, -1, -1, -1, -1 };
            bool[]  goodDir  = new bool[] { false, false, false, false, false };
            int[]   typePrec = new int[] { -1, -1, -1, -1, -1 };

            //placement bateau aléatoire sur la grille de l'ordinateur
            InitialiserPreCoord(preCoord, grilleJoueurMissiles, rdn);

            //boucle principale
            int  tour = 0;
            bool joueur;
            int  tirsDispos;

            int[] coord;

            //menu principal
            DemarrerMenuPrincipal(ref grilleJoueurBateaux, grilleJoueurMissiles, ref grilleOrdiBateaux,
                                  grilleOrdiMissiles, tabTaillesBateaux, rdn, tabToucheBateauxJoueur, tabToucheBateauxOrdi
                                  , ref diff, ref saveEachTurn, ref preDir, ref typePrec, preCoord, goodDir, ref tour);

            do
            {
                //tour de qui?
                joueur = (tour % 2 == 0);

                //tour du joueur
                if (joueur)
                {
                    //sauvegarde auto
                    if (saveEachTurn)
                    {
                        Fichier.EcrireSavePartie(Fichier.ObtenirPathSave() + "\\" + nameSave,
                                                 new int[][, ] {
                            grilleJoueurBateaux, grilleOrdiBateaux,
                            grilleJoueurMissiles, grilleOrdiMissiles
                        },
                                                 new int[][] { tabToucheBateauxJoueur, tabToucheBateauxOrdi, preDir, typePrec }, preCoord, goodDir, diff, tour);
                    }

                    //affichage grilles
                    InterfaceJoueur.AfficherGrilles(grilleJoueurBateaux, grilleJoueurMissiles, grilleOrdiBateaux, grilleOrdiMissiles, 0, tabToucheBateauxJoueur, tabToucheBateauxOrdi, tour / 2);

                    //nombre de tirs disponible
                    tirsDispos = 5 - GrilleBateaux.CompterNombreBateauxCoule(tabToucheBateauxJoueur);

                    //init coord des tirs
                    int[,] coordTirs = new int[tirsDispos, 2];

                    for (int i = 0; i < coordTirs.GetLength(0); i++)
                    {
                        coordTirs[i, 0] = -1;
                        coordTirs[i, 1] = -1;
                    }

                    //demander les coordonnées des tirs
                    Action menu = () => DemarrerMenuContinue(grilleJoueurBateaux, grilleJoueurMissiles, grilleOrdiBateaux,
                                                             grilleOrdiMissiles, tabTaillesBateaux, rdn, tabToucheBateauxJoueur, tabToucheBateauxOrdi, diff,
                                                             preDir, typePrec, preCoord, goodDir, tour);

                    InterfaceJoueur.DemanderTirs(tirsDispos, 26, coordTirs
                                                 , menu);

                    //salve de tir
                    for (int i = 0; i < tirsDispos && tirsDispos < Grille.CompterNbCaseVide(grilleOrdiMissiles); i++)
                    {
                        coord    = new int[2];
                        coord[0] = coordTirs[i, 0];
                        coord[1] = coordTirs[i, 1];
                        int result = GrilleMissile.Tirer(grilleOrdiBateaux, grilleOrdiMissiles, tabToucheBateauxOrdi, coord, tabTaillesBateaux);
                    }
                }


                //tour de l'ordi
                else
                {
                    //nombres de tirs dispo
                    tirsDispos = tabToucheBateauxOrdi.Length - GrilleBateaux.CompterNombreBateauxCoule(tabToucheBateauxOrdi);

                    //salve
                    for (int i = 0; i < tirsDispos && i < Grille.CompterNbCaseVide(grilleOrdiMissiles); i++)
                    {
                        //Facile
                        if (diff == 0)
                        {
                            Ordi_Facile.ObtenirProchainCoup(grilleJoueurBateaux, grilleJoueurMissiles,
                                                            tabToucheBateauxJoueur
                                                            , rdn, preCoord, preDir,
                                                            goodDir, typePrec, tabTaillesBateaux, i, tirsDispos);
                        }

                        //Difficile
                        else if (diff == 1)
                        {
                            Ordi_Difficile.ObtenirProchainCoup(grilleJoueurBateaux, grilleJoueurMissiles,
                                                               tabToucheBateauxJoueur
                                                               , rdn, preCoord, preDir,
                                                               goodDir, typePrec, tabTaillesBateaux, i, tirsDispos);
                        }
                    }
                }
                tour++;
            } while (Grille.VerifierVictoire(tabToucheBateauxJoueur, tabToucheBateauxOrdi) == 0);

            //Ecran de victoire
            InterfaceJoueur.AfficherVictoire(Grille.VerifierVictoire(tabToucheBateauxJoueur, tabToucheBateauxOrdi), grilleJoueurBateaux, grilleJoueurMissiles, grilleOrdiBateaux, grilleOrdiMissiles, tabToucheBateauxJoueur, tabToucheBateauxOrdi, tour / 2);
        }