一颗发条橙 2021-10-17 10:52 采纳率: 100%
浏览 83
已结题

Python外星人入侵游戏摁键盘就退出 求看看代码

alien_invasion.py

import sys
import pygame

from settings import Settings
from ship import Ship

class AlienInvasion:
"""管理游戏资源和行为的类"""
def init(self):
pygame.init()
self.settings=Settings()
self.screen=pygame.display.set_mode(
(self.settings.screen_width,self.settings.screen_height))
pygame.display.set_caption("Alien Invasion")
self.ship=Ship(self)

def run_game(self):
    """开始游戏的主循环"""
    while True:
        self._check_events()
        self.ship.update()
        self._update_screen()
        
def _check_events(self):
    """监视键盘和鼠标事件。"""
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if even.key == pygame.K_RIGHT:
                self.ship.moving_right = True
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_RIGHT:
                self.ship.moving_right = False
def _update_screen(self):
    #每次循环时都重置屏幕。
        self.screen.fill(self.settings.bg_color)
        self.ship.blitme()
        #让最近绘制的屏幕可见。
        pygame.display.flip()

if name=='main':
#创建游戏实例并运行游戏。
ai=AlienInvasion()
ai.run_game()

settings.py

class Settings:
"""储存游戏《外星人入侵》中所有设置的类"""
def init(self):
"""初始化屏幕设置"""
self.screen_width=1200
self.screen_height=800
self.bg_color=(230,230,230)

ship.py

import pygame

class Ship:
"""管理飞船的类"""
def init(self,ai_game):
"""初始化飞船并设置其初始位置。"""
self.screen=ai_game.screen
self.screen_rect=ai_game.screen.get_rect()

    #加载飞船图像并获取其外接矩形
    self.image=pygame.image.load('images/ship.bmp')
    self.rect=self.image.get_rect()
    
    #对于每艘新飞船,都将其放在屏幕底部的中央。
    self.rect.midbottom=self.screen_rect.midbottom

    #移动标志。
    self.moving_right=False

def update(self):
    """根据移动标志调整飞船的位置"""
    if self.moving_right:
        self.rect.x += 1
def blitme(self):
    """在指定位置绘制飞船"""
    self.screen.blit(self.image,self.rect)
  • 写回答

1条回答 默认 最新

  • 辉煌仪奇 2021-10-17 11:08
    关注

    你好,你看看是不是你这里写错了导致变量出问题而报错

    img


    修改建议如下

       if event.key == pygame.K_RIGHT:
    

    有帮助请采纳,有问题继续交流,你的采纳是对我回答的最大的肯定和动力

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月18日
  • 创建了问题 10月17日

悬赏问题

  • ¥15 Android STD快速启动
  • ¥15 如何使用simulink建立一个永磁同步直线电机模型?
  • ¥30 天体光谱图的的绘制并得到星表
  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动