鱼C论坛

 找回密码
 立即注册
查看: 1850|回复: 6

小白求助。

[复制链接]
发表于 2022-3-30 16:39:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码没有报错。为什么无法加载图片?
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()

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-30 18:23:13 | 显示全部楼层
把你的代码上全吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-30 19:20:34 | 显示全部楼层
ba21 发表于 2022-3-30 18:23
把你的代码上全吧。

稍等。我先把敌机添加上去。至于为什么不能加载图片稍后帮我看一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-30 19:23:01 | 显示全部楼层
  1. import pygame
  2. SCREEN_RECT = pygame.Rect(0,0,480,700)
  3. FRAME_PER_SEC = 60
  4. CREATE_ENEMY_EVENT = pygame.USEREVENT

  5. class GameSprite(pygame.sprite.Sprite):

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

  7.         super().__init__()

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

  11.     def update(self):

  12.         self.rect.y += self.speed

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

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

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

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

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






  31. (精灵组)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-30 19:23:32 | 显示全部楼层
本帖最后由 ynoneone 于 2022-3-30 19:29 编辑
  1. import pygame
  2. from plane_sprites import *


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

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

  9.         pygame.time.set_timer(CREATE_ENEMY_EVENT, 1000)

  10.     def __create_sprites(self):

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

  14.         self.enemy_group = pygame.sprite.Group()



  15.     def start_game(self):
  16.         print("游戏开始...")
  17.         while True:
  18.             self.clock.tick(FRAME_PER_SEC)
  19.             self.__event_handler()
  20.             self.__check_collide()
  21.             self.__update_sprites()

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

  28.                 enemy = Enemy()

  29.                 self.enemy_group.add(enemy)




  30.     def __check_collide(self):
  31.         pass

  32.     def __update_sprites(self):
  33.         self.back_group.update()
  34.         self.back_group.draw(self.screen)
  35.         self.enemy_group.update()
  36.         self.enemy_group.draw(self.screen)

  37.     @staticmethod
  38.     def __game_over():
  39.         print("游戏结束...")
  40.         pygame.quit()
  41.         exit()


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

  45. (主控文件)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-30 19:39:57 | 显示全部楼层

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

先多敲敲别人现成的代码,然后理情思路再来搞自己的吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

添加到哪里?

还在练习。最后肯定不是这样的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-29 09:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表