Pygame实战之外星人入侵NO.12——点击按钮开始游戏

上次将开始按钮“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,于是乎又停止了。。下一次将修改这一漏洞……
最后附上游戏结束时的场景:

Pygame实战之外星人入侵NO.12——点击按钮开始游戏_第1张图片

你可能感兴趣的:(Pygame游戏实战,pygame,开始游戏)