Python Pygame气球流行游戏:气球类和分数

Python Pygame气球流行游戏:气球类和分数,python,pygame,Python,Pygame,我有两种类型的气球,一种是蓝色的,一种是红色的(绿色气球产卵的几率为50%)。玩家弹出绿色气球得2分,弹出红色气球得-2分-1如果绿色气球飞走。 我创建了分数计数,但一个气球只有一个,这意味着如果我同时弹出红色和绿色气球,分数可以(+2),但我被卡在这里。 我不知道随机选择是否是获得50%机会的最佳方式 下面是一段代码: 类生成时间(): 定义初始(自我、上一次、时间): self.time_previous=先前 自我时间=时间 类气球(): 计数=0 定义初始化(自): self.txr=r

我有两种类型的气球,一种是蓝色的,一种是红色的(绿色气球产卵的几率为50%)。玩家弹出绿色气球得2分,弹出红色气球得-2分-1如果绿色气球飞走。 我创建了分数计数,但一个气球只有一个,这意味着如果我同时弹出红色和绿色气球,分数可以(+2),但我被卡在这里。 我不知道随机选择是否是获得50%机会的最佳方式 下面是一段代码:

类生成时间():
定义初始(自我、上一次、时间):
self.time_previous=先前
自我时间=时间
类气球():
计数=0
定义初始化(自):
self.txr=random.choice(气球类型)
self.width=self.txr.get_width()
self.height=self.txr.get_height()
self.x=random.randint(0,屏幕宽度-self.WIDTH)
self.y=屏幕高度
self.rect=pygame.rect(self.x、self.y、self.width、self.height)
self.speed=random.randint(最小气球速度,最大气球速度)
self.active=True
Balloon.count+=1#将1添加到Balloon计数器
def更新(自我):
自校正y-=自校正速度

如果self.rect.bottom不使用
ranfom.choice
,而是使用
random.randrange
根据元素索引随机选择元素(请参阅):

class Balloon():
计数=0
定义初始化(自):
self.ballodes\u type=random.randrange(len(ballodes\u type))
img=引出序号类型[自身引出序号类型]
self.width=img.get_width()
self.height=img.get_height()
# [...]
def牵引(自):
blit(引出序号类型[self.balloon\u-TYPE],self.rect)
现在,您可以根据引出序号的类型更改分数:

class Player():
# [...]
已单击的定义(自我):
#检查玩家是否点击了气球
对于气球中的b:
如果b.rect.collidepoint(self.x,self.y):
如果b.U类型==0:
自我评分+=2
其他的
自我评分-=2
b、 活动=错误
中断#退出for循环

(我不知道红色气球还是绿色气球先到,所以您可能需要交换
+=2
-=2

谢谢您的回答。下面是我在使用代码self.width=self.balloon\u type.get\u width()AttributeError时遇到的错误:“int”对象没有属性“get\u width”@Zisca我扩展了答案。当然,您必须使用
ballogs\u TYPE[self.balloon\u TYPE]
而不是
self.txr
。非常感谢。我应该把转义气球的代码放在同一个for循环块下吗?@Zisca不,我不这么认为。该函数名为单击的
。很可能只是在按下鼠标按钮时调用。