Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import turtle
- import math
- import random
- import winsound
- wn = turtle.Screen()
- wn.bgcolor("black")
- wn.title("Space Invaders")
- wn.bgpic("space.gif")
- turtle.register_shape("invader.gif")
- turtle.register_shape("tank.gif")
- turtle.register_shape("bullet.gif")
- borderPen = turtle.Turtle()
- borderPen.speed(0)
- borderPen.penup()
- borderPen.setposition(-300, -300)
- borderPen.color("white")
- borderPen.pendown()
- borderPen.pensize(2)
- for side in range(4):
- borderPen.fd(600)
- borderPen.lt(90)
- borderPen.hideturtle()
- score = 0
- score_pen = turtle.Turtle()
- score_pen.speed(0)
- score_pen.color("black")
- score_pen.penup()
- score_pen.setposition(-425, 200)
- scorestring = "Score: %s" %score
- score_pen.write(scorestring, False, align="left", font=("Arial", 16, "normal"))
- score_pen.hideturtle()
- player = turtle.Turtle()
- player.shape("tank.gif")
- player.color("purple")
- player.penup()
- player.setposition(0, -250)
- player.setheading(90)
- player.speed()
- playerspeed = 14
- #Choose the number of enemies
- numberOfEnemies = 6
- #Create an empty list of enemies
- enemies = []
- #Add enemies to the list
- for i in range(numberOfEnemies):
- enemies.append(turtle.Turtle())
- for enemy in enemies:
- enemy.color("red")
- enemy.shape("invader.gif")
- enemy.penup()
- enemy.speed(0)
- x = random.randint(-200, 200)
- y = random.randint(100, 250)
- enemy.setposition(x, y)
- enemyspeed = 3
- bullet = turtle.Turtle()
- bullet.shape("bullet.gif")
- bullet.color("pink")
- bullet.penup()
- bullet.speed()
- bullet.shapesize(0.5)
- bullet.hideturtle()
- bulletspeed = 20
- bulletstate = "ready"
- def moveLeft():
- x = player.xcor()
- x -= playerspeed
- if x < - 280:
- x = - 280
- player.setx(x)
- def moveRight():
- x = player.xcor()
- x += playerspeed
- if x > 280:
- x = 280
- player.setx(x)
- def moveUp():
- y = player.ycor()
- y += playerspeed
- player.sety(y)
- def fireBullet():
- global bulletstate
- if bulletstate == "ready":
- winsound.PlaySound('laser.wav', winsound.SND_ASYNC)
- bulletstate = "fire"
- x = player.xcor()
- y = player.ycor()
- 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
- boss_speed = 9
- class Bosses(turtle.Turtle):
- def __init__(self, spriteshape, color, startx, starty):
- turtle.Turtle.__init__(self, shape = spriteshape)
- self.speed(0)
- self.penup()
- self.color(color)
- self.goto(startx, starty)
- def move(self):
- global boss_speed
- x = self.xcor()
- x += boss_speed
- self.setx(x)
- if self.xcor() > 280:
- y = self.ycor()
- y -= 50
- self.sety(y)
- boss_speed *= -1
- if self.xcor() < -280:
- y = self.ycor()
- y -= 50
- self.sety(y)
- boss_speed *= -1
- boss = Bosses("circle", "blue", 250, 250)
- boss.hideturtle()
- turtle.listen()
- turtle.onkey(moveLeft, "Left")
- turtle.onkey(moveUp, "Up")
- turtle.onkey(moveRight, "Right")
- turtle.onkey(fireBullet, "space")
- while True:
- for enemy in enemies:
- x = enemy.xcor()
- x += enemyspeed
- enemy.setx(x)
- if enemy.xcor() > 280:
- for e in enemies:
- y = e.ycor()
- y -= 40
- e.sety(y)
- enemyspeed *= -1
- if enemy.xcor() < -280:
- for e in enemies:
- y = e.ycor()
- y -= 40
- e.sety(y)
- enemyspeed *= -1
- if enemy.ycor() < -280:
- for enemy in enemies:
- enemy.hideturtle()
- player.hideturtle()
- gameover = turtle.Screen()
- gameover.bgpic('gameover.gif')
- bulletstate = "fire"
- winsound.PlaySound('hyenalaugh.wav', winsound.SND_ASYNC)
- break
- if isCollision(bullet, enemy):
- bullet.hideturtle()
- bulletstate = "ready"
- bullet.setposition(0, -400)
- x = random.randint(-200, 200)
- y = random.randint(100, 250)
- enemy.setposition(x, y)
- score += 10
- scorestring = "Score: %s" %score
- score_pen.clear()
- score_pen.write(scorestring, False, align="left", font=("Arial", 16, "normal"))
- winsound.PlaySound('bomb_cut.wav', winsound.SND_ASYNC)
- if isCollision(player, enemy):
- for enemy in enemies:
- enemy.hideturtle()
- player.hideturtle()
- gameover = turtle.Screen()
- gameover.bgpic('gameover.gif')
- bulletstate = "fire"
- winsound.PlaySound('hyenalaugh.wav', winsound.SND_ASYNC)
- break
- if score >= 20:
- boss.move()
- if bulletstate == "fire":
- y = bullet.ycor()
- y += bulletspeed
- bullet.sety(y)
- if bullet.ycor() > 275:
- bullet.hideturtle()
- bulletstate = "ready"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement