代码部分
GameMain()
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")
# self.enemy = Enemy("images/enemy1.png")
random_number = random.randint(1, 4)
random_image = f"images/enemy{random_number}.png"
self.enemy = Enemy(random_image)
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)
self.enemy.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()
GameObject()
import pygame
import random
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):
def __init__(self, img_path):
super().__init__(img_path)
self.speed_x = 0
self.speed_y = random.randint(1, 3)
self.rect.bottom = 0
self.rect.x = random.randint(0, SCREEN_SIZE.width - self.rect.width)
def move(self, screen: Surface):
super().move(screen)
if self.rect.top >= 700:
self.kill()
class Bullet(GameBase):
pass
class EnemyBullet(GameBase):
passs
实现结果
![](https://img-blog.csdnimg.cn/6be58b331c7d4647b417622be1cc9ed6.png)
![](https://img-blog.csdnimg.cn/0b3815c49aa949288fd4fb2d429c46d9.png)