From 508cb74fce4a5412aa9a60592549fcbc090790ac Mon Sep 17 00:00:00 2001 From: Utkarsh Mall <69422566+Assertor1@users.noreply.github.com> Date: Thu, 1 Oct 2020 17:08:11 +0530 Subject: [PATCH] Update main.py Added a start button to make game more interactive. --- main.py | 196 ++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 119 insertions(+), 77 deletions(-) diff --git a/main.py b/main.py index f3df86ee..e6613b92 100644 --- a/main.py +++ b/main.py @@ -13,6 +13,7 @@ # Background background = pygame.image.load('background.png') + # Sound mixer.music.load("background.wav") mixer.music.play(-1) @@ -98,86 +99,127 @@ def isCollision(enemyX, enemyY, bulletX, bulletY): else: return False +running = True # Game Loop -running = True -while running: - - # RGB = Red, Green, Blue - screen.fill((0, 0, 0)) - # Background Image - screen.blit(background, (0, 0)) - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - - # if keystroke is pressed check whether its right or left - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_LEFT: - playerX_change = -5 - if event.key == pygame.K_RIGHT: - playerX_change = 5 - if event.key == pygame.K_SPACE: - if bullet_state is "ready": - bulletSound = mixer.Sound("laser.wav") - bulletSound.play() - # Get the current x cordinate of the spaceship - bulletX = playerX - fire_bullet(bulletX, bulletY) - - if event.type == pygame.KEYUP: - if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: - playerX_change = 0 - - # 5 = 5 + -0.1 -> 5 = 5 - 0.1 - # 5 = 5 + 0.1 - - playerX += playerX_change - if playerX <= 0: - playerX = 0 - elif playerX >= 736: - playerX = 736 - - # Enemy Movement - for i in range(num_of_enemies): - - # Game Over - if enemyY[i] > 440: - for j in range(num_of_enemies): - enemyY[j] = 2000 - game_over_text() - break - - enemyX[i] += enemyX_change[i] - if enemyX[i] <= 0: - enemyX_change[i] = 4 - enemyY[i] += enemyY_change[i] - elif enemyX[i] >= 736: - enemyX_change[i] = -4 - enemyY[i] += enemyY_change[i] - - # Collision - collision = isCollision(enemyX[i], enemyY[i], bulletX, bulletY) - if collision: - explosionSound = mixer.Sound("explosion.wav") - explosionSound.play() +def main(): + + # global variables + global playerImg + global playerX + global playerY + global playerX_change + global bulletX + global bulletY + global bullet_state + global score_value + global running + + + while running: + + # RGB = Red, Green, Blue + screen.fill((0, 0, 0)) + # Background Image + screen.blit(background, (0, 0)) + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + + # if keystroke is pressed check whether its right or left + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_LEFT: + playerX_change = -5 + if event.key == pygame.K_RIGHT: + playerX_change = 5 + if event.key == pygame.K_SPACE: + if bullet_state is "ready": + bulletSound = mixer.Sound("laser.wav") + bulletSound.play() + # Get the current x cordinate of the spaceship + bulletX = playerX + fire_bullet(bulletX, bulletY) + + if event.type == pygame.KEYUP: + if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: + playerX_change = 0 + + # 5 = 5 + -0.1 -> 5 = 5 - 0.1 + # 5 = 5 + 0.1 + + playerX += playerX_change + if playerX <= 0: + playerX = 0 + elif playerX >= 736: + playerX = 736 + + # Enemy Movement + for i in range(num_of_enemies): + + # Game Over + if enemyY[i] > 440: + for j in range(num_of_enemies): + enemyY[j] = 2000 + game_over_text() + break + + enemyX[i] += enemyX_change[i] + if enemyX[i] <= 0: + enemyX_change[i] = 4 + enemyY[i] += enemyY_change[i] + elif enemyX[i] >= 736: + enemyX_change[i] = -4 + enemyY[i] += enemyY_change[i] + + # Collision + collision = isCollision(enemyX[i], enemyY[i], bulletX, bulletY) + if collision: + explosionSound = mixer.Sound("explosion.wav") + explosionSound.play() + bulletY = 480 + bullet_state = "ready" + score_value += 1 + enemyX[i] = random.randint(0, 736) + enemyY[i] = random.randint(50, 150) + + enemy(enemyX[i], enemyY[i], i) + + # Bullet Movement + if bulletY <= 0: bulletY = 480 bullet_state = "ready" - score_value += 1 - enemyX[i] = random.randint(0, 736) - enemyY[i] = random.randint(50, 150) - - enemy(enemyX[i], enemyY[i], i) - - # Bullet Movement - if bulletY <= 0: - bulletY = 480 - bullet_state = "ready" - if bullet_state is "fire": - fire_bullet(bulletX, bulletY) - bulletY -= bulletY_change + if bullet_state is "fire": + fire_bullet(bulletX, bulletY) + bulletY -= bulletY_change + + player(playerX, playerY) + show_score(textX, testY) + pygame.display.update() + + + def menu_screen(): + running = True + clock = pygame.time.Clock() + + while running: + clock.tick(60) + screen.fill((0, 0, 50)) + font = pygame.font.SysFont("comicsans", 60) + pygame.draw.rect(screen, (0, 0, 200), (270, 200, 280, 100)) + text = font.render("Click to Play!", 1, (255,0,0)) + screen.blit(text, (280,230)) + pygame.display.update() + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + running = False + if event.type == pygame.MOUSEBUTTONDOWN: + running = False + + main() + +while True: + menu_screen() - player(playerX, playerY) - show_score(textX, testY) - pygame.display.update()