import turtle import random score = 0 high_score = 0 # Setting the window window = turtle.Screen() window.title("Space War") window.bgcolor("white") window.setup(width=600, height=600) window.tracer(3) # Player player = turtle.Turtle() player.speed(0) player.shape("triangle") player.color("brown") player.penup() player.goto(0, 0) #CREATE THE BULLET bullet = turtle.Turtle() bullet.shape("triangle") bullet.penup() bullet.speed(0) bullet.setheading(player.heading()) bullet.shapesize(0.2, 0.8) bullet.hideturtle() bulletspeed = 20 bulletstate = "ready" # pen Pen = turtle.Turtle() Pen.speed(0) Pen.color("black") Pen.penup() Pen.goto(0, 250) Pen.hideturtle() Pen.clear() Pen.write("Score: {} High Score: {}".format(score, high_score), align="center", font=("courier", 24, "normal")) # Foods foods = [] # Food for index in range(4): food = turtle.Turtle() food.speed(0) food.shape("circle") food.color("green") food.penup() foods.append(food) food.setposition(random.randint(-250, 250), random.randint(-250, 250)) # Pen pen = turtle.Turtle() pen.penup() pen.setposition(-280, -280) pen.pendown() pen.pensize(1) for x in range(4): pen.forward(560) pen.left(90) pen.hideturtle() # Variable speed speed = 1 # Movement function def move_right(): player.right(45) def move_left(): player.left(45) def fire_bullet(): #DECLARE BULLETSTATE AS GLOBAL IF IT NEEDS CHANGES global bulletstate if bulletstate == "ready": bulletstate = "fire" #MOVE BULLET TO JUST ABOVE THE PLAYER x = player.xcor() y = player.ycor() + 10 bullet.setposition(x, y) bullet.showturtle() def increase_speed(): player.up() global speed speed += 1 def decrease_speed(): player.down() global speed speed -= 1 # Keyboard binding window.listen() window.onkeypress(move_right, "Right") window.onkeypress(move_left, "Left") window.onkeypress(increase_speed, "Up") window.onkeypress(decrease_speed, "Down") window.onkeypress(fire_bullet, "space") # main game loop while True: window.update() # Default player movement player.forward(speed) # player boundary checking if player.xcor() > 260 or player.xcor() < -260 or player.ycor() > 260 or player.ycor() < -260: player.right(180) #MOVE BULLET if bulletstate == "fire": y = bullet.ycor() y += bulletspeed bullet.sety(y) #CHECK IF BULLET HAS GONE TO TOP if bullet.ycor() > 275: bullet.hideturtle() bulletstate = "ready" # Move food for food in foods: food.forward(1) # Foods boundary checking if food.xcor() > 260 or food.xcor() < -260 or food.ycor() > 260 or food.ycor() < -260: food.right(180) # Check collision between player and food if food.distance(player) < 20: x = random.randint(-260, 260) y = random.randint(-260, 260) food.goto(x, y) window.mainloop()