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); }
protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); //debug debugfont_pos = new Vector2(20, 20); Collisionbox = Content.Load<Texture2D>("graphics/collisionbox"); //sound effects paddle_sound = Content.Load<SoundEffect>("sounds/blip1"); rebound_sound = Content.Load<SoundEffect>("sounds/blip2"); goal_sound = Content.Load<SoundEffect>("sounds/blip3"); //menu //play btn playbtn.SpriteLoadPixel(GraphicsDevice, Content, screensize.X / 2, screensize.Y / 2 + 64, 345, 64, Color.DarkGray); playbtn.SpriteSetColbox(); playbtn_font_pos.X = playbtn.GetSpritePos().X; playbtn_font_pos.Y = playbtn.GetSpritePos().Y; // multiplayer button multibtn.SpriteLoadPixel(GraphicsDevice, Content, screensize.X / 2, screensize.Y / 2 + 144, 345, 64, Color.DarkGray); multibtn.SpriteSetColbox(); multibtn_font_pos.X = multibtn.GetSpritePos().X; multibtn_font_pos.Y = multibtn.GetSpritePos().Y; //resolution button resbtn.SpriteLoadPixel(GraphicsDevice, Content, screensize.X / 2 - 155, screensize.Y / 2 - 48, 32, 32, Color.DarkGray); resbtn.SpriteSetColbox(); resbtn_font_pos.X = resbtn.GetSpritePos().X; resbtn_font_pos.Y = resbtn.GetSpritePos().Y; //difficulty button difbtn.SpriteLoadPixel(GraphicsDevice, Content, screensize.X / 2 - 130, screensize.Y / 2, 85, 32, Color.DarkGray); difbtn.SpriteSetColbox(); difbtn_font_pos.X = difbtn.GetSpritePos().X; difbtn_font_pos.Y = difbtn.GetSpritePos().Y; //score button scorebtn.SpriteLoadPixel(GraphicsDevice, Content, screensize.X / 2 + 157, screensize.Y / 2 - 48, 32, 32, Color.DarkGray); scorebtn.SpriteSetColbox(); scorebtn_font_pos.X = scorebtn.GetSpritePos().X; scorebtn_font_pos.Y = scorebtn.GetSpritePos().Y; // help button helpbtn.SpriteLoadPixel(GraphicsDevice, Content, screensize.X / 2 - 124, screensize.Y / 2 + 208, 96, 32, Color.DarkGray); helpbtn.SpriteSetColbox(); helpbtn_font_pos.X = helpbtn.GetSpritePos().X; helpbtn_font_pos.Y = helpbtn.GetSpritePos().Y; //Winner Banner WinnerBanner.SpriteLoadPixel(GraphicsDevice, Content, screensize.X / 2, screensize.Y / 3, 700, 75, Color.DarkGray); //scoreline scoreline.SpriteLoadContent("graphics/scoreline", Content, graphics.PreferredBackBufferWidth / 2, graphics.PreferredBackBufferHeight / 2, 5, graphics.PreferredBackBufferHeight); //fonts font_score = Content.Load<SpriteFont>("fonts/font_score"); font_title = Content.Load<SpriteFont>("fonts/font_title"); font_debug = Content.Load<SpriteFont>("fonts/font_debug"); font_title_pos = new Vector2(screensize.X / 2 - 115, screensize.Y / 8); P1font_score_pos = new Vector2(screensize.X / 4 - 10, screensize.Y / 10); P2font_score_pos = new Vector2(screensize.X / 4 * 3, screensize.Y / 10); //player 1 paddle load content P1paddle.SpriteLoadPixel(GraphicsDevice, Content, screensize.X / 12, Mouse.GetState().Y, 16, 64, Color.White); //Player 2 paddle load content P2paddle.SpriteLoadPixel(GraphicsDevice, Content, screensize.X / 9 * 8, screensize.Y / 2, 16, 64, Color.White); //the ball load content ball.SpriteLoadPixel(GraphicsDevice, Content, screensize.X / 2, screensize.Y / 2, 16, 16, Color.White); }