在rapid_roll这个界面运行,我想显示我在polandball界面导入的图片(在images里面),但是我不知道为什么不显示,请大佬解答一下谢谢!(有些涉及slide的代码不用管)
# rapid_roll.py
import pygame
import sys
import random
from polandball import Polandball
class Rapid_roll:
'''管理游戏资源和行为的类'''
def __init__(self):
'''初始化游戏并创建游戏资源'''
pygame.init()
self.settings = Settings()
self.screen = pygame.display.set_mode(
(self.settings.screen_width,self.settings.screen_height))
pygame.display.set_caption('Rapid-roll')
self.polandball = Polandball(self)
def run_game(self):
'''开始游戏的主循环'''
while True:
# 检测键盘输入
self._check_events()
# 绘制波兰球
self.polandball.blitme()
# 更新波兰球位置
self.polandball.update()
# 刷新屏幕
self._update_screen()
def _check_events(self):
'''响应按钮和鼠标事件'''
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
self._check_keydown_events(event)
elif event.type == pygame.KEYUP:
self._check_keyup_events(event)
def _check_keydown_events(self, event):
'''响应按键'''
if event.key == pygame.K_RIGHT:
self.polandball.moving_right = True
elif event.key == pygame.K_LEFT:
self.polandball.moving_left = True
elif event.key == pygame.K_q:
sys.exit()
def _check_keyup_events(self, event):
'''响应松开'''
if event.key == pygame.K_RIGHT:
self.polandball.moving_right = False
elif event.key == pygame.K_LEFT:
self.polandball.moving_left = False
def _update_screen(self):
'''更新屏幕上的图像,并切换到新屏幕'''
self.screen.fill(self.settings.bg_color)
for slide in self.slides.sprites():
slide.draw_slide()
# 让最近绘制的屏幕可见
pygame.display.flip()
if __name__ == '__main__':
# 创建游戏实例并运行游戏
ai = Rapid_roll()
ai.run_game()
# polandball.py
import pygame
import random
class Polandball:
def __init__(self,ai_game):
'''初始化波兰球并设置其初始位置'''
self.screen = ai_game.screen
self.screen_rect = ai_game.screen.get_rect()
self.settings = ai_game.settings
# 加载波兰球图像并获取其外接矩形
images = ['America','China','France1','France2','Germany','England','Russia']
self.i = random.choice(images)
path = f'images/{self.i}.jpg'
self.image = pygame.image.load(path)
self.image = pygame.transform.scale(self.image,(90,90))
self.polandball_rect = self.image.get_rect()
# 引入滑梯编组
self.slides = ai_game.slides
self.random_slide = random.choice(self.slides.sprites())
self.polandball_rect.midbottom = self.random_slide.rect.midtop
print(self.polandball_rect.x)
print(self.polandball_rect.midbottom)
print(self.polandball_rect.midtop)
# 在波兰球的属性x中存储小数值
self.x = float(self.polandball_rect.x)
# 移动标志
self.moving_right = False
self.moving_left = False
def update(self):
'''调整波兰球的位置'''
# 更新波兰球而不是rect对象的x值
if self.moving_right and self.polandball_rect.right < self.screen_rect.right:
self.x += self.settings.polandball_speed
if self.moving_left and self.polandball_rect.left > 0:
self.x -= self.settings.polandball_speed
# 根据self.x更新rect对象
self.polandball_rect.x = self.x
def blitme(self):
'''在指定位置绘制波兰球'''
self.screen.blit(self.image, self.polandball_rect)