private void gameTimer_Tick(object sender, EventArgs e) { //swaps controls when shrooms is active for p1 if (isShroomsControls) { if (leftArrowDown && paddle.x < (this.Width - paddle.width)) { paddle.Move("right"); } if (rightArrowDown && paddle.x > 0) { paddle.Move("left"); } } if (isShroomsControls)//for p2 { if (aKeyDown && paddle2.x < (this.Width - paddle2.width)) { paddle2.Move("right"); } if (dKeyDown && paddle.x > 0) { paddle2.Move("left"); } } // Move the paddle for p1 if (leftArrowDown && paddle.x > 0) { paddle.Move("left"); } if (rightArrowDown && paddle.x < (this.Width - paddle.width)) { paddle.Move("right"); } //move the paddle for p2 if (aKeyDown && paddle2.x > 0) { paddle2.Move("left"); } if (dKeyDown && paddle2.x < (this.Width - paddle2.width)) { paddle2.Move("right"); } #region Stefan and Jacks PowerUps if (MagnetTimer > 0 && isMagnet == true) { MagnetTimer--; } else if (MagnetTimer <= 0 && isMagnet == true) { isMagnet = false; } if (longPaddle == true) { longPaddleTimer++; if (longPaddleTimer >= 14 && paddle.width > 80) { longPaddleTimer = 0; paddle.x++; paddle.width -= 2; } else if (paddle.width <= 80 && longPaddleTimer >= 14) { longPaddleTimer = 0; longPaddle = false; } } else if (longPaddle == true && paddle.width != 80) { paddle.width = 80; } if (isFloor == true && floorTimer <= 0) { isFloor = false; } else if (isFloor == true && floorTimer > 0) { floorTimer--; foreach (Ball ba in balls) { if (ba.PaddleCollision(floorPaddle, false, false, 100) == 0) { floorTimer = 0; } } CollidePowerUps(floorPaddle); } if (strongBallTimer > 0 && isStrongball == true) { strongBallTimer--; } else if (strongBallTimer <= 0 && isStrongball == true) { isStrongball = false; ballBrush.Color = Color.White; } if (shroomsTimer > 0 && isShrooms == true) { ballBrush.Color = Color.FromArgb(randomNum.Next(0, 255), randomNum.Next(0, 255), randomNum.Next(0, 255)); paddleBrush.Color = Color.FromArgb(randomNum.Next(0, 255), randomNum.Next(0, 255), randomNum.Next(0, 255)); if (shroomsControlTimer >= 80 && isShroomsControls == false) { isShroomsControls = true; } shroomsControlTimer++; shroomsTimer--; } else if (shroomsTimer <= 0 && isShrooms == true) { isShrooms = isShroomsControls = false; paddleBrush.Color = ballBrush.Color = Color.White; } if (blindfoldTimer > 0 && isBlindfold == true) { blindfoldTimer--; } else if (blindfoldTimer <= 0 && isBlindfold == true) { isBlindfold = false; } // Moves powerups MovePowerups(powerUps); // Check for collision with powerups and paddle CollidePowerUps(paddle); CollidePowerUps(paddle2); #endregion // Moves ball ball.Move(); // Check for collision with top and side walls ball.WallCollision(this); // Check for collision of ball with paddle, (incl. paddle movement) ticksSinceHit = ball.PaddleCollision(paddle, leftArrowDown, rightArrowDown, ticksSinceHit); ticksSinceHit = ball.PaddleCollision(paddle2, aKeyDown, dKeyDown, ticksSinceHit); // Check if ball has collided with any of player 1 blocks foreach (Block b in blocks1p) { if (ball.BlockCollision(b)) { b.hp--; if (b.hp == 0) { blocks1p.Remove(b); } //reduce life of player p1HP--; Random n = new Random(); if (n.Next(0, 1) == 0) { PowerUp p = new PowerUp(b.x, b.y, 20, -3, n.Next(0, 7)); powerUps.Add(p); } hpLabelp1.Text = "Player 1 HP: " + p1HP.ToString(); if (blocks1p.Count == 0 && p1HP <= 0)//if player 1 runs out of blocks { gameTimer.Enabled = false; player1Won = false; player2Won = true; OnEnd(); } break; } } // Check if ball has collided with any of player 2 blocks foreach (Block b in blocks2p) { if (ball.BlockCollision(b)) { b.hp--; if (b.hp == 0) { blocks2p.Remove(b); } p2HP--; Random n = new Random(); if (n.Next(0, 1) == 0) { PowerUp p = new PowerUp(b.x, b.y, 20, 3, n.Next(0, 7)); powerUps.Add(p); } hpLabelp2.Text = "Player 2 HP: " + p2HP.ToString(); if (blocks2p.Count == 0 && p2HP <= 0) { gameTimer.Enabled = false; player2Won = false; player1Won = true; OnEnd(); } break; } } // Check for ball hitting bottom of screen if (ball.BottomCollision(this)) { // Moves the ball back to origin ball.ySpeed *= -1; } //redraw the screen Refresh(); }
private void gameTimer_Tick(object sender, EventArgs e) { //pause the game if (gamePaused == true) { gameTimer.Enabled = false; } // Move the paddle if (leftArrowDown && paddle.x > 0) { paddle.Move("left"); } if (rightArrowDown && paddle.x < (this.Width - paddle.width)) { paddle.Move("right"); } if (escDown == true) { gamePaused = !gamePaused; } // Move ball ball.Move(); //Move powerups foreach (PowerUp p in powers) { p.Move(); } // Check for collision with top and side walls ball.WallCollision(this); // Check for ball hitting bottom of screen foreach (Ball b in ballList) { if (ballList.Count() < 1) { if (b.BottomCollision(this)) { ballList.Remove(b); } } if (ballList.Count() == 1) { if (b.BottomCollision(this)) { lives--; // Moves the ball back to origin b.x = ((paddle.x - (ball.size / 2)) + (paddle.width / 2)); b.y = (this.Height - paddle.height) - 85; b.xSpeed = 6; b.ySpeed = 6; b.size = 20; Refresh(); if (lives == 0) { gameTimer.Enabled = false; OnEnd(); } Thread.Sleep(2000); } } } if (ballList.Count() == 0) { lives--; // Moves the ball back to origin int ballX = ((paddle.x - (ball.size / 2)) + (paddle.width / 2)); int ballY = (this.Height - paddle.height) - 85; int xSpeed = 6; int ySpeed = 6; int ballSize = 20; ball = new Ball(ballX, ballY, xSpeed, ySpeed, ballSize); ballList.Add(ball); if (lives == 0) { gameTimer.Enabled = false; OnEnd(); } } // Check for collision of ball with paddle, (incl. paddle movement) ball.PaddleCollision(paddle, leftArrowDown, rightArrowDown); // Check if ball has collided with any blocks foreach (Block b in blocks) { if (ball.BlockCollision(b)) { --b.hp; //blocks.Remove(b); int blockX = b.x; int blockY = b.y + b.height; int blockSize = b.width; if (b.hp == 0) { blocks.Remove(b); score = score + 100 * scoreMult; double d = score / 500; double scoreint = Math.Round(d); if (scoreint > lastPower) { lastPower = scoreint; NumberGen(); int powertype = powerValue; PowerUp power = new PowerUp(blockSize / 2 + blockX, blockY, powerupSpeed, 15, powertype); powers.Add(power); } } if (blocks.Count == 0) { currentLevel++; NewLevel(); } break; } } //redraw the screen Refresh(); }