Главное меню в черепахе - PullRequest
0 голосов
/ 14 апреля 2020

Может кто-нибудь объяснить мне, почему программа выдает ответ «Остальное» независимо от того, где вы нажимаете, и почему она повторяется до тех пор, пока не произойдет сбой? У меня нет для l oop или пока l oop, поэтому я не понимаю. Это могут быть функции onscreenclick () или listen ()? также я знаю о том, что часть меню находится за кадром. Я планировал исправить это после проверки, насколько хорошо это работает.

import turtle

pen = turtle.Turtle()
pen.speed(0)

#Creating Menu option buttons
def button(length):
    for i in range(4):
        pen.forward(length)
        pen.left(90)

def column(n, length):
    pen.left(270)
    for i in range(n):
        button(length)
        pen.forward(length)
    pen.penup()
    pen.left(90)
    pen.forward(n * length)
    pen.left(180)
    pen.pendown()

column(5, 100)

#Menu Options
pen.penup()
pen.goto(8, -46)
pen.write("START GAME!", font=("Arial",12,"normal"))

pen.penup()
pen.goto(6, -145)
pen.write("RULES", font=("Arial",12,"normal"))

pen.penup()
pen.goto(3, -248)
pen.write("HIGH SCORE", font=("Arial",12,"normal"))

pen.penup()
pen.goto(4, -343)
pen.write("FAQ", font=("Arial",12,"normal"))

pen.penup()
pen.goto(3, -450)
pen.write("QUIT GAME", font=("Arial",12,"normal"))

#Making options clickable
def btnclick(x,y):
    if x > 0 and x < 101 and y > 0 and y < -101:
        print("Start Game")
        print(x, y)
        turtle.clearscreen()
    elif x > 0 and x < 101 and y > 101 and y < -201:
        print("Rules")
        print(x, y)
        turtle.clearscreen()
    elif x > 0 and x < 101 and y > 201 and y < -301:
        print("Highscore")
        print(x, y)
        turtle.clearscreen()
    elif x > 0 and x < 101 and y > 301 and y < -401:
        print("Hi")
        print(x, y)
        turtle.clearscreen()
    elif x > 0 and x < 101 and y > 401 and y < -501:
        print("Hi")
        print(x, y)
        turtle.clearscreen()
    elif x > 0 and x < 101 and y > 501 and y < -601:
        print("Hi")
        print(x, y)
        turtle.clearscreen()
    else:
        print("Click One Of The Options!")
        print(x, y)
        btnclick(x, y)

turtle.onscreenclick(btnclick, 1)
turtle.listen()

turtle.done()

1 Ответ

2 голосов
/ 14 апреля 2020

Вы забыли минус, и вам нужно заменить < на > в

y > 0 and y < -101:

y > 101 and y < -201:

y > 201 and y < -301:

y > 301 and y < -401:

y > 401 and y < -501:

y > 501 and y < -601:

Оно должно быть ie.

y < 0 and y > -101

y < -101 and y > -201

y < -201 and y > -301

# etc.

или короче

0 > y > -101

-101 > y > -201

-201 > y > -301

# etc.

РЕДАКТИРОВАТЬ: Может быть, вам следует использовать >= в некоторых местах, потому что старый код не работает для y == -101, y == -201, et c.

0 > y >= -101

-101 > y >= -201

-201 > y >= -301

etc.

Полная функция

def btnclick(x,y):
    if 0 < x < 101 and 0 > y > -101:
        print("Start Game")
        print(x, y)
        turtle.clearscreen()
    elif 0 < x < 101 and -101 > y > -201:
        print("Rules")
        print(x, y)
        turtle.clearscreen()
    elif 0 < x < 101 and -201 > y > -301:
        print("Highscore")
        print(x, y)
        turtle.clearscreen()
    elif 0 < x < 101 and -301 > y > -401:
        print("Hi")
        print(x, y)
        turtle.clearscreen()
    elif 0 < x < 101 and -401 > y > -501:
        print("Hi")
        print(x, y)
        turtle.clearscreen()
    elif 0 < x < 101 and -501 > y > -601:
        print("Hi")
        print(x, y)
        turtle.clearscreen()
    else:
        print("Click One Of The Options!")
        print(x, y)
        btnclick(x, y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...