python - Pygame只显示黑屏
问题描述
我是 Pygame 的新手,所以我在开始实际游戏之前做了一些测试,但是当我执行代码时,我得到的只是黑屏,即使我已经指定了一种颜色,我也尝试使用该blit
方法,但仍然显示只有黑屏。这是我在 Ubuntu 20.04 和 Python 3.8 上的代码和输出:
import pygame
pygame.init()
s = pygame.display.set_mode((1000,500))
testImg = pygame.image.load('player.png')
testX = 500
testY = 250
def test(x, y):
s.blit(testImg, (x,y))
# Game Loop:
running = True
while running:
s.fill((113,113,113))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
test(testX, testY)
解决方案
您错过了pygame.display.flip()
在应用程序循环结束时更新显示:
running = True
while running:
s.fill((113,113,113))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
test(testX, testY)
pygame.display.flip() # <---
一个最小的pygame应用程序循环必须:
- 通过
pygame.event.pump()
或处理事件pygame.event.get()
。 - 根据输入事件和时间(分别为帧)更新对象的游戏状态和位置
- 清除整个显示或绘制背景
- 绘制整个场景(
blit
所有对象) - 通过
pygame.display.update()
或更新显示pygame.display.flip()
推荐阅读
- sql - Oracle 和 group by 的奇怪行为
- gnuplot - 如何在 gnuscript 的循环中使用 grep 命令
- c - linux读取strace产生的系统调用-如何理解指向缓冲区值的指针?
- python - 如何在测试失败时对 pytest 中间结果进行拆解?
- python - PythonAnywhere 问题:您的进程已被终止,因为进程超出了 RAM 限制
- bluetooth - 是否可以重新生成蓝牙连接的链接密钥?
- java - 在android中使用在不同Java类中声明的变量
- javascript - 在反应输入中没有输入时显示信息
- c# - 禁用特定游戏对象
- angular - 在 Angular 中,我可以为两个不同的路径使用相同的模块吗?