- 火箭可以左右移动
- 左右移动时不超过边框
rocket_game.py
import pygame
import sys
from settings import Settings
from rocket import Rocket
class Rocket_Game:
def __init__(self):
pygame.init()
self.clock = pygame.time.Clock()
self.settings = Settings()
self.window = pygame.display.set_mode((self.settings.window_width, self.settings.window_height))
pygame.display.set_caption('火箭射击')
self.bg_color = (245, 245, 245)
self.rocket = Rocket(self)
def run_game(self):
while True:
self._check_events()
self.rocket.update()
self._update_window()
self.clock.tick(60)
def _check_events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
self._check_keydown_events(event)
elif event.type == pygame.KEYUP:
self._check_keyup_events(event)
def _check_keydown_events(self, event):
if event.key == pygame.K_RIGHT:
self.rocket.moving_right = True
elif event.key == pygame.K_LEFT:
self.rocket.moving_left = True
elif event.key == pygame.K_q:
sys.exit()
def _check_keyup_events(self, event):
if event.key == pygame.K_RIGHT:
self.rocket.moving_right = False
elif event.key == pygame.K_LEFT:
self.rocket.moving_left = False
def _update_window(self):
self.window.fill(self.bg_color)
self.rocket.blitme()
pygame.display.flip()
if __name__ == '__main__':
# 创建游戏实例并运行游戏
RG = Rocket_Game()
RG.run_game()
rocket.py
import pygame
class Rocket:
def __init__(self, rocket_game):
self.window = rocket_game.window
self.window_rect = self.window.get_rect()
self.settings = rocket_game.settings
self.image = pygame.image.load('images/Rocket.bmp')
self.rect = self.image.get_rect()
self.rect.midbottom = self.window_rect.midbottom
self.moving_right = False
self.moving_left = False
def update(self):
if self.moving_right and self.rect.right < self.window_rect.right:
self.rect.x += self.settings.rocket_speed
if self.moving_left and self.rect.left > 0:
self.rect.x -= self.settings.rocket_speed
def blitme(self):
self.window.blit(self.image, self.rect)
settings.py
import pygame
class Settings():
def __init__(self):
self.window_width = 600
self.window_height = 800
pygame.display.set_caption('坦克移动')
self.bg_color = (245, 245, 245)
self.rocket_speed = 1