View difference between Paste ID: mrWWdsMy and i61u0vPe
SHOW: | | - or go back to the newest paste.
1
#Space Invaders
2
3
import os
4
import turtle
5
import math
6
import random
7
8
9
wn = turtle.Screen()
10
wn.bgcolor("black")
11
wn.title("Space Invaders")
12
13
#Draw border
14
border_pen = turtle.Turtle()
15
border_pen.speed(0)
16
border_pen.color("green")
17
border_pen.penup()
18
border_pen.setposition(-300,-300)
19
border_pen.pendown()
20
border_pen.pensize(3)
21
for side in range(4):
22
    border_pen.fd(600)
23
    border_pen.lt(90)
24
border_pen.hideturtle()
25
26
#set score to 0
27
score = 0
28
29
#draw score
30
score_pen = turtle.Turtle()
31
score_pen.speed(0)
32
score_pen.color("white")
33
score_pen.penup()
34
score_pen.setposition(-290, 280)
35
scorestring = "Score: %s" %score
36
score_pen.write(scorestring, False, align="left", font=("Arial", 14, "normal"))
37
score_pen.hideturtle()
38
39
40
#create player
41
player = turtle.Turtle()
42
player.color("purple")
43
player.shape("triangle")
44
player.penup()
45
player.speed(0)
46
player.setposition(0, -250)
47
player.setheading(90)
48
49
playerspeed = 25
50
51
#choose number of enemies
52
number_of_enemies = 5
53
#create an empty list of enemies
54
enemies = []
55
56
#add enemies to list
57
for i in range(number_of_enemies):
58
    #create the enemy
59
    enemies.append(turtle.Turtle())
60
61
62
#create enemy
63
for enemy in enemies:
64
    enemy.color("red")
65
    enemy.shape("circle")
66
    enemy.penup()
67
    enemy.speed(0)
68
    x = random.randint(-200, 200)
69
    y = random.randint(100, 250)
70
    enemy.setposition(x, y)
71
72
enemyspeed = 2
73
74
75
#create bullet
76
bullet = turtle.Turtle()
77
bullet.color("yellow")
78
bullet.shape("triangle")
79
bullet.penup()
80
bullet.speed(0)
81
bullet.setheading(90)
82
bullet.shapesize(0.5, 0.5)
83
bullet.hideturtle()
84
85
bulletspeed = 20
86
87
#define bullet state
88
#ready - ready to fire
89
#fire - bullet is firing
90
bulletstate = "ready"
91
92
93
94
95
96
#Move player left and right
97
def move_left():
98
    x = player.xcor()
99
    x -= playerspeed
100
    if x < -280:
101
        x = - 280
102
    player.setx(x)
103
104
def move_right():
105
    x = player.xcor()
106
    x += playerspeed
107
    if x > 280:
108
        x = 280
109
    player.setx(x)
110
111
def fire_bullet():
112
    #declare bulletstate as global
113
    global bulletstate
114
    if bulletstate == "ready":
115
        bulletstate = "fire"
116
        #move bullet
117
        x = player.xcor()
118
        y= player.ycor() + 10
119
        bullet.setposition(x, y)
120
        bullet.showturtle()
121
122
def isCollision(t1, t2):
123
    distance = math.sqrt(math.pow(t1.xcor()-t2.xcor(),2)+math.pow(t1.ycor()-t2.ycor(),2))
124
    if distance < 15:
125
        return True
126
    else:
127
        return False
128
129
130
131
#create keyboard bindings
132
turtle.listen()
133
turtle.onkey(move_left, "Left")
134
turtle.onkey(move_right, "Right")
135
turtle.onkey(fire_bullet, "space")
136
137
138
#maiin game loop
139
while True:
140
    for enemy in enemies:
141
        #move enemy
142
        x = enemy.xcor()
143
        x += enemyspeed
144
        enemy.setx(x)
145
146
        #move enemy back and forth
147
        if enemy.xcor() > 280:
148
            for e in enemies:
149
                y = e.ycor()
150
                y -= 40
151
                e.sety(y)
152
            enemyspeed *= -1
153
154
        if enemy.xcor() < -280:
155
            for e in enemies:
156
                y = e.ycor()
157
                y -= 40
158
                e.sety(y)
159
            enemyspeed *= -1
160
161
        #check for a collision between the bullet and enemy
162
        if isCollision(bullet, enemy):
163
            #reset the bullet
164
            bullet.hideturtle()
165
            bulletstate = "ready"
166
            bullet.setposition(0, -400)
167
            #reset enemy
168
            x = random.randint(-200, 200)
169
            y = random.randint(100, 250)
170
            enemy.setposition(x, y)
171
            #Update score
172
            score += 10
173
            scorestring = "Score: %s" % score
174
            score_pen.clear()
175
            score_pen.write(scorestring, False, align="left", font=("Arial", 14, "normal"))
176
177
        if isCollision(bullet, enemy):
178
            bullet.hideturtle()
179
            bulletstate = "ready"
180
            bullet.setposition(0, -400)
181
            #reset enemy
182
            enemy.setposition(-200, 250)
183
184
        if isCollision(player, enemy):
185
            player.hideturtle()
186
            enemy.hideturtle()
187
            print ("Game Over Bitches!")
188
            break
189
190
191
    #move bullet
192
    if bulletstate == "fire":
193
        y = bullet.ycor()
194
        y += bulletspeed
195
        bullet.sety(y)
196
197
    #check to see if bullet has gone to top
198
    if bullet.ycor() > 275:
199
        bullet.hideturtle()
200
        bulletstate = "ready"
201
202
turtle.done()
203
dealy = input("Press Enter to finsih.")