有人知道这个黑色矩形是什么吗?这是我的主要任务。py:
#-- TODO
# *
import pygame
from pygame.locals import *
from mario import Mario
from levels import *
import os
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(r'./themesong.mp3')
pygame.mixer.music.play(-1)
monitorInfo = pygame.display.Info()
W, H = monitorInfo.current_w, monitorInfo.current_h
wn = pygame.display.set_mode((W, H))
pygame.display.set_caption('Super Mario Bros by WinstonMan')
current_path = os.path.dirname(__file__)
BACKGROUND = pygame.transform.scale(pygame.image.load(os.path.join(current_path, 'background.png')), (W, H))
BLOCK = pygame.transform.scale(pygame.image.load(os.path.join(current_path, 'block.png')), (100, 100))
def main():
level = 1
running = True
FPS = 120
clock = pygame.time.Clock()
right = False
left = False
jumping = False
jumpcount = 0
mario = Mario(100, H - 100, 100, 100)
def redrawWindow():
wn.blit(BACKGROUND, (0, 0))
mario.draw(wn)
while running:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == QUIT:
running = False
redrawWindow()
keys = pygame.key.get_pressed()
if keys[K_RIGHT]:
right = True
if keys[K_LEFT]:
left = True
if keys[K_UP]:
jumping = True
if not keys[K_RIGHT]:
right = False
if not keys[K_LEFT]:
left = False
if not keys[K_UP]:
jumping = False
if right:
mario.moveright()
if mario.x + mario.width > W:
mario.x = W - mario.width
if left:
mario.moveleft()
if mario.x < 0:
mario.x = 0
if jumping:
if jumpcount < 2:
mario.grav = -10
mario.y += mario.grav
jumpcount += 1
if mario.y < H - 200:
mario.y += mario.grav
mario.grav += 1
if mario.y > H - 200:
mario.y = H - 200
jumpcount = 0
# mario.updateY(H)
if __name__ == '__main__':
main()
这是我的马里奥。py:
import pygame
import os
pygame.init()
class Mario:
def __init__(self, x, y, width, height):
self.x = x
self.y = y
self.width = width
self.height = height
self.big_img = pygame.transform.scale(pygame.image.load(os.path.join('./', 'mario_big.png')), (self.width, self.height))
self.small_img = pygame.transform.scale(pygame.image.load(os.path.join('./', 'mario_small.png')), (self.height - 50, self.height - 50))
self.grav = 0
self.x_vel = 7
self.X_MAX_VEL = 7
self.X_MIN_VEL = -7
self.img = self.small_img
self.mask = pygame.mask.from_surface(self.img)
# self.rect = self.img.get_rect()
def jump(self):
self.grav = -10
def moveright(self):
self.x += self.x_vel
def moveleft(self):
self.x -= self.x_vel
def deccelerate(self):
if self.x_vel > 0:
self.x_vel -= 1
elif self.x_vel < 0:
self.x_vel += 1
def draw(self, window):
window.blit(self.img, (self.x, self.y))
最后,我的levels.py:
import pygame, os
class Level1:
def __init__(self):
self.blockcoords = []
我使用的是Windows10计算机,python版本为3.8。3和pygame版本1.9。6.
您没有通过pygame更新窗口。陈列update()
或pygame。陈列在
重画窗口中翻转()
:
def main():
# [...]
def redrawWindow():
wn.blit(BACKGROUND, (0, 0))
mario.draw(wn)
pygame.display.flip() # <--- this is missing
# [...]
我正在为平台游戏做教程,但我的Pygame窗口显示一个黑屏。 我不知道怎么解决这个问题。 我尝试再次关闭和打开Visual Studio Code,但没有任何结果。
我对glfw有一个小问题。 我的代码非常简单,我只想创建一个空窗口。 } 此代码编译,但当我运行它时,我只有一个白色窗口。窗口的标题是正确的,但里面的一切都是白色的......我尝试像那样使用glClearColor。 但是我的窗户仍然是白色的....我用的是visual studio 2015。 怎么弄个黑窗? 编辑: 忘了补充这个:glfwMakeContextCurrent(window);
这是我的代码,请记住,我在几天前学习了python,所以我的代码可能制作不正确,等等。我正在尝试制作一个窗口,该窗口将显示一些文本(测试版),并将显示两个小矩形,我想成为按钮。
这在我看来是一个罕见的问题,所以我不确定我会得到一个答案。我张贴的程序重现这个错误,希望你能帮助我。 您有没有尝试过在Jcef(Java-铬嵌入式框架)示例应用程序(简单或详细)中通过做获得的浏览器实例中执行打开新窗口并注意到奇怪的行为?每当在主窗口之外创建一个新窗口时,单击新窗口不会将其置于前面(或焦点)。主窗口(包含浏览器的UIComponent的JFrame)立即窃取焦点并将另一个窗口发回。
我正在写一个简单的mandelbrot渲染器。在程序计算并绘制所有内容后,它将保存曲面并进行blits。这很好,但在我添加了更新显示功能后,它只显示一个黑屏。我需要更新每次迭代,因为我将添加一些文本和其他内容。我只包括了节目的重要部分。有人知道为什么会这样吗?
我一直在尝试使用pygame来显示游戏场景,但它似乎已经停止了对我的工作:在pygame关闭之前,它只在我创建的任何屏幕上显示一个灰色框,然后屏幕上应该显示的内容在退出之前短暂闪烁。例如,下面的最小代码显示灰色屏幕5秒钟,然后快速闪烁黑色并退出: 这似乎是屏幕显示的问题,而不是pygame本身的问题,因为我可以使用pg.image制作曲面并将其保存到图像文件中。save(),它们在那里看起来很好。