Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from turtle import *
- import random
- import time
- pipes = []
- scorePipes = []
- score = 0
- spacing = 200
- speed = 10
- gravity = 7
- lift = -50
- velocity = 0
- window = Screen()
- def setupWindow():
- pipes = []
- width = 1000
- height = 750
- window.clearscreen()
- window.setup(width, height)
- window.tracer(0) # Turn off automatic window updates
- window.bgcolor("#ffffff")
- window.title("Flappy Bird")
- window.register_shape("pipe_up.gif")
- window.register_shape("pipe_down.gif")
- window.register_shape("bird.gif")
- window.register_shape("floor.gif")
- window.register_shape("bg.gif")
- setupWindow()
- bg = Turtle()
- bg.speed(0)
- bg.penup()
- bg.shape("bg.gif")
- bg.goto(0, 0)
- scoreTurtle = Turtle()
- scoreTurtle.speed(0)
- scoreTurtle.penup()
- scoreTurtle.hideturtle()
- scoreTurtle.goto(-475, 300)
- bird = Turtle()
- bird.speed(0)
- bird.penup()
- bird.shape("bird.gif")
- bird.goto(-400, 0)
- for i in range(3):
- for j in range(2):
- turtle = Turtle()
- if(j == 0):
- turtle.shape("pipe_down.gif")
- else:
- turtle.shape("pipe_up.gif")
- turtle.penup()
- turtle.turtlesize(100, 5);
- turtle.hideturtle()
- if(j == 1):
- pipes[i] = (pipes[i], turtle)
- scorePipes[i] = (scorePipes[i], turtle)
- else:
- pipes.append(turtle)
- scorePipes.append(turtle)
- floor1 = Turtle()
- floor2 = Turtle()
- floor1.speed(0)
- floor2.speed(0)
- floor1.penup()
- floor2.penup()
- floor1.shape("floor.gif")
- floor2.shape("floor.gif")
- floor1.goto(-500, -400)
- floor2.goto(500, -400)
- def newPipe(pipe):
- y = random.randint(880, 1290)
- x = 450 if pipe == pipes[0] else 0 if pipe == pipes[1] else 900
- pipe[0].goto(x, y)
- pipe[0].showturtle()
- pipe[1].goto(x, y - spacing - 2000)
- pipe[1].showturtle()
- newPipe(pipes[0])
- newPipe(pipes[1])
- newPipe(pipes[2])
- def jump():
- global velocity
- if(velocity > 3):
- velocity = 3
- velocity += lift
- def checkPipes():
- rightPipe = 0
- leftPipe = 0
- for p in pipes:
- if(p[0].xcor() > pipes[rightPipe][0].xcor()):
- rightPipe = pipes.index(p)
- if(p[0].xcor() < pipes[leftPipe][0].xcor()):
- leftPipe = pipes.index(p)
- if pipes[leftPipe] in scorePipes and scorePipes[scorePipes.index(pipes[leftPipe])][0].xcor() < -350:
- global score
- score += 1
- scorePipes.remove(scorePipes[scorePipes.index(pipes[leftPipe])])
- for p in pipes:
- if p[0].xcor() < -552:
- y = random.randint(880, 1290)
- p[0].setx(pipes[rightPipe][0].xcor() + 450)
- p[1].setx(pipes[rightPipe][0].xcor() + 450)
- p[0].sety(y)
- p[1].sety(y - spacing - 2000)
- scorePipes.append(p)
- if pipes[leftPipe][0].xcor() <= -330 and pipes[leftPipe][0].xcor() >= -500 and ((bird.ycor() > pipes[leftPipe][0].ycor() - 1000 and bird.ycor() > pipes[leftPipe][0].ycor() - 1020) or (bird.ycor() < pipes[leftPipe][1].ycor() + 1000 and bird.ycor() < pipes[leftPipe][1].ycor() + 1020)):
- reset()
- def reset():
- window.clear()
- setupWindow()
- global pipes
- global scorePipes
- global bird
- global score
- global velocity
- global floor1
- global floor2
- global bg
- global scoreTurtle
- bg = Turtle()
- bg.speed(0)
- bg.penup()
- bg.shape("bg.gif")
- bg.goto(0, 0)
- scoreTurtle = Turtle()
- scoreTurtle.speed(0)
- scoreTurtle.penup()
- scoreTurtle.hideturtle()
- scoreTurtle.goto(-475, 300)
- velocity = 0
- pipes = []
- scorePipes = []
- bird = Turtle()
- bird.speed(0)
- bird.penup()
- bird.shape("bird.gif")
- bird.goto(-400, 0)
- bird.goto(-400, 0)
- for i in range(3):
- for j in range(2):
- turtle = Turtle()
- if(j == 0):
- turtle.shape("pipe_down.gif")
- else:
- turtle.shape("pipe_up.gif")
- turtle.penup()
- turtle.turtlesize(100, 5);
- turtle.hideturtle()
- if(j == 1):
- pipes[i] = (pipes[i], turtle)
- scorePipes[i] = (scorePipes[i], turtle)
- else:
- pipes.append(turtle)
- scorePipes.append(turtle)
- newPipe(pipes[0])
- newPipe(pipes[1])
- newPipe(pipes[2])
- score = 0
- floor1 = Turtle()
- floor2 = Turtle()
- floor1.speed(0)
- floor2.speed(0)
- floor1.penup()
- floor2.penup()
- floor1.shape("floor.gif")
- floor2.shape("floor.gif")
- floor1.goto(-500, -400)
- floor2.goto(500, -400)
- window.listen()
- window.onkeypress(jump, "space")
- time.sleep(2)
- def updateScore():
- scoreTurtle.clear()
- scoreTurtle.write(score, font=("Arial", 50, "normal"))
- window.listen()
- window.onkeypress(jump, "space")
- while True:
- window.update()
- velocity += gravity
- bird.sety(bird.ycor() - velocity)
- for p in pipes:
- p[0].setx(p[0].xcor() - speed)
- p[1].setx(p[1].xcor() - speed)
- #floor1.setx(floor1.xcor() - speed)
- #floor2.setx(floor2.xcor() - speed)
- if floor1.xcor() < -1000:
- floor1.setx(floor2.xcor() + 1000)
- if floor2.xcor() < -1000:
- floor2.setx(floor2.xcor() + 1000)
- checkPipes()
- updateScore()
- if bird.ycor() < -275:
- reset()
- if velocity < -15:
- velocity = -15
- time.sleep(0.05)
- window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement