Python乒乓球游戏报错:TypeError: unsupported operand type(s) for +=: 'method' and 'int'
解决Python Turtle乒乓球游戏中
TypeError: unsupported operand type(s) for +=: 'method' and 'int'错误 错误原因
你的代码里,paddle_a_up函数中的y = paddle_a.ycor只是把turtle.Turtle对象的ycor方法本身赋值给了变量y,并没有调用这个方法获取当前的y坐标数值。后续对方法对象执行y += 20操作,自然会触发类型不匹配的错误。
修正方案
把y = paddle_a.ycor改成y = paddle_a.ycor(),通过调用方法拿到当前的y坐标数值,再进行加减运算就正常了。
修正后的完整代码
import turtle wn = turtle.Screen() wn.title("Ping Pong By @TheMayoKing") wn.bgcolor("black") wn.setup(width=800, height=600) wn.tracer(0) #Paddle A paddle_a = turtle.Turtle() paddle_a.speed(0) paddle_a.shape("square") paddle_a.shapesize(stretch_wid=5, stretch_len=1) paddle_a.color("white") paddle_a.penup() paddle_a.goto(-350, 0) #Paddle B paddle_b = turtle.Turtle() paddle_b.speed(0) paddle_b.shape("square") paddle_b.shapesize(stretch_wid=5, stretch_len=1) paddle_b.color("white") paddle_b.penup() paddle_b.goto(+350, 0) #Ball ball = turtle.Turtle() ball.speed(0) ball.shape("square") ball.color("white") ball.penup() ball.goto(0, 0) #function def paddle_a_up(): # 修正:调用ycor()方法获取当前y坐标值 y = paddle_a.ycor() y += 20 paddle_a.sety(y) #KeyboardBinding wn.listen() wn.onkeypress(paddle_a_up, "w") #MainGameLoop while True: wn.update()
你还可以补充实现 paddle A 的下移功能,示例代码如下:
def paddle_a_down(): y = paddle_a.ycor() y -= 20 paddle_a.sety(y) # 绑定s键实现下移 wn.onkeypress(paddle_a_down, "s")
内容的提问来源于stack exchange,提问作者Mayo
相关产品推荐
相关产品推荐

