mirror of
https://github.com/kristoferssolo/School.git
synced 2025-10-21 20:10:38 +00:00
122 lines
2.6 KiB
Python
122 lines
2.6 KiB
Python
# 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()
|