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

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 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么