Datehoer的博客
我本将心向明月,奈何明月照沟渠
Datehoer的博客

当前位置:主页 > 日常学习 > python 外星人大战,飞船不移动怎么办

python 外星人大战,飞船不移动怎么办

浏览: 作者:Datehoer 发布日期:2020-11-09 20:49:06 来源: 原创
今天遇到的小问题!便对着书边敲代码,发现出现错误。python 外星人大战,飞船不移动。这个问题我首先是发去了吾爱,不过后期我自己解决了。

如题,边看书边敲的代码,发现飞船不移动。求大佬帮忙看一下!
主文件

import pygame
from setting import Settings
from ship import Ship
import game_functions as gf
def run_game():
    #初始化游戏并且创建一个屏幕对象
    pygame.init() #初始化背景属性
    ai_settings = Settings()  #使类setting里的内容直接被调用
    screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion") #窗口名字
    #创建飞船
    ship = Ship(screen)
    #开始游戏的主循环
    while True:
        #监视鼠标和键盘事件
        gf.check_events(ship)
        gf.update_screen(ai_settings, screen, ship)
run_game()
game_functions.py

import sys
import pygame
def check_events(ship):
    """响应按键和鼠标事件"""
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.type == pygame.K_RIGHT:
                #向右移动飞船
                ship.rect.centerx += 1
            elif event.type == pygame.K_LEFT:
                ship.rect.centerx -= 1
 
 
def update_screen(ai_settings, screen, ship):
    """更新数据"""
    screen.fill(ai_settings.bg_color)
    ship.blitme()
    # 让最近绘制的屏幕可见
    pygame.display.flip()
ship.py
import pygame
 
class Ship():
    def __init__(self, screen):
        """初始化飞船位置"""
        self.screen = screen
 
        #加载飞船图像并获取其外接矩形
        self.image =pygame.image.load("images/ship.bmp")
        self.rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()
 
        #将每艘新飞船放在屏幕底部中央
        self.rect.centerx = self.screen_rect.centerx
        self.rect.bottom = self.screen_rect.bottom
 
    def blitme(self):
        """在指定位置绘制飞船"""
        self.screen.blit(self.image, self.rect)
setting.py
class Settings():
    """储存外星人大战的所有设置"""
 
    def __init__(self):
        """初始化游戏的设置"""
        # 屏幕设置
        self.screen_width = 1200;
        self.screen_height = 800;
        self.bg_color = (230, 230, 230)

本来发现问题的时候是很慌的,我一开始是以为可能跟书上的内容不太一样,但是后来下了源代码发现确实应该那样。
最后还是把书上的内容都复制下来,然后挨个比对,发现错误是
game_functions.py文件内第9行if event.type == pygame.K_RIGHT:应该把event.type改为event.key!!
敲代码还是要看仔细,仔细很重要,细节决定成败!!


版权:本文由Datehoer原创,著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接本文链接:https://zjzdmc.top/rcxx/40.html。

文章推荐

热门标签

返回顶部
下面为相关推荐
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!