为什么会没有图片呀
来源: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回答
同学,你好。同学程序最后缺少pygame.display.flip() — 更新整个待显示的Surface对象到屏幕上
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
相似问题