//Reset the game void GameReset() { //reset scores, ball, paddles if (gamemode == EGameMode.MENU) { P1score = 0; P2score = 0; } if (playstyle == EPlayStyle.ONEP) { P2paddle.SpriteSetPos_Y(ball.GetSpritePos().Y); } ball.SpriteSetPos(screensize.X / 2, screensize.Y / 2); ballrand_value = ballrand.Next(1, 5); YouWon = false; switch (difficulty) { case EDifficulty.EASY: DifficultyEasy(); break; case EDifficulty.MEDIUM: DifficultyMedium(); break; case EDifficulty.HARD: DifficultyHard(); break; } }
void SinglePlayer() { P1paddle.SpriteSetPos(screensize.X / 12, Mouse.GetState().Y); //New ai code AIupdate(); }
protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) Exit(); if (gamemode == EGameMode.MENU) { //Setup Difficulty switch (difficulty) { case EDifficulty.EASY: DifficultyEasy(); break; case EDifficulty.MEDIUM: DifficultyMedium(); break; case EDifficulty.HARD: DifficultyHard(); break; } //mouse mouse_rect.X = Mouse.GetState().X; mouse_rect.Y = Mouse.GetState().Y; IsMouseVisible = true; //menu //play button if (checkcollision(mouse_rect, playbtn.GetColbox())) { playbtn.SpriteSetPos(screensize.X / 2 - 2, (screensize.Y / 2 + 64)); playbtn_font_pos.X = playbtn.GetSpritePos().X; if (Mouse.GetState().LeftButton == ButtonState.Pressed) { gamemode = EGameMode.PLAY; playstyle = EPlayStyle.ONEP; } } else { playbtn.SpriteSetPos(screensize.X / 2, screensize.Y / 2 + 64); playbtn_font_pos.X = playbtn.GetSpritePos().X; } //multiplayer button if (checkcollision(mouse_rect, multibtn.GetColbox())) { multibtn.SpriteSetPos(screensize.X / 2 - 2, (screensize.Y / 2 + 144)); multibtn_font_pos.X = multibtn.GetSpritePos().X; if (Mouse.GetState().LeftButton == ButtonState.Pressed) { gamemode = EGameMode.PLAY; playstyle = EPlayStyle.TWOP; } } else { multibtn.SpriteSetPos(screensize.X / 2, screensize.Y / 2 + 144); multibtn_font_pos.X = multibtn.GetSpritePos().X; } //Help button if (checkcollision(mouse_rect, helpbtn.GetColbox())) { helpbtn.SpriteSetPos(screensize.X / 2 - 126, (screensize.Y / 2 + 208)); helpbtn_font_pos.X = helpbtn.GetSpritePos().X; if (Mouse.GetState().LeftButton == ButtonState.Pressed) { gamemode = EGameMode.HELP; } } else { helpbtn.SpriteSetPos(screensize.X / 2 - 124, screensize.Y / 2 + 208); helpbtn_font_pos.X = helpbtn.GetSpritePos().X; } //fullscreen button if (checkcollision(mouse_rect, resbtn.GetColbox())) { resbtn.SpriteSetPos(screensize.X / 2 - 157, screensize.Y / 2 - 48); resbtn_font_pos.X = resbtn.GetSpritePos().X; if (Mouse.GetState().LeftButton == ButtonState.Pressed) { if (isfullscreen != true) { isfullscreen = true; } else { isfullscreen = false; } } } else { resbtn.SpriteSetPos(screensize.X / 2 - 155, screensize.Y / 2 - 48); resbtn_font_pos.X = resbtn.GetSpritePos().X; } //Difficulty button if (checkcollision(mouse_rect, difbtn.GetColbox())) { difbtn.SpriteSetPos(screensize.X / 2 - 132, screensize.Y / 2); difbtn_font_pos.X = difbtn.GetSpritePos().X; if (oldMState.LeftButton == ButtonState.Released && Mouse.GetState().LeftButton == ButtonState.Pressed) { if (difficulty == EDifficulty.EASY) difficulty = EDifficulty.MEDIUM; else if (difficulty == EDifficulty.MEDIUM) difficulty = EDifficulty.HARD; else if (difficulty == EDifficulty.HARD) difficulty = EDifficulty.EASY; } oldMState = Mouse.GetState(); } else { difbtn.SpriteSetPos(screensize.X / 2 - 130, screensize.Y / 2); difbtn_font_pos.X = difbtn.GetSpritePos().X; } //score button if (checkcollision(mouse_rect, scorebtn.GetColbox())) { scorebtn.SpriteSetPos(screensize.X / 2 + 155, screensize.Y / 2 - 48); scorebtn_font_pos.X = scorebtn.GetSpritePos().X; if (oldMState.LeftButton == ButtonState.Released && Mouse.GetState().LeftButton == ButtonState.Pressed) { BestOutOf++; } else if (oldMState.RightButton == ButtonState.Released && Mouse.GetState().RightButton == ButtonState.Pressed) { BestOutOf--; } oldMState = Mouse.GetState(); if (BestOutOf >= 1) { BestOfOn = true; } if (BestOutOf <= 0) { BestOutOf = 0; BestOfOn = false; } if (BestOutOf == 11) { BestOutOf = 0; BestOfOn = false; } } else { scorebtn.SpriteSetPos(screensize.X / 2 + 157, screensize.Y / 2 - 48); scorebtn_font_pos.X = scorebtn.GetSpritePos().X; } //fullscreen if (isfullscreen == true) { graphics.IsFullScreen = true; graphics.ApplyChanges(); } else { graphics.IsFullScreen = false; graphics.ApplyChanges(); } } if (gamemode == EGameMode.HELP) { if (Keyboard.GetState().IsKeyDown(Keys.Back)) { gamemode = EGameMode.MENU; } } if (gamemode == EGameMode.PLAY) { if (Keyboard.GetState().IsKeyDown(Keys.Back)) { gamemode = EGameMode.MENU; GameReset(); } //winner counter if (BestOfOn == true) { if (P1score == BestOutOf) { PlayerWinner(); } if (P2score == BestOutOf) { PlayerWinner(); } } //mouse Update IsMouseVisible = false; if (playstyle == EPlayStyle.TWOP) { TwoPlayer(); } else { SinglePlayer(); } //Player 1 paddle Rectangle update P1paddle.SpriteSetColbox(); //Player 2 paddle Rectangle update P2paddle.SpriteSetColbox(); //the ball rectangle update ball.SpriteSetColbox(); //collision detection if (checkcollision(P1paddle.GetColbox(), ball.GetColbox())) { //check pos of edge of paddle for strong angle hit if (P1paddle.GetSpritePos().Y - 32 >= ball.GetSpritePos().Y) { Bdown = false; ball_speed.Y += 2f; ball_speed.X += 1f; } if (P1paddle.GetSpritePos().Y + 32 <= ball.GetSpritePos().Y) { Bdown = true; ball_speed.Y += 2f; ball_speed.X += 1f; } //check pos of edge of paddle for normal angle hit if (P1paddle.GetSpritePos().Y - 16 >= ball.GetSpritePos().Y) { Bdown = false; ball_speed.Y += 1f; } if (P1paddle.GetSpritePos().Y + 16 <= ball.GetSpritePos().Y) { Bdown = true; ball_speed.Y += 1f; } //check pos of edge of paddle for normal hit if (P1paddle.GetSpritePos().Y >= ball.GetSpritePos().Y) { Bdown = false; ball_speed.Y -= 0.5f; } if (P1paddle.GetSpritePos().Y <= ball.GetSpritePos().Y) { Bdown = true; ball_speed.Y -= 0.5f; } Bright = true; ball_speed.X += 0.1f; paddle_sound.Play(); } if (checkcollision(ball.GetColbox(), P2paddle.GetColbox())) { //check pos of edge of paddle for strong angle hit if (P2paddle.GetSpritePos().Y - 32 >= ball.GetSpritePos().Y) { Bdown = false; ball_speed.Y += 2f; ball_speed.X += 1f; } if (P2paddle.GetSpritePos().Y + 32 <= ball.GetSpritePos().Y) { Bdown = true; ball_speed.Y += 2f; ball_speed.X += 1f; } //check pos of edge of paddle for normal angle hit if (P2paddle.GetSpritePos().Y - 16 >= ball.GetSpritePos().Y) { Bdown = false; ball_speed.Y += 1f; } if (P2paddle.GetSpritePos().Y + 16 <= ball.GetSpritePos().Y) { Bdown = true; ball_speed.Y += 1f; } //check pos of edge of paddle for normal hit if (P2paddle.GetSpritePos().Y >= ball.GetSpritePos().Y) { Bdown = false; ball_speed.Y -= 0.5f; } if (P2paddle.GetSpritePos().Y <= ball.GetSpritePos().Y) { Bdown = true; ball_speed.Y -= 0.5f; } //Bleft = true; Bright = false; ball_speed.X += 0.1f; paddle_sound.Play(); } //hits Y pos if (ball.GetSpritePos().Y < 0) { rebound_sound.Play(); Bdown = true; } if (ball.GetSpritePos().Y > screensize.Y - 15) { rebound_sound.Play(); Bdown = false; } //hitsX pos with reset if (ball.GetSpritePos().X < 0) { goal_sound.Play(); P2score++; GameReset(); } if (ball.GetSpritePos().X > screensize.X) { goal_sound.Play(); P1score++; GameReset(); } //random start direction if (ballrand_value == 1) { Bdown = true; Bright = true; ballrand_value = 0; } if (ballrand_value == 2) { Bdown = true; Bright = false; ballrand_value = 0; } if (ballrand_value == 3) { Bdown = false; Bright = true; ballrand_value = 0; } if (ballrand_value == 4) { Bdown = false; Bright = false; ballrand_value = 0; } if (Bdown == true) { ball.SpriteSetPos_Y(ball.GetSpritePos().Y + ball_speed.Y); } else { ball.SpriteSetPos_Y(ball.GetSpritePos().Y - ball_speed.Y); } if (Bright == true) { ball.SpriteSetPos_X(ball.GetSpritePos().X + ball_speed.X); } else { ball.SpriteSetPos_X(ball.GetSpritePos().X - ball_speed.X); } // make sure the Y speed doesnt go into the minus if (ball_speed.Y <= 0.1f) { ball_speed.Y = 1f; } } base.Update(gameTime); }