上次将开始按钮“GO”设置好了,现在要发挥其功效了,当玩家点击按钮时开始游戏:
在game_functions.py中定义新的事件MOUSEBUTTONDOWN,也就是鼠标点击事件,
在check_events()中添加:
elif event.type==pygame.MOUSEBUTTONDOWN:#检测鼠标点击事件
mouse_x,mouse_y=pygame.mouse.get_pos() #get_pos()返回一个单击时鼠标的xy坐标
check_play(button_go,sta,mouse_x,mouse_y)
check_play()方法检查开始按钮:
def check_play(button_go,sta,mouse_x,mouse_y): #点击按钮开始游戏
if button_go.rect.collidepoint(mouse_x,mouse_y):#该方法检测鼠标点击的位置是否在按钮的rect内
sta.game_active=True
最后在主程序中调用该函数:
while True:
gf.check_events(ship,ai_settings,screen,bullets,button_go,sta) #更改事件监听函数
当游戏结束时,game_active为False,并重新显示开始按钮,但此时再点击则没有效果(其实也有一点效果,每次点击外星人移动一点点),大家还记得之前那个方法嘛。。
def ship_col(ai_settings,aliens,screen,ship,bullets,sta):
if sta.ship_counts>0:
sta.ship_counts-=1 #每次检测到撞击飞船数量减少1
aliens.empty()
bullets.empty() #清空外星人和当前的子弹
creat_aliens(ai_settings,screen,aliens,ship) #创建一批新的外星人
ship.ship_center() #将飞船重新放到屏幕中央
sleep(1) #睡眠1秒钟
else:
sta.game_active=False
当游戏结束后ship_counts已经等于零了,则以下的更新操作都不能执行了,此时转取else中将game_active改为False,于是乎又停止了。。下一次将修改这一漏洞……
最后附上游戏结束时的场景: