Exemple #1
0
        public void singlePlayerMode()
        {
            Random rand = new Random();
            AIPlayer computer = new AIPlayer();

            foreach(Ship selectedShip in computer.getShips())
            {
                GridButton clickedSquare = new GridButton();

                placeable = false;
                while (!placeable)
                {
                    int orientation = rand.Next(1001) % 2;
                    clickedSquare.XLoc = rand.Next(10);
                    clickedSquare.YLoc = rand.Next(10);

                    //If orientation == 0 rotate; else don't
                    if (orientation == 0) horizontal = true;
                    else horizontal = false;

                    for (int i = 0; i < selectedShip.Length; i++)
                    {
                        if (horizontal)
                        {
                            if (clickedSquare.XLoc + i < 10 && AIshipFits(clickedSquare.XLoc, clickedSquare.YLoc, selectedShip.Length, computer)) placeable = true;
                            else placeable = false;
                        }
                        else
                        {
                            if (clickedSquare.YLoc + i < 10 && AIshipFits(clickedSquare.XLoc, clickedSquare.YLoc, selectedShip.Length, computer)) placeable = true;
                            else placeable = false;
                        }
                    }

                    if (selectedShip != null && placeable)
                    {
                        if (horizontal)
                        {
                            for (int i = 0; i < selectedShip.Length; i++)
                            {
                                selectedShip.Position[i].setXLoc(clickedSquare.XLoc + i);
                                selectedShip.Position[i].setYLoc(clickedSquare.YLoc);
                                Board.enemyGrid[clickedSquare.YLoc][clickedSquare.XLoc + i].setState(State.occupied);
                                enemyGridButtons[clickedSquare.YLoc][clickedSquare.XLoc + i].BackColor = Color.White; //To see placment. Comment out
                            }
                        }
                        else
                        {
                            for (int i = 0; i < selectedShip.Length; i++)
                            {
                                selectedShip.Position[i].setXLoc(clickedSquare.XLoc);
                                selectedShip.Position[i].setYLoc(clickedSquare.YLoc + i);
                                Board.enemyGrid[clickedSquare.YLoc + i][clickedSquare.XLoc].setState(State.occupied);
                                enemyGridButtons[clickedSquare.YLoc + i][clickedSquare.XLoc].BackColor = Color.White; //To see placement. Comment out
                            }
                        }
                    }
                }

                // Turned on to see Ships after placement. Delete code for final project
                switch (selectedShip.Name)
                {
                    case ShipName.patrol:
                        ship2PlacedPictureBox.Visible = true;
                        ship2PlacedPictureBox.Location = new Point(634 + selectedShip.Position[0].getXLoc() * 37, 126 + selectedShip.Position[0].getYLoc() * 35);
                        if (horizontal)
                        {
                            ship2PlacedPictureBox.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ship2PictureBox.BackgroundImage")));
                            ship2PlacedPictureBox.Size = new System.Drawing.Size(74, 35);
                        }
                        else
                        {
                            ship2PlacedPictureBox.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ship2vertPictureBox.BackgroundImage")));
                            ship2PlacedPictureBox.Size = new System.Drawing.Size(36, 70);
                        }
                        break;
                    case ShipName.submarine:
                        ship3aPlacedPictureBox.Visible = true;
                        ship3aPlacedPictureBox.Location = new Point(634 + selectedShip.Position[0].getXLoc() * 37, 126 + selectedShip.Position[0].getYLoc() * 35);
                        if (horizontal)
                        {
                            ship3aPlacedPictureBox.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ship3aPictureBox.BackgroundImage")));
                            ship3aPlacedPictureBox.Size = new System.Drawing.Size(111, 35);
                        }
                        else
                        {
                            ship3aPlacedPictureBox.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ship3avertPictureBox.BackgroundImage")));
                            ship3aPlacedPictureBox.Size = new System.Drawing.Size(36, 104);
                        }
                        break;
                    case ShipName.battleship:
                        ship3bPlacedPictureBox.Visible = true;
                        ship3bPlacedPictureBox.Location = new Point(634 + selectedShip.Position[0].getXLoc() * 37, 126 + selectedShip.Position[0].getYLoc() * 35);
                        if (horizontal)
                        {
                            ship3bPlacedPictureBox.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ship3bPictureBox.BackgroundImage")));
                            ship3bPlacedPictureBox.Size = new System.Drawing.Size(111, 35);
                        }
                        else
                        {
                            ship3bPlacedPictureBox.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ship3bvertPictureBox.BackgroundImage")));
                            ship3bPlacedPictureBox.Size = new System.Drawing.Size(36, 104);
                        }
                        break;
                    case ShipName.destroyer:
                        ship4PlacedPictureBox.Visible = true;
                        ship4PlacedPictureBox.Location = new Point(634 + selectedShip.Position[0].getXLoc() * 37, 126 + selectedShip.Position[0].getYLoc() * 35);
                        if (horizontal)
                        {
                            ship4PlacedPictureBox.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ship4PictureBox.BackgroundImage")));
                            ship4PlacedPictureBox.Size = new System.Drawing.Size(147, 35);
                        }
                        else
                        {
                            ship4PlacedPictureBox.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ship4vertPictureBox.BackgroundImage")));
                            ship4PlacedPictureBox.Size = new System.Drawing.Size(36, 140);
                        }
                        break;
                    case ShipName.carrier:
                        ship5PlacedPictureBox.Visible = true;
                        ship5PlacedPictureBox.Location = new Point(634 + selectedShip.Position[0].getXLoc() * 37, 126 + selectedShip.Position[0].getYLoc() * 35);
                        if (horizontal)
                        {
                            ship5PlacedPictureBox.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ship5PictureBox.BackgroundImage")));
                            ship5PlacedPictureBox.Size = new System.Drawing.Size(185, 35);
                        }
                        else
                        {
                            ship5PlacedPictureBox.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ship5vertPictureBox.BackgroundImage")));
                            ship5PlacedPictureBox.Size = new System.Drawing.Size(36, 174);
                        }
                        break;
                }
            }
        }
Exemple #2
0
        bool AIshipFits(int initXLoc, int initYLoc, int selectedShipLength, AIPlayer computer)
        {
            bool fits = true;

            foreach (Ship ship in computer.getShips())
            {
                for (int i = 0; i < ship.Length; i++)
                {
                    for (int j = 0; j < selectedShipLength; j++)
                    {
                        if (horizontal)
                        {
                            if (ship.Position[i].getXLoc() == initXLoc + j && ship.Position[i].getYLoc() == initYLoc)
                            {
                                fits = false;
                            }
                        }
                        else
                        {
                            if (ship.Position[i].getXLoc() == initXLoc && ship.Position[i].getYLoc() == initYLoc + j)
                            {
                                fits = false;
                            }
                        }
                    }
                }
            }
            return fits;
        }
Exemple #3
0
        void resetUI()
        {
            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    startButton.Text = "Start Game";
                    turnLabel.Text = "Arrange Your Ships";
                    playerGridButtons[i][j].BringToFront();
                    enemyGridButtons[i][j].BackColor = Color.Transparent;
                    enemyGridButtons[i][j].BringToFront();
                    playerScore = 0;
                    playerScoreLabel.Text = "Your Score: " + playerScore + "/17";
                    compScore = 0;
                    label42.Text = "Enemy Score: " + compScore + "/17";
                    canPlaceShips = true;
                    restarting = false;
                    controller.setPlayerTurn(0);
                    this.ship2PictureBox.Visible = true;
                    this.ship3aPictureBox.Visible = true;
                    this.ship3bPictureBox.Visible = true;
                    this.ship4PictureBox.Visible = true;
                    this.ship5PictureBox.Visible = true;
                    computer = new AIPlayer();
                    Board.resetBoard();
                    singlePlayerMode();
                }

            }
        }