//dar click en la pantalla para comenzar el juego private void Arkanoid_MouseClick(object sender, MouseEventArgs e) { DataGame.startGame = true; Timer1Game.Start(); }
//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; } } } }