public BattleGridControl()
        {
            InitializeComponent();
            int i;
            for (i = 0; i < BattleGrid.ROWS; i++)
            {
                layout.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(20) });
            }
            for (i = 0; i < BattleGrid.COLS; i++)
            {
                layout.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(20) });
            }
            for (i = 0; i < BattleGrid.ROWS; i++)
            {
                for (int j = 0; j < BattleGrid.COLS; j++)
                {
                    Rectangle r = new Rectangle() { HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch, VerticalAlignment = System.Windows.VerticalAlignment.Stretch, Stroke = Brushes.White, StrokeThickness = 1, Fill = Brushes.Blue };
                    layout.Children.Add(r);
                    Grid.SetRow(r, i);
                    Grid.SetColumn(r, j);
                }
            }

            BattleGrid g = new BattleGrid();

            // Ajout de bateaux
            g.NewGrid();

            // Tirs
            for (i = 0; i < 10; i++)
            {
                g.Shoot(2, i);
                g.Shoot(3, i);
            }

            g.Shoot(6, 2);
            g.Shoot(1, 1);
            g.Shoot(4, 1);
            g.Shoot(1, 4);

            // Draw
            this.Draw(g);
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            /*
             *    PERMIERS ESSAIS
             */

            // Création d'un navire horizontal aux coordonnées (2, 5), de taille 3
            //Ship b = new Ship(2, 5, 3, Orientations.Horizontal);

            // IsAtCoordinates() doit renvoyer true si le bateau est aux coordonnées données
            /*
            System.Console.WriteLine(b.IsAtCoordinates(2, 5));
            System.Console.WriteLine(b.IsAtCoordinates(3, 5));
            System.Console.WriteLine(b.IsAtCoordinates(4, 5));
            */

            // IsAtCoordinates() doit renvoyer false si le bateau n'est pas aux coordonnées données
            /*
            System.Console.WriteLine(b.IsAtCoordinates(1, 5));
            System.Console.WriteLine(b.IsAtCoordinates(5, 5));
            System.Console.WriteLine(b.IsAtCoordinates(2, 6));
            */

            // Création d'une grille vierge
            //BattleGrid g = new BattleGrid();
            // Ajout du navire à la grille
            //g.AddShip(b);

            // Vérification qu'il y a de l'eau dans toutes les cases (doit renvoyer Water)
            /*
            for (int x = 0; x < 10; x++)
                for (int y = 0; y < 10; y++)
                    System.Console.WriteLine(x + "," + y + "=" + g.States[x, y]);
            */

            // Vérification de l'état des cases (doit tjs renvoyer true)
            /*
            System.Console.WriteLine(g.States[2, 5] == GridStates.Ship);
            System.Console.WriteLine(g.States[3, 5] == GridStates.Ship);
            System.Console.WriteLine(g.States[4, 5] == GridStates.Ship);
            System.Console.WriteLine(g.States[1, 5] == GridStates.Water);
            System.Console.WriteLine(g.States[5, 5] == GridStates.Water);
            */

            //Affichage de la grille en console
            //g.Draw();

            /*
            // On doit pouvoir ajouter un petit navire en haut à gauche
            System.Console.WriteLine(g.CanAddShip(new Ship(0, 0, 2, Orientations.Horizontal)));
            // On ne doit pas pouvoir ajouter un navire qui en chevauche un autre
            System.Console.WriteLine(g.CanAddShip(new Ship(1, 5, 2, Orientations.Horizontal)));
            // On ne doit pas pouvoir ajouter un navire qui déborde
            System.Console.WriteLine(g.CanAddShip(new Ship(9, 1, 2, Orientations.Horizontal)));
            */

            /*
            // Un tir dans l'eau marque la case comme manquée
            System.Console.WriteLine(g.Shoot(0, 0));
            // Outre la valeur de retour, la grille doit être modifiée
            System.Console.WriteLine(g.States[0, 0]);
            // Tir sur un navire
            System.Console.WriteLine(g.Shoot(2, 5));
            */

            /*
            // A ce moment, le jeu ne fait que commencer
            System.Console.WriteLine("Game over : " + g.GameOver());
            g.Shoot(2, 5);
            g.Shoot(3, 5);
            g.Shoot(4, 5);
            // Toutes les positions ont été tirées
            System.Console.WriteLine("Game over : " + g.GameOver());
            */

            /*
             *   MODELISATION D'UN JOUEUR AUTOMATIQUE
             */

            /*
            BattleGrid g = new BattleGrid();
            g.AddShip(new Ship(1, 0, 3, Orientations.Horizontal));
            IPlayer player = new StupidPlayer();
            */

            /*
            // Dans l'eau !
            player.Play(g);

            // Touche trois fois d'affilée
            player.Play(g);
            player.Play(g);
            player.Play(g);

            // Il doit avoir gagné après trois coups d'affilée
            System.Console.WriteLine(g.GameOver());
            */

            /*
            g.AddShip(new Ship(2, 5, 3, Orientations.Horizontal));
            int comptage = 0;
            g.Draw();
            while (!g.GameOver())
            {
                player.Play(g);
                comptage++;
            }
            System.Console.WriteLine(comptage);
            g.Draw();
            */

            // Création d'une grille avec génération aléatoire puis affichage

            BattleGrid g = new BattleGrid();
            IPlayer player = new StupidPlayer();
            g.NewGrid();
            g.Draw();

            while (!g.GameOver())
            {
                player.Play(g);
            }

            g.Draw();

            Console.Read();
        }