目标是使用同一个类生成25个对象。
我目前正在使用此代码创建对象:
class Card:
def __init__(self,pos):
self.flipping = False
self.images = loadanimationimages()
self.frame = 0
self.pos = pos
def flip():
self.flipping = True
def update():
if self.flipping:
self.frame += 1
self.frame %= len(self.images)
def draw(screen):
screen.blit(pygame.transform.smoothscale(self.images[self.frame],
self.pos),55*scale).convert_alpha() #Continued.
def updatecards(): #Create the cards.
cards = []
for x in range(5):
for y in range(5):
cards.append(Card((x*92*scale+offsetx*scale,y*92*scale+offsety*scale)))
我知道我必须拨打card.flip()
,但我不知道如何拨打个人卡。帮助
答案 0 :(得分:1)
cards[10].flip()
看到你已经将每张卡存储在列表中([]
)并且它只是用整数索引,所以要拨打卡号10,你会cards[9].<function>
等。
另一种方法是在将卡片添加到卡片列表之前翻转卡片,但这可能会破坏你的游戏:)
while 1:
cardNr = int(raw_input('Flip a card, any card of the total ' + str(len(cards)) + ': '))
cards[cardNr-1].flip() # -1 because humans don't count from 0 normally :)
翻转用户选择翻转的卡片。
由于您使用的是GUI,以下是ya的示例代码:
while 1:
ev = pygame.event.get()
for event in ev:
if event.type == pygame.MOUSEBUTTONUP:
mouse = pygame.mouse.get_pos()
clicked_cards = [c for c in cards if c.clicked(mouse)]
for card in clicked_cards:
if card:
card.flip()
现在为您的卡添加一个功能:
def clicked(self, mouse):
if mouse.x >= self.x and mouse.x <= self.x+self.width:
if mouse.y >= self.y and mouse.y <= self.y+self.height:
return self
return False
如果我没有通过card.Rect.collidepoint
弄错,有更好的方法可以做到这一点,但由于我很早就使用Pygame转移到其他GUI库,你需要在这里阅读: