Esempio n. 1
0
        private void BtnStart_Click(object sender, EventArgs e)
        {
            FRegister fr = new FRegister();

            fr.gn = (string nick) =>
            {
                if (PlayerData.CreatePlayer(nick))
                {
                    MessageBox.Show($"Bienvenido nuevamenete {nick}");
                }
                else
                {
                    MessageBox.Show($"Gracias por registrarte {nick}");
                }

                current = new Player(nick, 0);

                fr.Dispose();
            };

            fr.Show();

            //Ricardo
            Controls.Add(game);

            // seteando propiedades
            game = new Game()
            {
                Dock = DockStyle.Fill,

                Width  = Width,
                Height = Height
            };

            // seteando


            DataGame.InitializeGame();
            game.FinishedGame = () =>
            {
                MessageBox.Show("Has perdido");

                game.Hide();
                tableLayoutPanel1.Show();
            };

            // Seteo de Delegate que maneja cuando se gana el juego
            game.WinningGame = () =>
            {
                PlayerData.NewScore(current.IdPlayer, DataGame.scoreGame);

                MessageBox.Show("Has ganado!");

                game.Hide();
                tableLayoutPanel1.Show();
            };

            tableLayoutPanel1.Hide();
        }
        //Colision de la pelota con los objetos en pantalla
        private void CollisionsBall()
        {
            if (ball.Bottom > Height)
            {
                LoseLiveSound.Play();

                DataGame.lives--;
                DataGame.startGame = false;
                Timer1Game.Stop();

                RepositionElements();
                UpdateElements();

                try
                {
                    if (DataGame.lives == 0)
                    {    //termina el juego
                        Timer1Game.Stop();

                        //Se almacena el score en la base de datos
                        SaveScore();

                        DataGame.RestartGame();
                        ParentForm.Close();

                        throw new GameOverException("Te has quedado sin vidas!");
                    }
                }
                catch (GameOverException ex)
                {
                    MessageBox.Show(ex.Message, "Fin del juego", MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);
                }
            }

            //colision con laterales de la pantalla
            if (ball.Left < 0 || ball.Right > Width)
            {
                CollisionPlayerSound.Play();

                DataGame.dirX = -DataGame.dirX;
            }


            //colision con la parte Top de la pantalla
            if (ball.Top < score.Top + score.Height)
            {
                CollisionPlayerSound.Play();

                DataGame.dirY = -DataGame.dirY;
                return;
            }

            //colision con la plataforma
            if (ball.Bounds.IntersectsWith(player.Bounds))
            {
                CollisionPlayerSound.Play();

                DataGame.dirY = -DataGame.dirY;
            }



            for (int i = 3; i >= 0; i--)
            {
                for (int j = 0; j < 10; j++)
                {
                    //colision con los bloques
                    if (BlocksGame[i, j] != null && ball.Bounds.IntersectsWith(BlocksGame[i, j].Bounds))
                    {
                        //sonido de choque con los bloques
                        CollisionBlocksSound.Play();

                        //se hace el calculo de los puntos
                        DataGame.score += (BlocksGame[i, j].hits * (5 - i));

                        //random para ver si cambia de tamaño la plataforma
                        Random rand   = new Random();
                        int    random = rand.Next(1, 101);

                        ChangeSize(random);

                        BlocksGame[i, j].hits--;

                        if (BlocksGame[i, j].hits == 0)
                        {
                            Controls.Remove(BlocksGame[i, j]);
                            BlocksGame[i, j] = null;

                            DataGame.remainingBlock--;
                        }
                        else
                        {
                            //se cambian los sprites cuando hay colision con los bloques
                            if (i == 2)
                            {
                                BlocksGame[i, j].BackgroundImage = Image.FromFile("../../../Sprites/broked3.png");
                            }
                            if (i == 1)
                            {
                                BlocksGame[i, j].BackgroundImage = Image.FromFile("../../../Sprites/broked2.png");
                            }
                            if (i == 0 && BlocksGame[i, j].hits > 1)
                            {
                                BlocksGame[i, j].BackgroundImage = Image.FromFile("../../../Sprites/broked1.png");
                            }
                            if (i == 0 && BlocksGame[i, j].hits == 1)
                            {
                                BlocksGame[i, j].BackgroundImage = Image.FromFile("../../../Sprites/broked11.png");
                            }
                        }

                        DataGame.dirY = -DataGame.dirY;

                        lblScore.Text = "Score: " + DataGame.score;

                        try
                        {
                            if (DataGame.remainingBlock <= 0)
                            {
                                //termina el juego
                                Timer1Game.Stop();

                                //Se almacena el score en la base de datos
                                SaveScore();

                                //reinicia la variable en la cantidad de bloques que hay para otra partida
                                DataGame.remainingBlock = 40;

                                DataGame.RestartGame();
                                ParentForm.Close();

                                throw new WinGameException("Has ganado el juego. Felicidades!");
                            }
                        }
                        catch (WinGameException ex)
                        {
                            MessageBox.Show(ex.Message, "Fin del juego", MessageBoxButtons.OK,
                                            MessageBoxIcon.Information);
                        }

                        return;
                    }
                }
            }
        }