Copy the shortened version:
"""""
FLAPPY TURTLE
v1.1.2 (minified)
By Pugmoog
"""""
m='yellow';l='dark green';k=round;Y='dead ready';X=range;T='italic';S='black';R='start';Q=len;O='menu';N='bold';L='red';E='center';D='Arial';Z=1;a=5;U=12;b=85;c=100;e=70;f=75;n=35;o=70;import random as p,turtle as V,math;from time import sleep as W,time as g;d=V.Turtle();C=V.getscreen();C.setup(500,500);C.clearscreen();C.bgcolor('cyan');C.tracer(0);d.width(50);d.pencolor(l);d.speed(0);d.shape('turtle');d.fillcolor(m);d.up();d.ht();V.hideturtle();H=0;I=50;J=0;K=[];F=[];B=[];A=O;v=False;G=0;P=0;M=0
def q():
B='play';global H,U,A,M
if A==B:H=U
elif A==Y:A=O
elif A==O:A=R
elif A==R:A=B;H=U
def r():
global A,G
if A==O:G=(G+1)%3
C.listen()
C.onkey(q,'space')
C.onkey(r,'h')
def s(height,ybtm,xpos):d.goto(xpos,ybtm);d.pendown();d.goto(xpos,ybtm+height);d.penup()
def h():
global I,J;d.width(50);d.pencolor(l);d.clear();d.fillcolor(m);d.goto(-200,I);d.st();d.stamp();d.ht()
for A in X(Q(B)):s(K[A],F[A],B[A])
d.goto(0,100);d.fillcolor(L);d.pencolor(L);d.write(k(J),font=(D,30,N),align=E);d.goto(-250,-250);d.pencolor('dark orange');d.width(30);d.down();d.setx(250);d.up();d.goto(-250,250);d.down();d.setx(250);d.up();C.update()
def i():
global J,A;A='dead';d.goto(0,100);d.pencolor(L);d.fillcolor(L);d.clear();d.write('GAME OVER',font=(D,30,N),align=E);d.goto(0,50);d.pencolor(S);d.fillcolor(S);d.write('Score: '+str(k(J)),font=(D,30,T),align=E);C.update();W(1);d.goto(0,-100);d.pencolor(L);d.fillcolor(L);d.write('PRESS [SPACE] TO CONTINUE',font=(D,20,N),align=E);B=1;C.update();A=Y
while A==Y:0
d.clear();j()
def t():global I,H,B,F,K,J;H=8;I=50;J=0;K=[];F=[];B=[]
def u():
J='purple';I='green';H='dark blue';F='goldenrod';global A,M,G;A=O;d.goto(-230,100);d.up();B=0
while A==O:
B+=.1;d.fillcolor(F);d.pencolor(F);d.clear();d.goto(0,150+math.sin(B)*10);d.write('FLAPPY TURTLE',font=(D,30,N),align=E);d.fillcolor(H);d.pencolor(H);d.goto(0,0);d.write('PRESS [SPACE] TO PLAY',font=(D,25,N),align=E);d.goto(0,-25);d.write('PRESS [H] TO CHANGE DIFFICULTY',font=(D,15,N),align=E);d.goto(0,-100)
if G==1:d.fillcolor(L);d.pencolor(L);d.write('HARD MODE',font=(D,30,T),align=E)
elif G==0:d.fillcolor(I);d.pencolor(I);d.write('EASY MODE',font=(D,30,T),align=E)
else:d.goto(0,-100);d.fillcolor(J);d.pencolor(J);d.write('EXTREME MODE',font=(D,30,T),align=E)
C.update()
def j():
global I,H,B,F,K,J;global Z,P,M,a,A;global b,c,e,f,w,x;u();t();A=R
if G==0:P=b;M=c
elif G==1:P=e;M=f
elif G==2:P=n;M=o
h();d.goto(-200,0);d.fillcolor(S);d.pencolor(S);d.write('Press [space] to jump',font=(D,20,N));d.update()
while A==R:0
L=0
while True:
L+=1;W(.02);O=g();h()
if L%P==0:T=M;B.append(250);B.append(250);E=p.randint(70,400);K.append(E-T);F.append(-250);K.append(450-E);F.append(-250+T+E)
for C in X(Q(B)):B[C]-=a
C=0
while C<Q(B):
if B[C]<-300:B.pop(C);F.pop(C);K.pop(C);J+=.5
C+=1
if not-240<I<240:i()
for C in X(Q(B)):
if B[C]-25<-200<B[C]+25:
if F[C]-25<I<F[C]+K[C]+25:i()
H-=Z;I+=H;U=g()
if U-O<.015:W(.015-(U-O))
j()
Or copy the commented version:
"""""
FLAPPY TURTLE
v1.1.2
By Pugmoog
"""""
# SETTINGS: %%%%%%%%%%%%
GRAVITY = 1
SPEED = 5
JUMP_HEIGHT = 12
E_PIPE_SPAWN = 85
E_PIPE_SPACE = 100
H_PIPE_SPAWN = 70
H_PIPE_SPACE = 75
X_PIPE_SPAWN = 35
X_PIPE_SPACE = 70
# %%%%%%%%%%%%%%%%%%%%%%%%%%
'''------------------------------------------------------------------------------------------------'''
'''------------------------------------------------------------------------------------------------'''
import random
import turtle
import math
from time import sleep
from time import time
d = turtle.Turtle()
screen = turtle.getscreen()
screen.setup(500, 500)
screen.clearscreen()
screen.bgcolor("cyan")
screen.tracer(0)
d.width(50)
d.pencolor("dark green")
d.speed(0)
d.shape("turtle")
d.fillcolor("yellow")
d.up()
d.ht()
turtle.hideturtle()
y_spd = 0
y_pos = 50
score = 0
pipe_height = []
pipe_btm = []
pipe_x = []
state = "menu"
_dead = False
_hard = 0
PIPE_SPAWN = 0
PIPE_SPACE = 0
'''------------------------------------------------------------------------------------------------'''
'''------------------------------------------------------------------------------------------------'''
def spacepressed():
global y_spd, JUMP_HEIGHT, state, PIPE_SPACE
if state == "play":
y_spd = JUMP_HEIGHT
elif state == "dead ready":
state = "menu"
elif state == "menu":
state = "start"
elif state == "start":
state = "play"
y_spd = JUMP_HEIGHT
def hpressed():
global state, _hard
if state == "menu":
_hard = (_hard + 1) % 3
screen.listen()
screen.onkey(spacepressed, "space")
screen.onkey(hpressed, "h")
def drawpipe(height, ybtm, xpos):
d.goto(xpos, ybtm)
d.pendown()
d.goto(xpos, ybtm + height)
d.penup()
def draw():
global y_pos, score
d.width(50)
d.pencolor("dark green")
d.clear()
d.fillcolor("yellow")
d.goto(-200, y_pos)
d.st()
d.stamp()
d.ht()
for i in range(len(pipe_x)):
drawpipe(pipe_height[i], pipe_btm[i], pipe_x[i])
d.goto(0, 100)
d.fillcolor("red")
d.pencolor("red")
d.write(round(score), font=("Arial", 30, "bold"), align="center")
d.goto(-250, -250)
d.pencolor("dark orange")
d.width(30)
d.down()
d.setx(250)
d.up()
d.goto(-250, 250)
d.down()
d.setx(250)
d.up()
screen.update()
def die():
global score, state
state = "dead"
d.goto(0, 100)
d.pencolor("red")
d.fillcolor("red")
d.clear()
d.write("GAME OVER", font=("Arial", 30, "bold"), align="center")
d.goto(0, 50)
d.pencolor("black")
d.fillcolor("black")
d.write("Score: " + str(round(score)), font=("Arial", 30, "italic"), align="center")
screen.update()
sleep(1)
d.goto(0, -100)
d.pencolor("red")
d.fillcolor("red")
d.write("PRESS [SPACE] TO CONTINUE", font=("Arial", 20, "bold"), align="center")
_dead = 1
screen.update()
state = "dead ready"
while state == "dead ready":
pass
d.clear()
start()
def setup():
global y_pos, y_spd, pipe_x, pipe_btm, pipe_height, score
y_spd = 8
y_pos = 50
score = 0
pipe_height = []
pipe_btm = []
pipe_x = []
def title():
global state, PIPE_SPACE, _hard
state = "menu"
d.goto(-230, 100)
d.up()
tick = 0
while state == "menu":
tick += 0.1
d.fillcolor("goldenrod")
d.pencolor("goldenrod")
d.clear()
d.goto(0, 150+(math.sin(tick)*10))
d.write("FLAPPY TURTLE", font=("Arial", 30, "bold"), align="center")
d.fillcolor("dark blue")
d.pencolor("dark blue")
d.goto(0, 0)
d.write("PRESS [SPACE] TO PLAY", font=("Arial", 25, "bold"), align="center")
d.goto(0, -25)
d.write("PRESS [H] TO CHANGE DIFFICULTY", font=("Arial", 15, "bold"), align="center")
d.goto(0, -100)
if _hard == 1:
d.fillcolor("red")
d.pencolor("red")
d.write("HARD MODE", font=("Arial", 30, "italic"), align="center")
elif _hard == 0:
d.fillcolor("green")
d.pencolor("green")
d.write("EASY MODE", font=("Arial", 30, "italic"), align="center")
else:
d.goto(0, -100)
d.fillcolor("purple")
d.pencolor("purple")
d.write("EXTREME MODE", font=("Arial", 30, "italic"), align="center")
screen.update()
'''------------------------------------------------------------------------------------------------'''
'''------------------------------------------------------------------------------------------------'''
def start():
global y_pos, y_spd, pipe_x, pipe_btm, pipe_height, score
global GRAVITY, PIPE_SPAWN, PIPE_SPACE, SPEED, state
global E_PIPE_SPAWN, E_PIPE_SPACE, H_PIPE_SPAWN, H_PIPE_SPACE, I_PIPE_SPAWN, I_PIPE_SPACE
title()
setup()
state = "start"
if _hard == 0:
PIPE_SPAWN = E_PIPE_SPAWN
PIPE_SPACE = E_PIPE_SPACE
elif _hard == 1:
PIPE_SPAWN = H_PIPE_SPAWN
PIPE_SPACE = H_PIPE_SPACE
elif _hard == 2:
PIPE_SPAWN = X_PIPE_SPAWN
PIPE_SPACE = X_PIPE_SPACE
draw()
d.goto(-200, 0)
d.fillcolor("black")
d.pencolor("black")
d.write("Press [space] to jump", font=("Arial", 20, "bold"))
d.update()
while state == "start":
pass
# main loop
tick = 0
while True:
tick += 1
sleep(0.02)
time_before = time()
# draw
draw()
# add new pipes
if tick % PIPE_SPAWN == 0:
space = PIPE_SPACE
pipe_x.append(250)
pipe_x.append(250)
middle = random.randint(70, 400)
pipe_height.append(middle - space)
pipe_btm.append(-250)
pipe_height.append(450 - middle)
pipe_btm.append(-250 + space + middle)
# update pipes
for i in range(len(pipe_x)):
pipe_x[i] -= SPEED
i = 0
while i < len(pipe_x):
if pipe_x[i] < -300:
pipe_x.pop(i)
pipe_btm.pop(i)
pipe_height.pop(i)
score += 0.5
i += 1
# collision
if not (-240 < y_pos < 240):
die()
for i in range(len(pipe_x)):
if pipe_x[i] - 25 < -200 < pipe_x[i] + 25:
if pipe_btm[i] - 25 < y_pos < pipe_btm[i] + pipe_height[i] + 25:
die()
# physics
y_spd -= GRAVITY
y_pos += y_spd
# slow down if running too fast
time_after = time()
if time_after - time_before < 0.015:
sleep(0.015 - (time_after - time_before))
'''------------------------------------------------------------------------------------------------'''
'''------------------------------------------------------------------------------------------------'''
start()