今天遇到的小问题!便对着书边敲代码,发现出现错误。python 外星人大战,飞船不移动。这个问题我首先是发去了吾爱,不过后期我自己解决了。如题,边看书边敲的代码,发现飞船不移动。求大佬帮忙看一下!主文件本来发现问题的时候是很慌的,我一开始是以为可能跟书上的内容不太一样,但是后来下了源代码发现确实应该那样。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| import pygame from setting 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)) pygame.display.set_caption("Alien Invasion")
ship = Ship(screen)
while True: gf.check_events(ship) gf.update_screen(ai_settings, screen, ship)
run_game()
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 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.key == pygame.K_RIGHT: ship.rect.centerx += 1 elif event.key == 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()
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 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)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 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)
|
1 2 3 4 5 6 7 8 9 10
| 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!! 敲代码还是要看仔细,仔细很重要,细节决定成败!