类中的Pygame绘图

时间:2018-12-14 18:44:56

标签: python pygame

我正在pygame中创建一个乒乓游戏,并试图在班级中绘制桨和球。

当我尝试在普通函数中绘制它时,它可以正常工作,但是当我尝试使用类来实现它时,会出现很多错误。

我在做什么错?对我来说,在Photoshop中创建图像并将其导入会更容易吗?另外,我是在 init 方法中还是在单独的方法中绘制桨。

这是我的代码,该类位于单独的文件中。

paddles.py:

import pygame    
import sys
class Paddles():

    def __init__(self, screen):
        self.screen = screen
        self.paddle_l = pygame.draw.rect(screen, (255, 255, 255), [15, 250, 10, 100])
        self.paddle_r = pygame.draw.rect(screen, (255, 255, 255), [780, 250, 10, 100])

program.py:

 import sys
 import pygame

 from settings import Settings
 from paddles import Paddles
 import game_functions as gf


 def run_game():
     # Initialise pygame, settings and screen object.
     pygame.init()
     ai_settings = Settings()
     screen =     pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
     pygame.display.set_caption('Ping Pong')

     #Make paddles
     paddles = Paddles(screen)
     paddles.paddles()

     # Start the main loop for the game.
     while True:
         gf.check_events()
         gf.update_screen(ai_settings,screen,paddles)


 run_game()

我收到的错误消息是:

Traceback (most recent call last):   File "C:/Users/PycharmProjects/pingpong/.idea/program.py", line 27, in <module>
    run_game()   
File "C:/Users/PycharmProjects/pingpong/.idea/program.py", line 19, in run_game
    paddles.paddles() 
AttributeError: 'Paddles' object has no attribute 'paddles'

2 个答案:

答案 0 :(得分:1)

就像错误消息中所说的那样,您的Paddle类没有名为paddles的函数。您的课程应如下所示:

class Paddles():
    def __init__(self, screen):
        self.screen = screen
        self.paddle_l = pygame.draw.rect(screen, (255, 255, 255), [15, 250, 10, 100])
        self.paddle_r = pygame.draw.rect(screen, (255, 255, 255), [780, 250, 10, 100])

    def paddles(self):
        # DO STUFF WITH PADDLES

我不确定您打算使用此功能做什么,但这取决于您。

答案 1 :(得分:0)

您得到的错误是因为您试图使用libraryDependencies += javaCore 中的方法,该方法将是Paddles,但它不存在。

就我所知,您的文件称为paddles(我可以猜测您的代码),因此这并不意味着您的类paddles.py具有此Paddles方法。

要解决此问题,只需在paddles类中添加paddles方法,例如:

Paddles