import pygame from pygame import * SCREEN_SIZE = pygame.Rect(0, 0, 480, 700) class GameBase: def __init__(self, img_path, speed_x=0, speed_y=0): self.img = pygame.image.load(img_path) self.speed_x = speed_x self.speed_y = speed_y self.rect = self.img.get_rect() def move(self, screen: Surface): self.rect.x += self.speed_x self.rect.y += self.speed_y screen.blit(self.img, self.rect) class Hero(GameBase): def __init__(self, img_path): super().__init__(img_path, 0, 0) self.rect.centerx = SCREEN_SIZE.centerx self.rect.bottom = SCREEN_SIZE.bottom def move(self, screen: Surface): super().move(screen) if self.rect.left <= SCREEN_SIZE.left: self.rect.left = SCREEN_SIZE.left elif self.rect.right >= SCREEN_SIZE.right: self.rect.right = SCREEN_SIZE.right if self.rect.top <= SCREEN_SIZE.top: self.rect.top = SCREEN_SIZE.top elif self.rect.bottom >= SCREEN_SIZE.bottom: self.rect.bottom = SCREEN_SIZE.bottom class BackGround(GameBase): def __init__(self, img_path, is_First: bool): super().__init__(img_path, 0, 1) if is_First: self.rect.x = 0 self.rect.y = 0 else: self.rect.bottom = 0 self.rect.left = 0 def move(self, screen): super().move(screen) if self.rect.top >= SCREEN_SIZE.bottom: self.rect.bottom = SCREEN_SIZE.top class Enemy(GameBase): pass class Bullet(GameBase): pass class EnemyBullet(GameBase): pass
import sys from GameObject import * class GameMain: def __init__(self): pygame.init() self.clock = pygame.time.Clock() self.screen = pygame.display.set_mode(SCREEN_SIZE.size) self.bg1 = BackGround("images/background.png", True) self.bg2 = BackGround("images/background.png", False) self.hero = Hero("images/me1.png") def start_game(self): while True: self.__draw() self.__collide() self.__event() def __draw(self): self.clock.tick(120) self.bg1.move(self.screen) self.bg2.move(self.screen) self.hero.move(self.screen) pygame.display.update() def __collide(self): pass def __event(self): for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == KEYDOWN: if event.key == K_UP: self.hero.speed_y = -1 elif event.key == K_DOWN: self.hero.speed_y = 1 if event.key == K_LEFT: self.hero.speed_x = -1 elif event.key == K_RIGHT: self.hero.speed_x = 1 elif event.type == KEYUP: if event.key == K_UP or event.key == K_DOWN: self.hero.speed_y = 0 if event.key == K_LEFT or event.key == K_RIGHT: self.hero.speed_x = 0 if __name__ == '__main__': gm = GameMain() gm.start_game()