你好,我正在用 python 做一个小游戏,我的主要想法是抓住一个单位,如果它大于 1 (2,3,4) 玩家应该去那次宇宙飞船并返回同样的 n 次去抓住单位,所以它会是这样的: 如果单位为 2,玩家应该去飞船交付一个单位并返回第二个单位,依此类推,但我无法弄清楚,也不知道最后是否可以删除该单位在循环中,我使用 spritecollide 来知道我的玩家何时应该返回单位或飞船
hasunit 和 isgoingback 在开始时设置为 False
spaceship_units 和 score 应该是一样的
if self.hasunit == False & self.isgoingback == False:
# If player collides with unit
if pygame.sprite.spritecollide(self, unit_group, False):
unitx = self.rect.x
unity = self.rect.y
if unitsize == 1:
self.carrryingunit += unitsize
self.hasunit = True
self.isgoingback = False
elif unitsize >= 2:
self.carrryingunit += unitsize
self.hasunit = True
self.unitsleft = unitsize - 1
self.isgoingback = True
elif self.hasunit == True & self.isgoingback == False: #If only one unit
if(self.rect.x > spaceship_x):
dx -= 1
else:
dx += 1
if(self.rect.y < spaceship_y):
dy += 1
else:
dy -= 1
if pygame.sprite.spritecollide(self, spaceship_group, False):
score += self.carrryingunit
spaceship_units += self.carrryingunit
self.hasunit = False
self.isgoingback = False
self.carrryingunit = 0
elif self.hasunit == True & self.isgoingback == True: #If bigger than 2 units
for i in range(1,self.unitsleft,1):
if(self.rect.x > spaceship_x):
dx -= 1
else:
dx += 1
if(self.rect.y < spaceship_y):
dy += 1
else:
dy -= 1
if pygame.sprite.spritecollide(self, spaceship_group, False):
score += 1
spaceship_units += 1
self.carrryingunit = 0
if(self.rect.x > unitx):
dx -= 1
else:
dx += 1
if(self.rect.y < unity):
dy += 1
else:
dy -= 1
score += 1
spaceship_units += 1
self.hasunit == False
self.isgoingback == False