почему я не могу сделать, если d <25:? (Раскрыты) - PullRequest
0 голосов
/ 07 января 2020

Я просто набирал код из книги, но этот код не работал

эта книга сказала, что это нормально, но я не работал

это мой код

import turtle as t
import random
#t.bgcolor("black")

def turn_up():
    t.left(2)
def turn_down():
    t.right(2)
def fire():
    ang = t.heading
    while t.ycor > 0:
        t.fd(15)
        t.rt(5)

d = t.distance(target,0)
t.sety(random.randint(0,100)
(sety)

if d < 25 :
     t.color("green")
     t.write("Awsome!",False,"center",("",10))
else:
    t.color("red")
    t.write("Miss",False,"center",("",10))
    t.color("black")
    t.goto(-200,10)
    t.setheading(ang)


t.up()
t.goto(-300,0)
t.down()
t.goto(300,0)

target = random.randint(50,150)
t.pensize(3)
t.color("green")
t.up()
t.goto(target - 25,2)
t.down()
t.goto(target + 25,2)

t.color("black")
t.pensize(2)
t.up()
t.goto(-200,10)
t.setheading(20)

t.onkeypress(turn_up,"Up")
t.onkeypress(turn_down,"Down")
t.onkeypress(fire,"space")

t.listen

Я получаю эту ошибку:

  File "main.py", line 19
    if d < 25 :
              ^
SyntaxError: invalid syntax

Я просто хотел игру с черепаховой пушкой в ​​ здесь , но она не сработала!

Можете ли вы скажите мне, почему происходит эта ошибка?

1 Ответ

0 голосов
/ 08 января 2020

Специфика c ошибки копирования: отсутствуют круглые скобки:

<     ang = t.heading
---
>     ang = t.heading()

То же самое:

<   while t.ycor > 0:
---
>   while t.ycor() > 0:

Отсутствует скобка и строка для мусора:

< t.sety(random.randint(0,100)
< (sety)
---
> t.sety(random.randint(0, 100))

Ошибка написания:

<   t.write("Awsome!",False,"center",("",10))
---
>   t.write("Awesome!", False, "center", ("", 10))

Пропущенные скобки и возможное пропущенное окончательное утверждение:

< t.listen
---
> t.listen()
> t.mainloop()

Рабочий код с допустимым отступом:

import turtle as t
import random

def turn_up():
    t.left(2)

def turn_down():
    t.right(2)

def fire():
    ang = t.heading()

    while t.ycor() > 0:
        t.fd(15)
        t.rt(5)

    d = t.distance(target, 0)
    t.sety(random.randint(0, 100))

    if d < 25:
        t.color("green")
        t.write("Awesome!", False, "center", ("", 10))
    else:
        t.color("red")
        t.write("Miss", False, "center", ("", 10))
        t.color("black")
        t.goto(-200, 10)
        t.setheading(ang)

t.up()
t.goto(-300, 0)
t.down()
t.goto(300, 0)

target = random.randint(50, 150)
t.pensize(3)
t.color("green")
t.up()
t.goto(target - 25, 2)
t.down()
t.goto(target + 25, 2)

t.color("black")
t.pensize(2)
t.up()
t.goto(-200, 10)
t.setheading(20)

t.onkeypress(turn_up, "Up")
t.onkeypress(turn_down, "Down")
t.onkeypress(fire, "space")

t.listen()
t.mainloop()

Как я мог бы написать этот пример:

from turtle import Screen, Turtle
from random import randrange

def turn_up():
    turtle.left(2)

def turn_down():
    turtle.right(2)

def fire():
    angle = turtle.heading()

    while turtle.ycor() > 2:
        turtle.forward(15)
        turtle.right(5)

    distance = turtle.distance(target, 2)
    turtle.sety(randrange(100))

    if distance < 25:
        turtle.color('green')
        turtle.write("Awesome!", align='center', font=('', 10))
        turtle.setheading(20)
    else:
        turtle.color('red')
        turtle.write("Miss", align='center', font=('', 10))
        turtle.setheading(angle)

    turtle.color('black')
    turtle.goto(-200, 10)

turtle = Turtle()

turtle.penup()
turtle.setx(-300)
turtle.pendown()
turtle.setx(300)

target = randrange(50, 150)

turtle.pensize(3)
turtle.color('green')
turtle.penup()
turtle.goto(target - 25, 2)
turtle.pendown()
turtle.goto(target + 25, 2)

turtle.color('black')
turtle.pensize(2)
turtle.penup()
turtle.goto(-200, 10)
turtle.setheading(20)

screen = Screen()

screen.onkeypress(turn_up, 'Up')
screen.onkeypress(turn_down, 'Down')
screen.onkeypress(fire, 'space')

screen.listen()
screen.mainloop()
...