美文网首页
【python3小白上路系列】添加开炮功能~(三)

【python3小白上路系列】添加开炮功能~(三)

作者: Charles_DT | 来源:发表于2020-08-16 16:39 被阅读0次

今天我们要实现激动人心的开炮功能啦!

1.5.4 开炮

在game_functions.py中,我们需要修改check_keydown_events(),以便在玩家按空格键时发射一颗子弹。无需修改check_keyup_events(),原因很简单,因为松开空格键的时候什么都不会发生。最后还需要修改update_screen(),确保在调用flip()前在屏幕上重绘每颗子弹。

import sys
import pygame
from bullet import Bullet

def check_keydown_events(event,ai_settings,screen,ship,bullets):
    # 响应按键
    if event.key == pygame.K_RIGHT:
        #向右移动飞船
        ship.moving_right = True
    elif event.key == pygame.K_LEFT:
        #向左移动飞船
        ship.moving_left = True
    elif event.key == pygame.K_SPACE:
        #创建一颗子弹,并将其加入编组bullets中
        new_bullet = Bullet(ai_settings,screen,ship)
        bullets.add(new_bullet)

def check_keyup_events(event,ship):
    if event.key == pygame.K_RIGHT:
        ship.moving_right = False
    elif event.key == pygame.K_LEFT:
        ship.moving_left = False


def check_events(ai_settings,screen,ship,bullets):
    #响应案件和鼠标事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        #判断持续移动
        elif event.type == pygame.KEYDOWN:
            check_keydown_events(event,ai_settings,screen,ship,bullets)
        elif event.type == pygame.KEYUP:
            check_keyup_events(event,ship)
    
            
def update_screen(ai_settings,screen,ship,bullets):
    #每次循环时都重绘屏幕
        screen.fill(ai_settings.bg_color)
        #在飞船和外星人后面重绘所有子弹
        for bullet in bullets.sprites():
            bullet.draw_bullet()
        # 屏幕上绘制飞船#
        ship.blitme()
        #让最近绘制的屏幕可见#
        pygame.display.flip()

修改的时候一定要注意函数中新增加的参数。修改完game_function后,我们要修改一下主程序文件:

import pygame
from pygame.sprite import Group
from setting import Settings
from ship import Ship
import game_functions as gf

def rungame():
    #初始化游戏并创建一个屏幕对象
    pygame.init()

    #实例化设置对象
    ai_settings = Settings()
    screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")

    #创建一只飞船
    ship = Ship(ai_settings,screen)

    #创建一个用于存储子弹的编组
    bullets = Group()
      
    #开始游戏主循环
    while True:
        gf.check_events(ai_settings,screen,ship,bullets)
        ship.update()
        bullets.update()
        gf.update_screen(ai_settings,screen,ship,bullets)

rungame()

运行,然后尽情开炮吧~~~


相关文章

网友评论

      本文标题:【python3小白上路系列】添加开炮功能~(三)

      本文链接:https://www.haomeiwen.com/subject/vuotjktx.html