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; } } } }