pygame - 《Python编程:从入门到实践》第十二章,外星人入侵实例中无法获取键盘按键和退出游戏
PHP中文网
PHP中文网 2017-04-18 10:17:36
0
1
991

game_functions.py

import pygame
import sys


def check_enents(ship):
    """响应按键和鼠标事件"""
    for event in pygame.event.get():
        if event == pygame.QUIT:
            sys.exit()
        elif event == pygame.KEYDOWN:
            if event == pygame.K_d:
                ship.rect.centerx+=10


def update_screen(ai_settings,screen,ship):
    """更新屏幕上的图像"""
    # 重绘屏幕
    screen.fill(ai_settings.bg_color)
    ship.blitme()
    pygame.display.flip()

alien_invasion.py

import pygame
from settings import Settings
from ship import Ship
import game_functions as gf


def run_game():
    # 初始化游戏,创建屏幕对象
    pygame.init()
    ai_settings=Settings()  # 创建设置实例
    screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
    ship=Ship(screen)
    pygame.display.set_caption("Alien Invasion")

    # 开始游戏主循环
    while True:
        gf.check_enents(ship)
        gf.update_screen(ai_settings,screen,ship)


run_game()

只能强行终止进程,按红叉无法退出,按d后也没办法向右移动,代码和书上基本一样,求教是哪里错了,和OS X系统有关系么?

PHP中文网
PHP中文网

认证0级讲师

全員に返信(1)
Peter_Zhu

問題が見つかりました。pygame.QUITとpygame.KEYDOWNの両方にevent.tpyeを使用する必要があります。pygame.K_dはキーボードが押されたときのdを意味するため、event.keyを使用する必要があります。本に書いてあったのにうっかり無視してしまいました…

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート