/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } var touchState = Keyboard.GetState(); if (touchState.IsKeyDown(Keys.Left)) { PaddleBottom.X = PaddleBottom.X - (float)(PaddleBottom.Speed * gameTime.ElapsedGameTime.TotalMilliseconds); } if (touchState.IsKeyDown(Keys.Right)) { PaddleBottom.X = PaddleBottom.X + (float)(PaddleBottom.Speed * gameTime.ElapsedGameTime.TotalMilliseconds); } if (touchState.IsKeyDown(Keys.A)) { PaddleTop.X = PaddleTop.X - (float)(PaddleTop.Speed * gameTime.ElapsedGameTime.TotalMilliseconds); } if (touchState.IsKeyDown(Keys.D)) { PaddleTop.X = PaddleTop.X + (float)(PaddleTop.Speed * gameTime.ElapsedGameTime.TotalMilliseconds); } PaddleBottom.X = MathHelper.Clamp(PaddleBottom.X, 0, graphics.PreferredBackBufferWidth - PaddleBottom.Width); var ballPositionChange = Ball.Direction * (float)(gameTime.ElapsedGameTime.TotalMilliseconds * Ball.Speed); Ball.X += ballPositionChange.X; Ball.Y += ballPositionChange.Y; // Ball - side walls if (Walls.Any(w => CollisionDetector.Overlaps(Ball, w))) { Ball.Direction = new Vector2(-Ball.Direction.X, Ball.Direction.Y); Ball.Speed = Ball.Speed * Ball.BumpSpeedIncreaseFactor; } // Ball - winning walls if (Goals.Any(w => CollisionDetector.Overlaps(Ball, w))) { Ball.X = GraphicsDevice.Viewport.Bounds.Center.X; Ball.Y = GraphicsDevice.Viewport.Bounds.Center.Y; Ball.Speed = GameConstants.DefaultInitialBallSpeed; HitSound.Play(); } // Paddle - ball collision if (CollisionDetector.Overlaps(Ball, PaddleTop) && Ball.Direction.Y < 0 || (CollisionDetector.Overlaps(Ball, PaddleBottom) && Ball.Direction.Y > 0)) { Ball.Direction = new Vector2(Ball.Direction.X, -Ball.Direction.Y); Ball.Speed *= Ball.BumpSpeedIncreaseFactor; } base.Update(gameTime); }
/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> 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 var touchState = Keyboard.GetState(); var bounds = GraphicsDevice.Viewport.Bounds; if (touchState.IsKeyDown(Keys.Left)) { PaddleBottom.X = PaddleBottom.X - (float)(PaddleBottom.Speed * gameTime.ElapsedGameTime.TotalMilliseconds); PaddleBottom.X = MathHelper.Clamp(PaddleBottom.X, bounds.Left, bounds.Right - PaddleBottom.Width); } if (touchState.IsKeyDown(Keys.Right)) { PaddleBottom.X = PaddleBottom.X + (float)(PaddleBottom.Speed * gameTime.ElapsedGameTime.TotalMilliseconds); PaddleBottom.X = MathHelper.Clamp(PaddleBottom.X, bounds.Left, bounds.Right - PaddleBottom.Width); } if (touchState.IsKeyDown(Keys.A)) { PaddleTop.X = PaddleTop.X - (float)(PaddleTop.Speed * gameTime.ElapsedGameTime.TotalMilliseconds); PaddleTop.X = MathHelper.Clamp(PaddleTop.X, bounds.Left, bounds.Right - PaddleTop.Width); } if (touchState.IsKeyDown(Keys.D)) { PaddleTop.X = PaddleTop.X + (float)(PaddleTop.Speed * gameTime.ElapsedGameTime.TotalMilliseconds); PaddleTop.X = MathHelper.Clamp(PaddleTop.X, bounds.Left, bounds.Right - PaddleTop.Width); } var ballPositionChange = ball.Direction * (float)(gameTime.ElapsedGameTime.TotalMilliseconds * ball.Speed); ball.X += ballPositionChange.X; ball.Y += ballPositionChange.Y; // Ball - side walls if (Walls.Any(w => CollisionDetector.Overlaps(ball, w))) { ball.BounceX(); ball.Acceleration(); } // Ball - winning walls if (Goals.Any(w => CollisionDetector.Overlaps(ball, w))) { ball.X = 225; ball.Y = 460; ball.Speed = GameConstants.DefaultInitialBallSpeed; HitSound.Play(); } // Paddle - ball collision if (CollisionDetector.Overlaps(ball, PaddleTop) && ball.Direction.Y < 0 || (CollisionDetector.Overlaps(ball, PaddleBottom) && ball.Direction.Y > 0)) { ball.BounceY(); ball.Acceleration(); } base.Update(gameTime); }
static void NewGoalItem(dynamic metadata, dynamic content, GoalType goal) { var text = content.Text.ToString(); var parentId = content.ParentId.ToString(); var id = metadata.ReferenceKey.ToString(); var groupKey = metadata.GroupKey.ToString(); var memberKey = metadata.MemberKey.ToString(); if (!Goals.Any(t => t.Id == id || (t.ParentId == parentId && t.Text == text))) { AddGoalItem(id, groupKey, memberKey, text, parentId, GetCreateDate(metadata), goal); } else { SendFeedbackMessage(type: MsgType.Error, actionTime: GetCreateDate(metadata), action: MapAction.GoalFeedback.CannotAddGoal.Name, content: "Cannot add dupicate Goal item!"); } }
internal static IEnumerable <PresentItem> GetTodos(string groupKey, string memberKey, string parentid) { return(Goals.Where(i => i.GroupKey == groupKey && i.MemberKey == memberKey && !Goals.Any(g => g.ParentId == i.Id)).Select(i => GoalToPresentation2(groupKey, memberKey, i))); }
/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } var touchState = Keyboard.GetState(); // 1st player if (touchState.IsKeyDown(Keys.Left)) { PaddleBottom.X = PaddleBottom.X - (float)(PaddleBottom.Speed * gameTime.ElapsedGameTime.TotalMilliseconds); } if (touchState.IsKeyDown(Keys.Right)) { PaddleBottom.X = PaddleBottom.X + (float)(PaddleBottom.Speed * gameTime.ElapsedGameTime.TotalMilliseconds); } // 2nd player if (touchState.IsKeyDown(Keys.A)) { PaddleTop.X = PaddleTop.X - (float)(PaddleTop.Speed * gameTime.ElapsedGameTime.TotalMilliseconds); } if (touchState.IsKeyDown(Keys.D)) { PaddleTop.X = PaddleTop.X + (float)(PaddleTop.Speed * gameTime.ElapsedGameTime.TotalMilliseconds); } // check if coordinates fit right into the game screen PaddleBottom.X = MathHelper.Clamp(PaddleBottom.X, 0, 500 - PaddleBottom.Width); PaddleTop.X = MathHelper.Clamp(PaddleTop.X, 0, 500 - PaddleTop.Width); // ball movement var ballPositionChange = Ball.Direction * (float)(gameTime.ElapsedGameTime.TotalMilliseconds * Ball.Speed); Ball.X += ballPositionChange.X; Ball.Y += ballPositionChange.Y; // Ball - side walls if (Walls.Any(w => CollisionDetector.Overlaps(Ball, w))) { Ball.Direction = new Vector2(-Ball.Direction.X, Ball.Direction.Y); SetNewBallSpeed(); } // Ball - winning walls if (Goals.Any(w => CollisionDetector.Overlaps(Ball, w))) { Ball.X = 230; Ball.Y = 430; Ball.Speed = GameConstants.DefaultInitialBallSpeed; HitSound.Play(); } // Paddle - ball collision if (CollisionDetector.Overlaps(Ball, PaddleTop) && Ball.Direction.Y < 0 || (CollisionDetector.Overlaps(Ball, PaddleBottom) && Ball.Direction.Y > 0)) { Ball.Direction = new Vector2(Ball.Direction.X, -Ball.Direction.Y); SetNewBallSpeed(); } base.Update(gameTime); }