/
SpaceGame.py
121 lines (109 loc) · 3.41 KB
/
SpaceGame.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import pygame
from pygame.sprite import Group
from random import randint
from timer import Timer
from settings import Settings
from ship import Ship
from stars import Stars
from bullet import Bullet
from alien import Alien
from hitbox import Hitbox
from explosion import Explosion
import game_functions as gf
def run_game():
pygame.init()
numberOfLives = 3
clock = pygame.time.Clock()
ai_settings = Settings()
screen_height = ai_settings.screen_height
screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height),pygame.FULLSCREEN | pygame.DOUBLEBUF | pygame.HWSURFACE)
screen.fill(ai_settings.bg_color, (0,0,ai_settings.screen_width,ai_settings.screen_height))
pygame.display.set_caption("Alien Invasion")
ship = Ship(ai_settings, screen)
stars = Stars(ai_settings, screen)
bullet = Bullet(ai_settings, screen, ship)
starIndex = 0
star_list = [Stars(ai_settings, screen) for i in range(200)]
alienFrequency = 0
alienIndex = 0
aliens = [Alien(ai_settings, screen) for i in range(200)]
bullets = [bullet]
reload = Timer(ai_settings, screen)
alien_odds = ai_settings.alien_frequency
explosions = []
refreshFPS = 10
avgFPS = 0
delay = 0
pygame.mixer.music.load('Assets/Sounds/explosion.mp3')
myfont = pygame.font.SysFont("monospace", 10)
livesfont = pygame.font.SysFont("monospace", 30)
gameOver = pygame.font.SysFont("monospace", 60)
UI_color = (100, 100, 110)
pause = 0
paused = False
gameOverMessage = ""
while True:
gf.update_screen(ai_settings, screen, ship, star_list, bullets, aliens, explosions, reload ,delay)
alienFrequency = int(pygame.time.get_ticks() / 1000)
clock.tick()
delay = clock.get_time()
gf.check_events(ai_settings, screen, ship, bullets, reload)
if pause <= 0 and paused:
paused = False
numberOfLives = 3
ship.reset()
gameOverMessage = ""
screen.fill(ai_settings.bg_color, (700,450, 600,200))
alienFrequency = 0
else:
pause -= delay
if paused == False:
oddsStar = randint(0, 10)
oddsAlien = randint(0, alienFrequency)
for alien in aliens:
if pygame.sprite.collide_rect(ship, alien):
alien.erase()
alien.reset()
pygame.mixer.music.play(0)
explosions.append(Explosion(ship))
numberOfLives -= 1
if numberOfLives == 0:
ship.erase()
ship.centerX[0] = -10000
gameOverMessage = "GAME OVER!!!"
for alien in aliens:
explosions.append(Explosion(alien))
alien.erase()
alien.reset()
pause = 3000
paused = True
for alien in aliens:
for bullet in bullets:
if alien.rect.collidepoint(bullet.rect.x, bullet.rect.y):
pygame.mixer.music.play(0)
explosions.append(Explosion(alien))
bullets.remove(bullet)
alien.erase()
alien.reset()
reload.update(delay)
if oddsStar == 10:
star_list[starIndex%200].activate()
starIndex += 1
if oddsAlien >= 100:
aliens[alienIndex%200].activate()
alienIndex += 1
if bullets:
if bullets[0].y < 0:
bullets[0].erase()
bullets.pop(0)
screen.fill(UI_color, (0,0, 100,100))
label = myfont.render(str(int(clock.get_fps())), 1, (255,255,0))
lives = myfont.render("LIVES REMAINING :", 1, (255,255,0))
remaining = livesfont.render(str(numberOfLives), 1, (255,255,0))
gg = gameOver.render(gameOverMessage, 1, (255,255,0))
screen.blit(label, (0,0))
screen.blit(lives, (0,30))
screen.blit(remaining, (20,45))
screen.blit(gg, (700,450))
pygame.display.flip()
run_game()