制作游戏时出错

发布于 2025-01-18 09:52:14 字数 2145 浏览 0 评论 0原文

有人知道这些错误意味着什么?

 import turtle
 
 sc = turtle.Screen()
 sc.setup(width=1000, height=1000)
 sc.title("pong")
 sc.bgcolor("black")
 sc.tracer(0)
 
 def paddle_a():
     paddle = turtle.Turtle()
     paddle.penup()
     paddle.color("white")
     paddle.shape("square")
     paddle.shapesize(stretch_wid=8.5, stretch_len=1)
     paddle.goto(450, 0)
     paddle.speed(0)
   
 def paddle_b():
     paddle = turtle.Turtle()
     paddle.penup()
     paddle.color("white")
     paddle.shape("square")
     paddle.shapesize(stretch_wid=8.5, stretch_len=1)
     paddle.goto(-450, 0)
     paddle.speed(0)
 
 def ball_ball():
     ball = turtle.Turtle()
     ball.penup()
     ball.color("white")
     ball.shape("circle")
     ball.shapesize(stretch_wid=1.5, stretch_len=1.5)
     ball.goto(0, 0)
     ball.speed(0)
     ball.dx = 5
     ball.dy =- 5
 
 def paddleup():
     y = paddle_a.ycore()
     y =+ 20
     paddle_a.sety(y)
 
 
 sc.listen()
 sc.onkeypress(paddleup, "w")
 
 paddle_a()
 paddle_b()
 ball_ball()
 
 while True:
     sc.update()
Exception in Tkinter callback
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 1885, in __call__
    return self.func(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/turtle.py", line 702, in eventfun
    fun()
  File "/Users//Python Projects/poooong.py", line 39, in paddleup
    y = paddle_a.ycore()
AttributeError: 'function' object has no attribute 'ycore'
Traceback (most recent call last):
  File "/Users//Python Projects/poooong.py", line 52, in <module>
    sc.update()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/turtle.py", line 1304, in update
    t._update_data()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/turtle.py", line 2647, in _update_data
    self.screen._incrementudc()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/turtle.py", line 1293, in _incrementudc
    raise Terminator
turtle.Terminator

香港专业教育学院试图在没有运气的情况下重新安装乌龟

anyone knows what these errors means?

 import turtle
 
 sc = turtle.Screen()
 sc.setup(width=1000, height=1000)
 sc.title("pong")
 sc.bgcolor("black")
 sc.tracer(0)
 
 def paddle_a():
     paddle = turtle.Turtle()
     paddle.penup()
     paddle.color("white")
     paddle.shape("square")
     paddle.shapesize(stretch_wid=8.5, stretch_len=1)
     paddle.goto(450, 0)
     paddle.speed(0)
   
 def paddle_b():
     paddle = turtle.Turtle()
     paddle.penup()
     paddle.color("white")
     paddle.shape("square")
     paddle.shapesize(stretch_wid=8.5, stretch_len=1)
     paddle.goto(-450, 0)
     paddle.speed(0)
 
 def ball_ball():
     ball = turtle.Turtle()
     ball.penup()
     ball.color("white")
     ball.shape("circle")
     ball.shapesize(stretch_wid=1.5, stretch_len=1.5)
     ball.goto(0, 0)
     ball.speed(0)
     ball.dx = 5
     ball.dy =- 5
 
 def paddleup():
     y = paddle_a.ycore()
     y =+ 20
     paddle_a.sety(y)
 
 
 sc.listen()
 sc.onkeypress(paddleup, "w")
 
 paddle_a()
 paddle_b()
 ball_ball()
 
 while True:
     sc.update()
Exception in Tkinter callback
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 1885, in __call__
    return self.func(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/turtle.py", line 702, in eventfun
    fun()
  File "/Users//Python Projects/poooong.py", line 39, in paddleup
    y = paddle_a.ycore()
AttributeError: 'function' object has no attribute 'ycore'
Traceback (most recent call last):
  File "/Users//Python Projects/poooong.py", line 52, in <module>
    sc.update()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/turtle.py", line 1304, in update
    t._update_data()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/turtle.py", line 2647, in _update_data
    self.screen._incrementudc()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/turtle.py", line 1293, in _incrementudc
    raise Terminator
turtle.Terminator

ive tryed to reinstall turtle with no luck

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

榆西 2025-01-25 09:52:14

您的代码有很多问题。最明显的是,您要做的工作来创建两个桨和球,但切勿将它们分配给paddle_apaddle_bball。除了ycore @millertime指出的问题,另一个问题是您使用类似的操作员:

ball.dy =- 5
y =+ 20

哪些是错误或令人困惑的,应该是:

ball.dy = -5
y += 20

这是我的代码返还,解决这些问题和其他问题:

from turtle import Screen, Turtle

def make_paddle(side):
    paddle = Turtle()
    paddle.penup()
    paddle.color("white")
    paddle.shape("square")
    paddle.shapesize(stretch_len=8.5)
    paddle.setheading(90)  # so we can use forward() and backward()
    paddle.setx(450 * side)
    paddle.speed('fastest')

    return paddle

def make_ball():
    ball = Turtle()
    ball.penup()
    ball.color("white")
    ball.shape("circle")
    ball.shapesize(1.5)
    ball.speed('fastest')

    ball.dx = 5  # user defined properties
    ball.dy = -5

    return ball

def paddle_a_up():
    paddle_a.forward(20)
    screen.update()

def paddle_a_down():
    paddle_a.backward(20)
    screen.update()

screen = Screen()
screen.setup(width=1000, height=1000)
screen.bgcolor("black")
screen.title("pong")
screen.tracer(0)

paddle_a = make_paddle(-1)
paddle_b = make_paddle(1)
ball = make_ball()

screen.onkeypress(paddle_a_up, "w")
screen.onkeypress(paddle_a_down, "s")
screen.listen()

screen.update()
screen.mainloop()

最后,您使用了<代码>虽然:不属于像乌龟这样的事件驱动环境。最终,您将需要使用屏幕ontimer()事件以保持球的发挥作用。

There are a number of problems with your code. The most obvious is you do the work to create the two paddles and ball but never assign them to paddle_a, paddle_b and ball. Besides the ycore issue noted by @MillerTime, another problem is you use operators like these:

ball.dy =- 5
y =+ 20

which are errors or confusing and should be:

ball.dy = -5
y += 20

Here's my rework of your code addressing these and other issues:

from turtle import Screen, Turtle

def make_paddle(side):
    paddle = Turtle()
    paddle.penup()
    paddle.color("white")
    paddle.shape("square")
    paddle.shapesize(stretch_len=8.5)
    paddle.setheading(90)  # so we can use forward() and backward()
    paddle.setx(450 * side)
    paddle.speed('fastest')

    return paddle

def make_ball():
    ball = Turtle()
    ball.penup()
    ball.color("white")
    ball.shape("circle")
    ball.shapesize(1.5)
    ball.speed('fastest')

    ball.dx = 5  # user defined properties
    ball.dy = -5

    return ball

def paddle_a_up():
    paddle_a.forward(20)
    screen.update()

def paddle_a_down():
    paddle_a.backward(20)
    screen.update()

screen = Screen()
screen.setup(width=1000, height=1000)
screen.bgcolor("black")
screen.title("pong")
screen.tracer(0)

paddle_a = make_paddle(-1)
paddle_b = make_paddle(1)
ball = make_ball()

screen.onkeypress(paddle_a_up, "w")
screen.onkeypress(paddle_a_down, "s")
screen.listen()

screen.update()
screen.mainloop()

Finally, you use a while True: which doesn't belong in an event-driven environment like turtle. Eventually you'll instead want to use a screen ontimer() event to keep your ball in play.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文