|
楼主 |
发表于 2019-2-18 14:11:04
|
显示全部楼层
非常感谢,脑子糊涂了,因为之前看了pygame的sprite类代码,想多了,多谢兄弟帮助。改好了。
- import pygame
- import ast
- pygame.init()
- SCREEN_SIZE = (480, 600)
- class MySprite(object):
- def __init__(self, image_addr, x, y, speed=1):
- # super().__init__(self)
- self.x, self.y = x, y
- self.image = pygame.image.load(image_addr)
- self.height = self.image.get_height()
- self.speed = speed
- def move(self):
- self.y += self.speed
- if self.y >= SCREEN_SIZE[1]:
- self.y = -self.height
- class PlaneGame(object):
- def __init__(self):
- # 设置窗口大小
- self.screen = pygame.display.set_mode(SCREEN_SIZE)
- # 创建频率控制对象
- self.clock = pygame.time.Clock()
- self.__create_sprites()
- def __create_sprites(self):
- self.bg = MySprite("./images/background.png", 0, 0)
- self.bg2 = MySprite("images/background.png", 0, -700)
- self.hero = MySprite("images/me1.png", 200, 400)
- self.enemy1 = MySprite("images/enemy1.png", 150, 30)
- def update(self, *args):
- for arg in args:
- self.screen.blit(arg.image, (arg.x, arg.y))
- def batch_move(self, *args):
- for arg in args:
- arg.move()
- if __name__ == '__main__':
- my_game = PlaneGame()
- while True:
- my_game.clock.tick(60)
- for each in pygame.event.get():
- if each.type == pygame.QUIT:
- pygame.QUIT
- exit()
- # 背景和敌机对象的位置移动
- my_game.batch_move(my_game.bg, my_game.bg2, my_game.enemy1)
- # my_game.bg.move() # 第一个背景下移
- # my_game.bg2.move() # 第二个背景下移
- # my_game.enemy1.move() #第一个敌机下移
- #
- # 重新绘制图像
- my_game.update(my_game.bg, my_game.bg2, my_game.hero, my_game.enemy1)
- # my_game.update(my_game.bg) # 使用screen.blit方法绘制图像
- # my_game.update(my_game.bg2)
- # my_game.update(my_game.hero)
- # my_game.update(my_game.enemy1)
- # 更新屏幕
- pygame.display.update()
复制代码 |
|