這是我第一次嘗試定義一個類。我的目的是在sprite頁面中提供精靈的尺寸和幀的總數,並讓這個類別計算所有幀的開始點和停止點。然後,它會將它們添加到包含所有已完成數學的元組中,以便它可以在正確的時間和位置對精靈進行blit以創建動畫。它的工作原理,如果我手動添加所有的幀位置的元組在主遊戲程序是這樣的:定義返回對象的類不支持索引
ninjaImg = pygame.image.load('mainp32.png')
playerImg[0]=(ninjaImg.subsurface((0,0,32,32)))
playerImg[1]=(ninjaImg.subsurface((32,0,32,32)))
#and so on....
但上面的代碼會很快得到混亂,我想利用這個相同的類在稍後的遊戲中爲其他角色提供動畫幀。
我認爲數學是可靠的,但我懷疑有什麼我不知道導致此錯誤的列表/元組。任何幫助將不勝感激。我讀過列表/元組4個教程,它只是不幫我...
這裏是我的代碼:
import pygame
class sprite32 (pygame.sprite.Sprite):
def __init__(self , sprite_sheet_name , x , y , x_total , y_total):
#sprite_sheet_name = original PNG sprite file
#x = width of a single sprite frame
#y = height of a single sprite frame
#x_total = number of sprites columns (width)
#y_total = number of sprites rows (height)
#self = variable name
self = []
sprite_sheet_convert = pygame.image.load(sprite_sheet_name)
for i in range(x_total - 1):
t = i
for i in range(y_total - 1):
self.append(sprite_sheet_convert.subsurface((t,i,x,y)))
和錯誤消息:
C:\Python31>w.py
Traceback (most recent call last):
File "C:\Python31\w.py", line 200, in <module>
DISPLAYSURF.blit(playerImg[playerspriteframe],(playerx,playery))
TypeError: 'sprite32' object does not support indexing
如果'self'是一個類,它是不可能的,你可以「轉換」成一個清單,這樣的說法:'自我= []',但如果你告訴我們,這將有助於到底是哪行號200是。 –
抱歉:)第200行是錯誤代碼DISPLAYSURF.blit(playerImg [playerspriteframe],(playerx,playery))中列出的行。它來自主程序嘗試調用 – MattxxttaM