2015-01-11 3 views
0

Я продолжаю получать эту ошибку Traceback (последний последний звонок последний): Файл «C:/Users/Akinyemi/Desktop/Python/LOTR GAME/Main.py», строка 21, в player.render() ТипError: визуализации() недостающие 1 необходимых позиционная аргумент: «окно»Как сделать функцию рендеринга для рендеринга изображения с pygame?

import pygame 

class player: 
    def __init__(self,x,y): 
     self.x=x 
     self.y=y 
     self.width=60 
     self.height=60 
     self.velocity=0 
    def update(self,gravity): 
     self.velocity=gravity 
     self.y-=self.velocity 
    def render(self, window): 
     pygame.image.load(window("m1.png")),(self.x,self.y,self.width,self.height) 

ответ

0

Эта ошибка просто говорит о том, что код, который вызывает «визуализация функция не проходит в параметре window Вы arenot, показывающая, что часть коды в. выше списка - но там - другие сломанные вещи: я не знаю, что вам передали в функции «окна», но pygame.image.load возьмите одну строчку с файлом или файлоподобным объектом (например, объектом StringIO). Во-вторых: вы разделяете 2 выражения по коме внутри функции render. Хотя это не синтаксическая ошибка, это ничего не обслуживает (это неявное заявление о наборе), и, кроме того, выражение после комы ничего не делает. (это не вызов функции).

Может быть, если под «окном» вы имеете в виду поверхности объекта, который является дисплей, вы хотите, чтобы это вместо вышеуказанного супа:

def render(self, window): 
    window.blit(pygame.image.load("m1.png"), (self.x,self.y,self.width,self.height)) 

Вы должны пройти «окна» аргумент «визуализации» тем не менее. Не то чтобы в то время как этот работал бы, это было бы ужасно неэффективно, так как оно загрузило бы изображение снова каждый раз, когда вызывается render. Лучше загрузите изображение в методе __init__, и сохраните его в атрибуте self.image.

На боковой ноте, если вы не используете это Python 3, x, ваш класс shoult наследует от «объекта»: class player(object):.

Смежные вопросы