为什么会没有图片呀

来源:3-8 飞机大战项目敌方飞机自由出现及入口函数优化

目力便程先辈

2019-08-28 21:25:25

可以运行,有声音,

但是没有图片,标题,飞机都看不到?怎么回事?

# encoding: utf-8
import pygame
import sys

import constants
from game.plane import OurPlane, SmallEnemyPlane


class PlaneWar(object):
   """飞机大战"""
   # 游戏状态


   READY = 0
   PLAYING = 1
   OVER =2

   status = 0  # 准备中,1游戏中,2游戏结束

   our_plane = None

   frame = 0  # 播放帧数

   # 一架飞机可以属于多个精灵组
   small_enemies = pygame.sprite.Group()
   enemies = pygame.sprite.Group()

   def __init__(self):
       #初始化游戏
       pygame.init()
       self.width, self.height = 480, 852
       # 加载背景图片
       self.bg = pygame.image.load(constants.BG_IMG)
       # 屏幕对象
       self.screen = pygame.display.set_mode((self.width, self.height))
       # 设置窗口标题
       pygame.display.set_caption('飞机大战')
       # 游戏的标题
       self.imag_game_title = pygame.image.load(constants.IMG_GAME_TITLE)
       self.imag_game_title_rect = self.imag_game_title.get_rect()
       t_width, t_height = self.imag_game_title.get_size()
       self.imag_game_title_rect.topleft = ((int(self.width - t_width) / 2), int((self.height / 2 - t_height)))


       # 开始按钮
       self.btn_start = pygame.image.load(constants.IMG_GAME_STAR_BTN)
       self.btn_start_rect = self.btn_start.get_rect()
       btn_width, btn_height = self.btn_start.get_size()
       self.btn_start_rect.topleft = ((int(self.width - btn_width) / 2), self.height / 2 + btn_height)

       # 加载背景音乐
       pygame.mixer.music.load(constants.BG_MUSIC)
       pygame.mixer.music.play(-1)
       pygame.mixer.music.set_volume(1)
       #我方飞机对象
       self.our_plane = OurPlane(self.screen,speed = 20)

       self.clock = pygame.time.Clock()

   def bind_event(self):
       """绑定事件"""

       # 1,监听事件
       for event in pygame.event.get():
           # 退出游戏
           if event.type == pygame.QUIT:
               pygame.quit()
               sys.exit()
           elif event.type == pygame.MOUSEBUTTONDOWN:
               # 鼠标点击进入游戏
               # 游戏正在准备中,点击才能进如游戏
               if  self.status == self.READY:
                   self.status = self.PLAYING
           elif event.type == pygame.KEYDOWN:
               # 键盘事件
               # 游戏正在游戏中,才需要控制键盘
               if self.status == self.PLAYING:
                   if event.key == pygame.K_w or event.key == pygame.K_UP:
                       self.our_plane.move_up()
                   elif event.key == pygame.K_s or event.key == pygame.K_DOWN:
                       self.our_plane.move_down()
                   elif event.key == pygame.K_a or event.key == pygame.K_LEFT:
                       self.our_plane.move_left()
                   elif event.key == pygame.K_d or event.key == pygame.K_RIGHT:
                       self.our_plane.move_right()
                   elif event.key == pygame.K_SPACE:
                       # 发射子弹
                       self.our_plane.shoot()

   def add_small_enemies(self,num):
       """
       随机生成N架敌小飞机
       :param num:产生飞机的数量
       :return:
       """
       # 随机添加六个敌小飞机
       for i in range(6):
           plane = SmallEnemyPlane(self.screen, 8)
           plane.add(self.small_enemies, self.enemies)


   def run_game(self):
       """游戏主循环部分"""
       while True:
           # 1,设置帧速率
           self.clock.tick(60)
           self.frame += 1
           if self.frame >= 60:
               self.frame = 0
           #2,绑定事件
           self.bind_event()

           # 3,更新游戏的状态
           if self.status == self.READY:
               # 游戏正在准备中
               # 绘制背景
               self.screen.blit(self.bg, self.bg.get_rect())

               # 标题
               self.screen.blit(self.imag_game_title, self.imag_game_title_rect)
               # 开始按钮
               self.screen.blit(self.btn_start, self.btn_start_rect)
           elif self.status == self.PLAYING:
               # 游戏进行中
               # 绘制背景
               self.screen.blit(self.bg, self.bg.get_rect())
               # 绘制飞机
               self.our_plane.update(self.frame)
               # 绘制子弹
               self.our_plane.bullets.update()
               # 绘制敌方飞机
               self.small_enemies.update()

写回答

1回答

时间,

2019-08-29

同学,你好。同学程序最后缺少pygame.display.flip()  —  更新整个待显示的Surface对象到屏幕上

http://img.mukewang.com/climg/5d67483f0001816f05170382.jpg

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

0

0 学习 · 8160 问题

查看课程