问题描述
我是python的初学者,我喜欢pygame模块中的编码。我一直在尝试创建pong,以更好地学习OOP,但是我遇到了一些问题。例如我尝试制作的一个基本的乒乓球游戏:
import pygame
...
Class Ball:
def __init__(self,x,y,width,height):
...
def check_collide(self):
self.ball_rect.collide(paddle_left.get_rect())
Class Player:
def __init__(self,w,h):
...
def get_rect():
return self.player_rect
def main():
ball = Ball(400,400,20,20)
paddle_left = Player(20,300,10,100)
while True:
draw()
...
main()
在第一堂课中,我试图获取left_paddle的当前位置,但是显然这给了我一个错误。 如果尚未定义其他类的函数,如何获取信息或使用它们呢?有什么更好的方法来解决这个问题?
解决方法
您必须将对象实例传递给方法:
class Ball:
def __init__(self,x,y,width,height):
# [...]
def check_collide_paddle(self,paddle):
return self.ball_rect.collide(paddle.get_rect())
def main():
ball = Ball(400,400,20,20)
paddle_left = Player(20,300,10,100)
paddle_right = Player(...)
while True:
# [...]
if ball.check_collide_paddle(paddle_left):
# [...]
if ball.check_collide_paddle(paddle_right):
# [...]