Quantcast
Viewing latest article 10
Browse Latest Browse All 140

Please Help New to Python

I have to make a simple shooting game for my programming class, and everything else seems to be fine except for my math. Please advise:

import turtle
import tkinter
import random
import math

turtle.screensize(400, 400)

y = random.randint(-206, 206)

turtle.hideturtle()
turtle.tracer(2)

def graph():
turtle.bgcolor("Sky Blue")

# Ground
turtle.setheading(0)
turtle.begin_fill()
turtle.color("Green")

turtle.width()
turtle.penup()
turtle.goto(-400, -250)
turtle.pendown()


for r in range(2):

    turtle.forward(800)
    turtle.right(90)
    turtle.forward(75)
    turtle.right(90)
turtle.end_fill()


#Sun
turtle.penup() 
turtle.goto(-245, 180)
turtle.pendown()


turtle.color("Yellow")
turtle.begin_fill()
turtle.circle(50)
turtle.end_fill()
turtle.goto(-245, 230)
turtle.width(8)
for k in range(13):
    turtle.forward(75)
    turtle.back(75)
    turtle.right(5)
    turtle.right(360/13)

def c2():
turtle.color("Gray")
turtle.width()
turtle.penup()
turtle.goto(-340, -220)
turtle.pendown()
turtle.begin_fill()

turtle.setheading(0)

for q in range(2):
    turtle.forward(120)
    turtle.left(90)
    turtle.forward(25)
    turtle.left(90)
turtle.end_fill()


#Cannon wheel
turtle.setheading(0)
turtle.penup()
turtle.goto(-310, -250)
turtle.pendown()

turtle.color("Brown")
turtle.width(10)
turtle.circle(40)


turtle.penup()
turtle.width(5)
turtle.goto(-310, -210)
turtle.pendown()

for m in range(13):
    turtle.forward(35)
    turtle.back(35)
    turtle.right(5)
    turtle.right(360/13)
turtle.setheading(0)

def target():
turtle.penup()
turtle.goto(260, y)
turtle.pendown()

turtle.color("Red")
turtle.begin_fill()
turtle.circle(30)
turtle.end_fill()

def c1():
#Cannon 1
turtle.tracer(2)
turtle.color("Gray")
turtle.width()
turtle.penup()
turtle.goto(-340, -220)
turtle.pendown()
turtle.begin_fill()

turtle.setheading(degree)

for i in range(2):
    turtle.forward(120)
    turtle.left(90)
    turtle.forward(25)
    turtle.left(90)
turtle.end_fill()


#Cannon wheel
turtle.setheading(0)
turtle.penup()
turtle.goto(-310, -250)
turtle.pendown()

turtle.color("Brown")
turtle.width(10)
turtle.circle(40)


turtle.penup()
turtle.width(5)
turtle.goto(-310, -210)
turtle.pendown()

for a in range(13):
    turtle.forward(35)
    turtle.back(35)
    turtle.right(5)
    turtle.right(360/13)

def ball():
turtle.hideturtle()
turtle.tracer(1)
turtle.shape("circle")
turtle.penup()
turtle.goto(-340, -206)
turtle.pendown()
turtle.showturtle()

turtle.color("black")
turtle.setheading(degree)
turtle.penup()
turtle.hideturtle()
turtle.forward(130)
turtle.pendown()
turtle.showturtle()
for u in range(16):
    turtle.speed("fastest")
    turtle.penup()
    turtle.forward(42)
    turtle.pendown()
    turtle.undo()
turtle.hideturtle()
turtle.setheading(0)

def c3():
turtle.tracer(2)
turtle.setheading(0)
turtle.penup()
turtle.goto(-360, -247)
turtle.pendown()
turtle.color("sky blue")
turtle.begin_fill()
for e in range(4):
turtle.forward(150)
turtle.left(90)
turtle.end_fill()

def hit():
for p in range(1):
turtle.tracer(2)

    turtle.penup()
    turtle.goto(260, y + 30)
    turtle.pendown()

    turtle.pencolor("sky blue")

    for l in range(40):
        k = random.randint(0,100)
        turtle.tracer(2)

        turtle.forward(k)
        turtle.back(k)

        turtle.right(10)
        turtle.right(360/40)

graph()
c2()

while (True):
a1 = 206 + (y - 65)
a2 = 206 + (y + 60)
b = 340 + 260

d1 = math.tan(a1/b)
d2 = math.tan(a2/b)


target()






degree = int(turtle.numinput("Enter a Degree", " Enter a Degree"))
q = math.radians(degree)


c3()
c1()
ball()







if(math.tan(q) > d1) and (math.tan(q) < d2):
    hit()
    answer = turtle.textinput("Nice Shot!", " Would you like to play again? y/n")
    if(answer == "n"):
        break
    else:
        turtle.penup()
        turtle.goto(245, y)
        turtle.pendown()
        turtle.color("sky blue")
        turtle.begin_fill()
        turtle.circle(100)
        turtle.end_fill()
        turtle.penup()
        turtle.setheading(0)
        y = random.randint(-206, 206)


else:
    answer2 = turtle.textinput("Miss! Try Again", "Continue? y/n")
    if(answer2 == "n"):
        break
    turtle.penup()

The cannon ball should count as a hit no matter where it hits the target. If anyone can help it would be greatly appreciated.
Thanks,
Sam


Viewing latest article 10
Browse Latest Browse All 140

Trending Articles