Python肥鸡大战开发记录(九):开火

更新:\game_functions.py:

import sys
import pygame
from bullet import Bullet


def check_keydown_events(event, fcw_settings, screen, chicken, bullets):
    """响应键盘按键按下事件"""
    if event.key == pygame.K_RIGHT:
        chicken.moving_right = True
    elif event.key == pygame.K_LEFT:
        chicken.moving_left = True
    elif event.key == pygame.K_SPACE:
        # 创建一颗子弹,并将其加入编组中
        new_bullet = Bullet(fcw_settings, screen, chicken)
        bullets.add(new_bullet)


def check_keyup_events(event, chicken):
    """响应键盘按键松开事件"""
    if event.key == pygame.K_RIGHT:
        chicken.moving_right = False
    elif event.key == pygame.K_LEFT:
        chicken.moving_left = False


def check_events(fcw_settings, screen, chicken, bullets):
    """响应按键和鼠标事件"""
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

        elif event.type == pygame.KEYDOWN:
            check_keydown_events(event, fcw_settings, screen, chicken, bullets)

        elif event.type == pygame.KEYUP:
            check_keyup_events(event, chicken)


def update_screen(fcw_settings, screen, chicken, bullets):
    """更新画面"""
    # 绘制
    screen.fill(fcw_settings.bg_color)
    for bullet in bullets.sprites():
        bullet.draw_bullet()
    chicken.blitme()

    # 显示
    pygame.display.flip()

更新:\FatChickenWars.py:

...
    while True:
        # 监视键盘和鼠标事件
        gf.check_events(fcw_settings, screen, chicken, bullets)

        # 更新肥鸡状态
        chicken.update()
        # 更新子弹状态
        bullets.update()

        # 更新画面
        gf.update_screen(fcw_settings, screen, chicken, bullets)
...

效果极佳
效果极佳,边移动边发子弹都没问题。

2021.1.21

猜你喜欢

转载自blog.csdn.net/k1095118808/article/details/112973662