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()
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}