我尝试使用pygame.image.load()加载backgroud.png,但我一无所获。这是我的代码,谢谢,谢谢。
import pygame
pygame.init()
# screen
screen = pygame.display.set_mode((480, 700))
# 1.load_image
bg = pygame.image.load("./images/background.png")
# 2.blit
screen.blit(bg, (0, 0))
# 3.update
pygame.display.update()
while True:
pass
pygame.quit()
这是我的声音:it get nothing
答案 0 :(得分:2)
对于一个游戏,您要使所有需要刷新的内容都位于主游戏循环中,您的问题是,您正在将该图像绘制到该游戏循环之外,这意味着绘制该图像之后便将其清除并且永远不会再次绘制。
要修复代码,这就是编写代码的方式:
use std::rc::Rc;
use std::cell::{RefCell, Ref};
struct Inner;
enum State {
A(Inner),
B,
}
struct Owner {
state: Rc<RefCell<State>>,
}
impl Owner {
fn a(&self) -> Option<Ref<'_, Inner>> {
let state_ref = self.state.borrow();
match *state_ref {
State::B => None,
_ => Some(Ref::map(state_ref, |state| match state {
State::A(inner) => inner,
_ => unreachable!(),
})),
}
}
}
但是请注意import pygame
pygame.init()
# screen
screen = pygame.display.set_mode((480, 700))
# 1.load_image
bg = pygame.image.load("./images/background.png")
while True:
# 2.blit
screen.blit(bg, (0, 0))
# 3.update
pygame.display.update()
pygame.quit()
是如何在循环之外的,这是因为如果在循环内,它将在每次循环发生时创建该图像的新实例。
主游戏循环的工作原理是循环浏览所有功能和其他内容,然后一次又一次地进行。
bg=pygame.image...
的工作原理是游戏循环,基本上是每秒游戏循环发生多少次的度量。
确保在循环中进行任何操作时,实际上都在其中有一个位置,例如,没有加载图像,但是更新播放器在屏幕上的位置确实存在。
如果您想看看一个适用于大多数游戏引擎的良好游戏循环,本网站将为您提供帮助。但是在使用pygame时,不要看最复杂的一种,因为它不是为此而构建的。 Fix Your Timestep!
但是并非原来的问题是没有加载图像,而是加载了图像,但是您以错误的方式绘制了图像,如果您想在pygame上学习基本视频,请观看以下视频:Game Development in Python 3 With PyGame - 1 - Intro < / p>
fps
答案 1 :(得分:1)
我认为您不应该在while循环中写入pass,因为它会导致输出窗口停止响应。另外,您应该在while循环内编写blit和display.update屏幕,并在路径中编写正确的图像扩展名。您还可以编写文件的完整路径,例如==> pygame.image.load(r“ C:\ Users \ Desktop \ back_ground.jpg”)
import pygame
pygame.init()
# screen
screen = pygame.display.set_mode((480, 700))
# 1.load_image
bg = pygame.image.load("back_ground.jpg")
while True:
# 2.blit
screen.blit(bg, (0, 0))
# 3.update
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()