import turtle import os import math import random wn=turtle.Screen() wn.bgcolor("black") wn.title("Space invaders") border_pen=turtle.Turtle() border_pen.speed(0) border_pen.color("white") border_pen.penup() border_pen.setposition(-300,-300) border_pen.pendown() border_pen.pensize(3) for side in range(4): border_pen.fd(600) border_pen.lt(90) border_pen.hideturtle() player=turtle.Turtle() player.color("blue") player.shape("triangle") player.penup() player.speed(0) player.setposition(0,-250) player.setheading(90) playerspeed=15 number_of_enemies=5 enemies=[] for i in range(number_of_enemies): enemies.append(turtle.Turtle()) for enemy in range(number_of_enemies): enemies[enemy]=turtle.Turtle() enemies[enemy].color("red") enemies[enemy].shape("circle") enemies[enemy].penup() enemies[enemy].speed(0) x=random.randint(-200,200) y=random.randint(100,250) enemies[enemy].setposition(x,y) enemyspeed=2 bullet=turtle.Turtle() bullet.color("yellow") bullet.shape("triangle") bullet.penup() bullet.setheading(90) bullet.shapesize(0.5,0.5) bullet.hideturtle() bulletspeed=20 bulletstate="ready" def move_left(): x=player.xcor() x-=playerspeed if x<-280: x=-280 player.setx(x) def move_right(): x=player.xcor() x+=playerspeed if x>280: x=280 player.setx(x) def fire_bullet(): global bulletstate if bulletstate=="ready": bulletstate="fire" x=player.xcor() y=player.ycor()+10 bullet.setposition(x,y) bullet.showturtle() def isCollision(t1,t2): distance=math.sqrt(math.pow(t1.xcor()-t2.xcor(),2)+math.pow(t1.ycor()-t2.ycor(),2)) if distance<15: return True else: return False turtle.listen() turtle.onkey(move_left,"Left") turtle.onkey(move_right,"Right") turtle.onkey(fire_bullet,"space") while True: for enemy in range(number_of_enemies): x=enemies[enemy].xcor() x+=enemyspeed enemies[enemy].setx(x) if enemies[enemy].xcor()>280: for e in range(number_of_enemies): y=enemies[e].ycor() y-=40 enemies[e].sety(y) enemyspeed*=-1 if enemies[enemy].xcor()<-280: for e in range(number_of_enemies): y=enemies[e].ycor() y-=40 enemies[e].sety(y) enemyspeed*=-1 for i in range(number_of_enemies): if isCollision(bullet,enemies[i]): bullet.hideturtle() bulletstate="ready" bullet.setposition(0,-400) x=random.randint(-200,200) y=random.randint(100,250) enemies[i].setposition(x,y) if isCollision(player,enemies[i]): player.hideturtle() enemies[i].hideturtle() print("Game Over") break if bulletstate=="fire": y=bullet.ycor() y+=bulletspeed bullet.sety(y) if bullet.ycor()>275: bullet.hideturtle() bulletstate="ready"