2014-02-01 2 views
2

Я очень новичок в Python и Pygame, но сейчас просто экспериментирую и пытаюсь создать панель здоровья для персонажа. Панель здоровья должна начинаться с ширины символьного изображения, но по какой-то причине она возвращает нуль.Pygame Return Width of Image

Пожалуйста, можете ли вы посоветовать, где я ошибаюсь? Я думаю, что это может быть связано с возвратом как целое.

Я также пробовал self.image.get_width() без везения.

class Player(object): 
def __init__(self): 
    self.image = pygame.image.load('player.png') 
    self.imagerect = self.image.get_rect() 
    self.x = 0 
    self.y = 0 
    self.direction = 'right' 
    self.imagewidth = self.imagerect.width 
    self.health = 100 

def healthbar(self, healthvalue): 
    healthwidth = (self.imagewidth/100) * healthvalue 
    pygame.draw.rect(screen, RED, (self.x, self.y -10, healthwidth, 10), 2) 
    pygame.draw.rect(screen, RED, (self.x, self.y -10, healthwidth, 10), 0) 
+0

Какую версию Python вы используете? Отдел ведет себя по-разному в 2.x и 3.x. – rlms

+0

Я использую 2.x, потому что я не мог заставить 3.x работать с Pygame на OS X. Я думаю, что я только что решил свой собственный вопрос, хотя ... обертывание ширины в float() кажется Работа! – marka87uk

ответ

0

В Python 2.x / оператор пола деление - эквивалент // в Python 3.x.

Например,: 6/2 == 3, 7/2 == 3, 8/4 == 2, 8/3 == 2.

x/y == how many times y fits into x 

Как вы заметили, изменение одного из операндов в float изменяет работу в нормальном весе.

+0

Спасибо! Легко, когда вы знаете, как ...! – marka87uk