Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Space Invaders
- #Sound (Mac0SX Only)
- from turtle import *
- import math
- import random
- lstEmail = list()
- lst = list()
- idCount = 0
- bulletstate = "ready"
- class game:
- def __init__(self,name,score):
- self.name = name
- self.score = score
- self.record_name = []
- self.record_score = []
- def main(self):
- xit = True
- while xit is True:
- print("\nWelcome to SPACE GUARDIAN")
- print("Press 1 to Play\nPress 2 to Highscore\nPress 3 to Save the Game\n")
- choice = input("\nEnter Choice: ")
- if choice == "1":
- print("\n")
- ui.Game()
- elif choice == "2":
- print("\n")
- ui.rank()
- elif choice == "3":
- print("\n")
- ui.record("")
- elif choice == "4":
- print("\nThanks for playing!")
- xit = False
- def record(self,name):
- self.name = input("Enter Username: ")
- print("Name: %s"%self.name)
- print("Score: %d"%self.score)
- self.record_name.append(self.name)
- self.record_score.append(self.score)
- self.score = 0
- ui.main()
- def rank(self):
- print("~~~ H I G H S C O R E ~~~")
- for i in range(len(self.record_name)):
- print("Name: " + self.record_name[i])
- print("Score: %d" %self.record_score[i])
- print("\n")
- ui.main()
- bulletstate = "ready"
- def Game(self):
- #Set up screen
- wn = Screen()
- wn.bgcolor("black")
- wn.title("Space Invaders")
- wn.bgpic("space_invaders_background.gif")
- #Register shapes
- wn.addshape("invader.gif")
- wn.addshape("player (2).gif")
- wn.addshape("knife.gif")
- numofenemies =5
- enemies =[]
- print("-- 1 Easy\n-- 2 Medium\n-- 3 Hard\n ")
- cha = input("Enter Choice: ")
- if cha =="1":
- for i in range(10):
- enemies.append(Turtle())
- enemyspeed = 10
- elif cha =="2":
- for i in range(30):
- enemies.append(Turtle())
- enemyspeed = 15
- elif cha =="3":
- for i in range(50):
- enemies.append(Turtle())
- enemyspeed = 15
- #Draw border
- borderpen = Turtle()
- borderpen.speed(0)
- borderpen.color("white")
- borderpen.penup()
- borderpen.setposition(-300,-300)
- borderpen.pendown()
- borderpen.pensize(5)
- for side in range(4):
- borderpen.fd(600)
- borderpen.lt(90)
- borderpen.hideturtle()
- self.score= 0
- #display score
- scorepen = Turtle()
- scorepen.speed(0)
- scorepen.color("white")
- scorepen.penup()
- scorepen.setposition(-290,280)
- scorestring = "Score: %d" %self.score
- scorepen.write(scorestring,False,align="Left",font=("Arial", 14, "normal"))
- scorepen.hideturtle()
- #Create player
- player = Turtle()
- player.color("blue")
- player.shape("player (2).gif")
- player.penup()
- player.speed(0)
- player.setposition(0, -250)
- player.setheading(90)
- playerspeed = 25
- #Add enemies to list
- for goal in enemies:
- goal.shape("invader.gif")
- goal.penup()
- goal.speed(0)
- x = random.randint(-200,200)
- y = random.randint(100,250)
- goal.setposition(x,y)
- #Bullet
- bullet = Turtle()
- bullet.color("yellow")
- bullet.shape("circle")
- bullet.penup()
- bullet.speed(0)
- bullet.setheading(90)
- bullet.shapesize(0.5,0.5)
- bullet.hideturtle()
- bulletspeed = 90
- #bulletstate
- #ready = to fire
- #fire = firing
- bulletstate = "ready"
- #Move player left to right
- 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 firebullet():
- #global bulletstate
- bulletstate = "ready"
- if bulletstate == "ready":
- bulletstate = "fire"
- #move bullet upward
- 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
- #Keyboard bindings
- wn.listen()
- wn.onkey(moveleft, "Left")
- wn.onkey(moveright, "Right")
- wn.onkey(firebullet, "space")
- #game loop
- while True:
- for enemy in enemies:
- #move enemy
- x= enemy.xcor()
- x += enemyspeed
- enemy.setx(x)
- #Boundary check
- if enemy.xcor() > 300 or enemy.xcor() < -300:
- print("GAME OVER")
- t1 = Pen()
- t1.pencolor("red")
- t1.hideturtle()
- t1.penup()
- t1.write("GAME OVER", align = "center", font=("Verdana", 45, "bold"))
- t1.setposition(0,-350)
- t1.penup()
- if enemy.ycor() > 300 or enemy.ycor() < -300:
- print("Game OVER")
- t1 = Pen()
- t1.pencolor("red")
- t1.hideturtle()
- t1.penup()
- t1.write("GAME OVER", align = "center", font=("Verdana", 45, "bold"))
- t1.setposition(0,-350)
- t1.penup()
- ui.repeat()
- #Move enemy back and down
- if enemy.xcor() > 280:
- #enemy down
- for e in enemies:
- y = e.ycor()
- y -= 40
- e.sety(y)
- #change direction
- enemyspeed *= -1
- if enemy.xcor() < - 280:
- #enemy down
- for e in enemies:
- y = e.ycor()
- y -= 40
- e.sety(y)
- #change direction
- enemyspeed *= -1
- #check collision between bullet and enemy
- if isCollision(bullet, enemy):
- #reset bullet
- bullet.hideturtle()
- bulletstate = "ready"
- bullet.setposition(0,-400)
- #reset enemy
- x = random.randint(-200,200)
- y = random.randint(100,250)
- enemy.setposition(x,y)
- #Update
- self.score += 10
- scorestring = "Score: %d" %self.score
- scorepen.clear()
- scorepen.write(scorestring, False, align="left", font=("Arial", 14, "normal"))
- print("Your score is", self.score)
- #lst.append(Inorder)
- if isCollision(player,enemy):
- player.hideturtle()
- enemy.hideturtle()
- pen=Turtle()
- pen.hideturtle()
- pen.speed(0)
- pen.color("red")
- pen.penup()
- pen.goto(-200,0)
- pen.write("GAME OVER", font = ("Verdana 45 bold"))
- pen.clear()
- ui.repeat()
- # move bullet
- if bulletstate == "fire":
- y = bullet.ycor()
- y += bulletspeed
- bullet.sety(y)
- #Check bullet disapperance
- if bullet.ycor() > 275:
- bullet.hideturtle()
- bulletstate = "ready"
- delay = raw_input("Press enter to finish")
- def repeat(self):
- again = input("\n WANNA PLAY AGAIN\nY - YES\nN - NO\n")
- if again == 'Y':
- ui.main()
- elif again == 'N':
- quit()
- ui = game("User", 0)
- ui.main()
Advertisement
Add Comment
Please, Sign In to add comment