ynoneone 发表于 2022-3-30 16:39:17

小白求助。

代码没有报错。为什么无法加载图片?
import pygame
from plane_sprites import *

class PlaneGame(object):
    def __init__(self):
      print("游戏初始化")

      self.screen = pygame.display.set_mode(SCREEN_RECT.size)
      self.clock = pygame.time.Clock()
      self.__create_sprites()

    def __create_sprites(self):

      bg1 = Background("./images/background.png")
      bg2 = Background("./images/background.png")

      self.back_group = pygame.sprite.Group(bg1,bg2)

    def start_game(self):
      print("游戏开始...")
      while True:
            self.clock.tick(FRAME_PER_SEC)
            self.__event_handler()
            self.__check_collide()
            self.__update_sprites()


    def __event_handler(self):
      for event in pygame.event.get():
            if event.type == pygame.QUIT:
                PlaneGame.__game_over()

    def __check_collide(self):
      pass

    def __update_sprites(self):
      self.back_group.update()
      self.back_group.draw(self.screen)

    @staticmethod
    def __game_over():
      print("游戏结束...")
      pygame.quit()
      exit()

if __name__ == '__main__':

    game = PlaneGame()
    game.start_game()

ba21 发表于 2022-3-30 18:23:13

把你的代码上全吧。

ynoneone 发表于 2022-3-30 19:20:34

ba21 发表于 2022-3-30 18:23
把你的代码上全吧。

稍等。我先把敌机添加上去。至于为什么不能加载图片稍后帮我看一下

ynoneone 发表于 2022-3-30 19:23:01

import pygame
SCREEN_RECT = pygame.Rect(0,0,480,700)
FRAME_PER_SEC = 60
CREATE_ENEMY_EVENT = pygame.USEREVENT

class GameSprite(pygame.sprite.Sprite):

    def __init__(self, image_name,speed=1):

      super().__init__()

      self.image = pygame.image.load(image_name)
      self.rect = self.image.get_rect()
      self.speed = speed

    def update(self):

      self.rect.y += self.speed

class Background(GameSprite):
    def __init__(self, is_alt=False):
      super().__init__("G:/飞机大战/images/background.png")
      if is_alt:
            self.rect.y = - self.rect.height

    def update(self):
      super().update()

      if self.rect.y >= SCREEN_RECT.height:
            self.rect.y = -self.rect.height

class Enemy(GameSprite):
    def __init__(self):
      super().__init__("G:/飞机大战/images/enemy1.png")

      pass
    def update(self):
      super().update()
      if self.rect.y >= SCREEN_RECT.height:
            print("飞出屏幕。需要删除...")
      pass






(精灵组)

ynoneone 发表于 2022-3-30 19:23:32

本帖最后由 ynoneone 于 2022-3-30 19:29 编辑

import pygame
from plane_sprites import *


class PlaneGame(object):
    def __init__(self):
      print("游戏初始化")

      self.screen = pygame.display.set_mode(SCREEN_RECT.size)
      self.clock = pygame.time.Clock()
      self.__create_sprites()

      pygame.time.set_timer(CREATE_ENEMY_EVENT, 1000)

    def __create_sprites(self):

      bg1 = Background()
      bg2 = Background(True)
      self.back_group = pygame.sprite.Group(bg1, bg2)

      self.enemy_group = pygame.sprite.Group()



    def start_game(self):
      print("游戏开始...")
      while True:
            self.clock.tick(FRAME_PER_SEC)
            self.__event_handler()
            self.__check_collide()
            self.__update_sprites()

    def __event_handler(self):
      for event in pygame.event.get():
            if event.type == pygame.QUIT:
                PlaneGame.__game_over()
            elif event.type == CREATE_ENEMY_EVENT:
                print("敌机出场...")

                enemy = Enemy()

                self.enemy_group.add(enemy)




    def __check_collide(self):
      pass

    def __update_sprites(self):
      self.back_group.update()
      self.back_group.draw(self.screen)
      self.enemy_group.update()
      self.enemy_group.draw(self.screen)

    @staticmethod
    def __game_over():
      print("游戏结束...")
      pygame.quit()
      exit()


if __name__ == '__main__':
    game = PlaneGame()
    game.start_game()

(主控文件)

ba21 发表于 2022-3-30 19:39:57

ynoneone 发表于 2022-3-30 19:23


你的代码很乱,很杂。
图片加载了,当然还要画上去。
screen.blit(background, (0, 0)) # 画背景

先多敲敲别人现成的代码,然后理情思路再来搞自己的吧。

ynoneone 发表于 2022-3-30 19:47:56

ba21 发表于 2022-3-30 19:39
你的代码很乱,很杂。
图片加载了,当然还要画上去。
screen.blit(background, (0, 0)) # 画背景


添加到哪里?

还在练习。最后肯定不是这样的。
页: [1]
查看完整版本: 小白求助。