From c3bbf55987ff969f7a8d18746f1ba603c4501364 Mon Sep 17 00:00:00 2001 From: Kristofers-Solo Date: Fri, 4 Mar 2022 16:27:16 +0200 Subject: [PATCH] Added spaceinvaders --- pygame/space_invaders/icons/fireball_icon.png | Bin 0 -> 982 bytes .../icons/space_invader_enemy_icon.png | Bin 0 -> 2615 bytes .../icons/space_shuttle_player_icon.png | Bin 0 -> 4147 bytes pygame/space_invaders/space_invaders.py | 20 +++ pygame/space_invaders/space_invaders_old.py | 121 ++++++++++++++++++ 5 files changed, 141 insertions(+) create mode 100644 pygame/space_invaders/icons/fireball_icon.png create mode 100644 pygame/space_invaders/icons/space_invader_enemy_icon.png create mode 100644 pygame/space_invaders/icons/space_shuttle_player_icon.png create mode 100644 pygame/space_invaders/space_invaders.py create mode 100644 pygame/space_invaders/space_invaders_old.py diff --git a/pygame/space_invaders/icons/fireball_icon.png b/pygame/space_invaders/icons/fireball_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d499bc84fa2ffbe63f039dd360f5a849044fa9d9 GIT binary patch literal 982 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 literal 0 HcmV?d00001 diff --git a/pygame/space_invaders/space_invaders.py b/pygame/space_invaders/space_invaders.py new file mode 100644 index 00000000..63b5e4c1 --- /dev/null +++ b/pygame/space_invaders/space_invaders.py @@ -0,0 +1,20 @@ +# Author - Kristiāns Francis Cagulis +# Date - 03.03.2022 +# Title - Space invaders + +import pygame +import math +import random + +# colors (R, G, B) +BLUE = (16, 16, 69) +WHITE = (255, 255, 255) + + +def main(): + SCREEN = pygame.display.set_mode((800, 800)) + pass + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/pygame/space_invaders/space_invaders_old.py b/pygame/space_invaders/space_invaders_old.py new file mode 100644 index 00000000..4694bf35 --- /dev/null +++ b/pygame/space_invaders/space_invaders_old.py @@ -0,0 +1,121 @@ +# Author - Kristiāns Francis Cagulis +# Date - 25.02.2022 +# Title - Space invaders + +import pygame +import math +import random + +BLUE = (16, 16, 69) + +# init game +pygame.init() +pygame.display.set_caption("Space invaders") + +# 32x32 game icon +icon = pygame.image.load("icons/space_invader_enemy_icon.png") +pygame.display.set_icon(icon) +# 64x64 player icon +player = pygame.image.load("icons/space_shuttle_player_icon.png") +player_x = 370 +player_y = 480 +player_x_change = 0 + +# 64x64 enemy icon +enemy = pygame.image.load("icons/space_invader_enemy_icon.png") +enemy_x = random.randint(0, 736) +enemy_y = random.randint(50, 150) +enemy_x_change = .2 +enemy_y_change = 10from urllib.parse import parse_qs + + +# missile +missile = pygame.image.load("icons/fireball_icon.png") +missile_x = 0 +missile_y = 480 # player_y +missile_x_change = 0 +missile_y_change = .50 +missile_state = "ready" + +screen = pygame.display.set_mode((800, 600)) + + +def display_player(x, y): + screen.blit(player, (x, y)) + + +def display_enemy(x, y): + screen.blit(enemy, (x, y)) + + +def display_missile(x, y): + global missile_state + missile_state = "fire" + screen.blit(missile, (x + 16, y - 10)) + + +def is_collision(enemy_x, enemy_y, missile_x, missile_y): + distance = math.sqrt(math.pow(enemy_x - missile_x, 2) + math.pow(enemy_y - missile_y, 2)) + if distance < 27: + return True + else: + return False + + +running = True + +while running: + screen.fill(BLUE) + + # change player pos + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_LEFT: + player_x_change = -.5 + if event.key == pygame.K_RIGHT: + player_x_change = .5 + if event.key == pygame.K_SPACE: + if missile_state == "ready": + missile_x = player_x + # missile_state = "fire" + display_missile(missile_x, missile_y) + + if event.type == pygame.KEYUP: + if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: + player_x_change = 0 + + # player pos + if player_x + player_x_change > 0 and player_x + player_x_change < 736: + player_x += player_x_change + + enemy_x += enemy_x_change + enemy_y += enemy_y_change + + # enemy pos + if enemy_x >= 736: + enemy_x_change = -.2 + elif enemy_x <= 0: + enemy_x_change = .2 + if enemy_y >= 336: + enemy_y_change = -.1 + elif enemy_y <= 50: + enemy_y_change = .1 + + collision = is_collision(enemy_x, enemy_y, missile_x, missile_y) + if collision: + missile_y = 480 + missile_state = "ready" + # score ... + + display_enemy(enemy_x, enemy_y) + + if missile_y <= 0: + missile_state = "ready" + if missile_state == "fire": + display_missile(missile_x, missile_y) + missile_y -= missile_y_change + + display_player(player_x, player_y) + pygame.display.update()