0

所以,我写了这段代码,它真的应该工作。主要问题是代码在打开窗口并运行时停止响应。

bif = "back.jpeg"
mif = "image2.png"

import pygame, sys
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((640,360),0,32)

background = pygame.image.load(bif).convert()
mouse_c = pygame.image.load(mif).convert_alpha()

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit
            sys.exit()

    screen.blit(background,(0,0))

    x,y = pygame.mouse.get_pos()
    x -= mouse_c.get_width()/2
    y -= mouse_c.get_height()/2

    screen.blit(mouse_c, (x,y))

    pygame.display.update()

另外,我在 IDLE 中收到此错误。

Traceback (most recent call last):
  File "C:\Users\Liam\Documents\game\Game", line 10, in <module>
    background = pygame.image.load(bif).convert()
error: Couldn't open back.jpeg
4

2 回答 2

1

当你运行你的代码时,你必须确保它在正确的工作目录中运行。这就是它找不到图像的原因。

由于您在 IDLE 中运行代码,终端可能会保持进程处于活动状态,因此窗口不会在出现错误后关闭(如果程序终止则会关闭)。由于它不定期运行 event.get,Windows 会注意到它没有响应,这就是你得到的。

要找出您的脚本从哪个目录运行,请打印 os.getcwd() 的输出。

如果您还不想摆弄路径并让它运行,为什么不现在为图像设置一个绝对路径,例如“C:\Users\My Name\Projects\Python\back.jpeg”。

于 2013-07-09T00:07:52.270 回答
0
pygame.quit
sys.exit

应该

pygame.quit()
sys.exit()

screen.blit(mouse_c(x,y))

应该

screen.blit(mouse_c, (x,y))

您也可能想考虑将其限制为每秒特定的最大帧数(教程涵盖了这一点)

于 2013-07-08T22:00:17.800 回答