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

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日

悬赏问题

  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 Ubuntu开机显示器只显示kernel,是没操作系统(相关搜索:显卡驱动)
  • ¥15 VB.NET如何绘制倾斜的椭圆
  • ¥15 在rhel8中安装qemu-kvm时遇到“cannot initialize crypto:unable to initialize gcrypt“报错”
  • ¥15 arbotix没有/cmd_vel话题
  • ¥20 找能定制Python脚本的
  • ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
  • ¥15 用C语言怎么判断字符串的输入是否符合设定?
  • ¥15 通信专业本科生论文选这两个哪个方向好研究呀