/// <summary> /// Update metod som flyttar bonusens position var 3:de sekund samt kollar ifall bonusen har blivit intersectad. Den flyttas till random position /// och timern resettas och alltså börjar den om igen. /// </summary> #region Update metod public void Update(Ball ball1, GameTime gameTime) { timer += gameTime.ElapsedGameTime.TotalSeconds; if (timer > 3) { bonusPos = new Vector2(boxLocation.Next(0, 785), boxLocation.Next(0, 480)); timer = 0; } if (ball1.BallHitbox.Intersects(bonusHitbox)) { intersect = true; } bonusHitbox.Location = bonusPos.ToPoint(); }
/// <summary> /// Här uppdateras bara paddelns position. Datorn kollar vilken tangent som är nedtryckt och addar eller subtraherar fart(5) från Y positionen. /// Boolean variabeln på paddel objekten kollar också ifall den är stor eller liten, här regleras detta så att inte paddlarna kan gå utanför skärmen /// när ena paddeln är stor och andra liten. /// </summary> /// <param name="box"></param> #region Update metod public void Update(Bonus box) { kstate = Keyboard.GetState(); //Kollar ifall du trycker ned eller upp på tangenterna, isåfall gå + eller - 5 på y värdet if (kstate.IsKeyDown(Up)) { paddlePos.Y -= fart; } if (kstate.IsKeyDown(Down)) { paddlePos.Y += fart; } //Kollar ifall paddeln är stor och sedan anpassar programmet så att den inte kan röra sig utanför skärmen if (big == true) { if (paddlePos.Y < 0) { paddlePos.Y = 0; } if (paddlePos.Y > 332) { paddlePos.Y = 332; } } //Kollar ifall paddeln är liten och sedan anpassar programmet så att den inte kan röra sig utanför skärmen if (small == true) { if (paddlePos.Y < 0) { paddlePos.Y = 0; } if (paddlePos.Y > 400) { paddlePos.Y = 400; } } //paddelns rektangel flyttar sig med paddelns position paddleHitbox.Location = paddlePos.ToPoint(); }
/// <summary> /// Bollens hastighet, riktning och begränsningar kollas/uppdateras här. Bollpositionen ökar med +8 eller -8 hela tiden genom att man adderar eller /// subtraherar 8 från bollpositionen hela tiden. /// </summary> #region Update metod public void Update() { ballPos.X += velocity.X; ballPos.Y += velocity.Y; //Ifall bollen går över eller under skärmen multiplicera med -1 if (ballPos.Y <= 0) { velocity.Y *= -1; } if (ballPos.Y >= 480 - 19) { velocity.Y *= -1; } //Bollhitboxen ska ha boll positionen ballHitbox.Location = ballPos.ToPoint(); }
protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } // TODO: Add your update logic here KeyboardState kb = Keyboard.GetState(); float dt = (float)gameTime.ElapsedGameTime.TotalSeconds; if (kb.IsKeyDown(Keys.S)) { posPlayer1.Y += velPlayer * dt; } if (kb.IsKeyDown(Keys.W)) { posPlayer1.Y -= velPlayer * dt; } if (kb.IsKeyDown(Keys.Down)) { posPlayer2.Y += velPlayer * dt; } if (kb.IsKeyDown(Keys.Up)) { posPlayer2.Y -= velPlayer * dt; } if (posPlayer1.Y < 0) { posPlayer1.Y = 0; } else if (posPlayer1.Y > limitsPlayer.Y) { posPlayer1.Y = limitsPlayer.Y; } if (posPlayer2.Y < 0) { posPlayer2.Y = 0; } else if (posPlayer2.Y > limitsPlayer.Y) { posPlayer2.Y = limitsPlayer.Y; } posBall += dirBall * dt; if (posBall.X < 0) { posBall.X = 0; dirBall.X = velBall; score2++; } else if (posBall.X > limitsBall.X) { posBall.X = limitsBall.X; dirBall.X = -velBall; score1++; } if (posBall.Y < 0) { posBall.Y = 0; dirBall.Y = velBall; } else if (posBall.Y > limitsBall.Y) { posBall.Y = limitsBall.Y; dirBall.Y = -velBall; } scorePanel = score1 + " / " + score2; posScorePanel.X = (screenSize.X - scoreFont.MeasureString(scorePanel).X) / 2; if (new Rectangle(posPlayer1.ToPoint(), sizePlayer.ToPoint()).Intersects( new Rectangle(posBall.ToPoint(), sizeBall.ToPoint()))) { posBall.X = posPlayer1.X + sizePlayer.X; dirBall.X = velBall; } if (new Rectangle(posPlayer2.ToPoint(), sizePlayer.ToPoint()).Intersects( new Rectangle(posBall.ToPoint(), sizeBall.ToPoint()))) { posBall.X = posPlayer2.X - sizeBall.X; dirBall.X = -velBall; } base.Update(gameTime); }