-
Notifications
You must be signed in to change notification settings - Fork 173
/
Copy pathmain.py
executable file
·117 lines (103 loc) · 3.23 KB
/
main.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
from turtle import Screen
from AlienFleet import Fleet
from SpaceShip import SpaceShip
from Barrier import Barrier
from Scoreboard import Scoreboard
from time import sleep
from bullet import Bullet
import random
from AlienBomb import AlienBombManager
screen = Screen()
screen.setup(width=600, height=600)
screen.bgcolor("black")
screen.title("Space Invasion!!")
screen.tracer(0)
screen.register_shape('ship', ((-10,0),(0,10),(10,0)))
screen.register_shape('alien.gif')
def FireBullet():
global bullet
if bullet == None:
bullet = Bullet(position_x=player.xcor(), position_y=player.ycor())
def DeleteBullet():
global bullet
bullet.goto(3000,3000)
bullet.clear()
del bullet
bullet = None
def RandomAlienBomb():
random_chance = random.randint(1, 12)
if random_chance == 1:
random_alien = random.choice(fleet.aliens)
bomb.MakeBomb(position_x=random_alien.xcor(), position_y=random_alien.ycor())
player = SpaceShip()
barrier1 = Barrier(-260, -220)
fleet = Fleet(-240, 160)
bomb = AlienBombManager()
bullet = None
scoreboard = Scoreboard()
# Initialise game
screen.update()
screen.listen()
screen.onkey(player.go_left, "a")
screen.onkey(player.go_right, "d")
screen.onkey(FireBullet, "space")
game_is_on = True
while game_is_on == True:
sleep(0.0001)
screen.update()
if len(fleet.aliens) <=0:
scoreboard.GameOver(Reason="Won")
game_is_on = False
if scoreboard.lives <= 0:
scoreboard.GameOver(Reason="Lives")
game_is_on = False
# ALIEN MOVES
fleet.MoveFleet()
fleet.DetectLeftRightBoundaries()
if fleet.DetectLowerBoundary() == True:
scoreboard.GameOver(Reason="Invaded")
game_is_on = False
# ALIEN BOMB ACTIONS
RandomAlienBomb()
bomb.moveBombs()
bomb.DetectLowerLimit()
for bombx in bomb.bombs:
if player.distance(bombx) < 20:
scoreboard.RemoveLife()
bomb.DeleteBomb(Bomb=bombx)
player.respawn()
continue
for brick in barrier1.bricks:
if bombx.distance(brick) < 7:
barrier1.DeleteBrick(brick=brick)
bomb.DeleteBomb(Bomb=bombx)
continue
# PLAYER BULLET ACTIONS
if bullet != None:
bullet.BulletMove()
if bullet.DetectTopLimit() == True:
DeleteBullet()
else:
for brick in barrier1.bricks:
if bullet.distance(brick) <8:
barrier1.DeleteBrick(brick=brick)
DeleteBullet()
break
if bullet != None:
for alien in fleet.aliens:
if bullet.distance(alien) <10:
fleet.DeleteAlien(alien)
scoreboard.score += 20
scoreboard.RefreshScore()
DeleteBullet()
break
if bullet != None:
for bombx in bomb.bombs:
if bullet.distance(bombx) <5:
bomb.DeleteBomb(bombx)
scoreboard.score += 5
scoreboard.RefreshScore()
DeleteBullet()
break
screen.mainloop()
screen.exitonclick()