Skip to content

Instantly share code, notes, and snippets.

@PaulPolaschek
Created November 10, 2018 21:01
Show Gist options
  • Save PaulPolaschek/999a57567a4145db681dab01fb30d56d to your computer and use it in GitHub Desktop.
Save PaulPolaschek/999a57567a4145db681dab01fb30d56d to your computer and use it in GitHub Desktop.
2 player artillery game with python turtle
import turtle
import random
turtle.setup(1400,700)
p1=turtle.Turtle()
p1.pencolor("blue")
p1.pensize(3)
p1.fillcolor("blue")
p2=turtle.Turtle()
p2.clear()
p2.pencolor("red")
p2.pensize(3)
p2.fillcolor("red")
franz=turtle.Turtle()
franz.pencolor("red")
franz.pensize(3)
franz.fillcolor("red")
susi=turtle.Turtle()
susi.pencolor("black")
susi.pensize(3)
susi.fillcolor("black")
susi.penup()
susi.goto(500, 10)
susi.pendown()
def cannon(t,angle=45, length=100, radius=20):
t.pendown()
t.speed(0)
t.shape("classic")
t.begin_fill()
t.left(angle)
t.circle(-20)
t.fd(-40)
t.fd(100)
t.left(90)
t.fd(10)
t.left(90)
t.fd(100)
t.left(90)
t.fd(10)
t.end_fill()
t.left(90)
t.fd(100)
t.left(90)
t.fd(5)
t.right(90)
t.speed(2)
t.shape("circle")
t.penup()
def baloon(t,radius=10):
t.circle(radius)
t.left(90)
t.fd(radius)
#main
#cannon to down left
p1.penup()
p1.goto(-600,-305)
p1.pendown()
cannon(p1)
p2.penup()
p2.goto(-500,-305)
p2.pendown()
cannon(p2)
#x = random.randint(0,300)
#y = random.randint(0,300)
#franz.penup()
#franz.goto(x,y)
#franz.pendown()
#ballon(franz)
#kanone(peter)
#peter.penup()
#peter.goto(200,200)
#peter.pendown()
#ballon(peter)
play = True
runde = 0 #round = 0
gravity = -9.81
while play:
franz.clear()
x = random.randint(0,300)
y = random.randint(0,300)
franz.penup()
franz.goto(x,y)
franz.pendown()
baloon(franz)
for t in (p1, p2):
runde +=1
t.speed(0)
t.penup()
p1.goto(-600,-305)
p2.goto(-500,-305)
t.speed(0)
t.setheading(0)
t.pendown()
if t==p1:
angle = turtle.numinput("player 1, round {}".format(runde), "angle")
speed = turtle.numinput("player 1, round {}".format(runde),"speed")
if t==p2:
angle = turtle.numinput("player 2, round {}".format(runde), "angle")
speed = turtle.numinput("player 2, round {}".format(runde),"speed")
t.clear()
cannon(t, angle)
turtle.pencolor("white")
turtle.fillcolor("white")
turtle.home()
turtle.clear()
turtle.left(angle)
turtle.fd(speed)
dx = turtle.xcor()
dy = turtle.ycor()
turtle.home()
turtle.clear()
resultlist = []
while t.ycor() >= -385:
t.goto(t.xcor()+dx, t.ycor()+dy)
dy += gravity
d = t.distance(franz)
resultlist.append(d)
if t.distance(franz) < 40:
t.write("hit")
#play = False
if t.distance(0,0) > 700:
t.speed(0)
if t.distance(0,0) < 700:
t.speed(2)
susi.penup()
susi.goto(500, runde*10)
susi.pendown()
if t == p1:
susi.write("{} a:{} s:{} best distance {}".format("p1", angle, speed, round(min(resultlist),3)))
else:
susi.write("{} a:{} s:{} best distance {}".format("p2", angle, speed, round(min(resultlist),3)))
turtle.exitonclick()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment