Рисование в классе - PullRequest
       2

Рисование в классе

0 голосов
/ 14 декабря 2018

Я создаю игру в пинг-понг в pygame и пытаюсь нарисовать весла и мяч в классе.

Когда я пытаюсь нарисовать его в обычной функции, он работает нормально, но когда я пытаюсь реализовать его с помощью класса, я получаю массу ошибок.

Что я делаю не так?Будет ли мне проще создать изображение в фотошопе и импортировать его?Кроме того, я рисую весла в методе 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 голосов
/ 14 декабря 2018

Ошибка, которую вы получаете, потому что вы пытаетесь использовать метод из Paddles, который будет paddles, но его не существует.

Ваш файл для того, что я получил, называется paddles.py (я могу догадаться по вашему коду), так что это не значит, что у вашего класса Paddles есть этот paddles метод.

Чтобы исправить это, просто добавьте метод paddles в свой класс Paddles, например:

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])
    def paddles():
        # Method operations 
0 голосов
/ 14 декабря 2018

Как сказано в сообщении об ошибке, в вашем классе 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

Я не совсем уверен, что вы собираетесь делать с этой функцией, но это зависит от вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...