import sys
import pygame
from seetings 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("Ailen_Invasion")
self.ship = Ship(self)
def run_game(self):
while True:
self._check_events()
self.ship.update()
self._update_screen()
pygame.display.flip()
def _check_events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.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()
if __name__ == '__main__':
ai = AlienInvasion()
ai.run_game()
主程序如上;
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('D:\python游戏之旅\images\ship.bmp(1).png')
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)
对ship的修改如上;
这里KEYUP是用户释放一个键的时候触发,KEYDOWN是按下一个键的时候触发
import sys
import pygame
from seetings 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("Ailen_Invasion")
self.ship = Ship(self)
def run_game(self):
while True:
self._check_events()
self.ship.update()
self._update_screen()
pygame.display.flip()
def _check_events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
self.ship.moving_right = True
elif event.key == pygame.K_LEFT:
self.ship.moving_left = True
elif event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT:
self.ship.moving_right = False
elif event.key == pygame.K_LEFT:
self.ship.moving_left = False
def _update_screen(self):
self.screen.fill(self.settings.bg_color)
self.ship.blitme()
if __name__ == '__main__':
ai = AlienInvasion()
ai.run_game()
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('D:\python游戏之旅\images\ship.bmp(1).png')
self.rect = self.image.get_rect()
self.rect.midbottom = self.screen_rect.midbottom
self.moving_right = False
self.moving_left = False
def update(self):
if self.moving_right:
self.rect.x += 1
if self.moving_left:
self.rect.x -= 1
def blitme(self):
self.screen.blit(self.image,self.rect)
这里以此类推,控制飞船左右移动