Когда я вхожу в петлю, они не будут работать - PullRequest
0 голосов
/ 10 ноября 2019

Видеоролик об учебнике на необходимом упражнении

Я пытался следовать руководству по черепахе для игры в понг. Это действительно просто, и я понимаю это полностью. Единственное, что терпит неудачу, это движение мяча, есть определение мяча, а затем цикл, когда я попадаю в цикл, я пишу тот же код, и мяч не движется

Кажется, что яя играю с персонажем, которого я не знаю, я просто спрашиваю, может ли кто-нибудь помочь мне взглянуть на него. Я обрежу все объекты и оставлю только шарик

Я скачал .py учебника, выполнил его, и он отлично работает. Я скопировал определенные функции, и он не будет работать.

import turtle 
import os

#Aplication and screen setting
ventana = turtle.Screen()
ventana.title("A little pong game")
ventana.bgcolor("black")
ventana.setup(width=800, height=600)
ventana.tracer(0)

#This is the ball definition"
# pelota
pelota = turtle.Turtle()
pelota.speed(0)
pelota.shape("circle")
pelota.color("white")
pelota.penup()
pelota.goto(0, 0)
pelota.dx = 2
pelota.dy = 2


while True:
    ventana.update()

    # Move the ball (this should get the ball moving)
    pelota.setx(pelota.xcor() + pelota.dx)  #-> This isn't working for me
    pelota.sety(pelota.ycor() + pelota.dy)  #-> This isn't working for me

Это полный рабочий код (тот, который работает, если я копирую пасту)

import turtle
import os

wn = turtle.Screen()
wn.title("Pong")
wn.bgcolor("black")
wn.setup(width=800, height=600)
wn.tracer(0)


# Ball
ball = turtle.Turtle()
ball.speed(0)
ball.shape("circle")
ball.color("white")
ball.penup()
ball.goto(0, 0)
ball.dx = 0.2
ball.dy = 0.2

# Main game loop
while True:
    wn.update()

    # Move the ball
    ball.setx(ball.xcor() + ball.dx)
    ball.sety(ball.ycor() + ball.dy)

Я ожидаю, что шар будет двигаться, но в моем коде он не начнет двигаться.

1 Ответ

0 голосов
/ 10 ноября 2019

Спасибо cdlane за тестирование кода! Это заставило меня отладить другую вещь, и я нашел это. Это было так:

if pelota.xcor() > 390:
    pelota.goto(0, 0)
    pelota.dx *= -1

if pelota.xcor() > -390: # This little mistake was reseting the ball and I thought it wasn't moving at all
    pelota.goto(0, 0)
    pelota.dx *= -1
...