Python pygame崩溃,修复似乎不起作用 - python

我正在尝试制作平台游戏,并且在下面的代码中,我试图在背景上四处移动一个图像('bird.png')。但是,每次我尝试启动pygame时,它甚至都不会加载任何图像而崩溃。我签出了其他页面,但仍然无法解决问题。代码中可能存在一些错误,但是我无法检查它是否正常运行,因为正如我所说,pygame一直崩溃。有什么我可以解决的吗?

PS。抱歉,如果有点混乱,请输入法文中的法语单词:)

import pygame 
from pygame import *

pygame.init()

TE=[] 

def perso(X):
    X = [0,448]
    while X != [640,0]:
         w=int(input("Déplacement: "))
#Right#
         if w==0:
              if X[1] == 608:
                   print("You can't leave the map")
              else:    
                   X[1] +=  32
                   print(X)     
#Left#
         elif w==1:
              if X[1] == 0:
                   print("You can't leave the map")
              else:
                   X[1] -= 32
                   print(X)     
#Down#  
         elif w==2:
              if X[0] == 456:
                   print("You can't leave the map")
              else:
                   X[0] += 24
                   print(X)     
#Up#
         elif w==3:
              if X[0] == 0:
                   print("You can't leave the map")
              else:
                   X[0] -= 24
                   print(X)
         else:
              print("non valable")
    print("Bravo!")

screen = pygame.display.set_mode((680, 488)) background_image = pygame.image.load("C:/Python34/Scripts/Images & Sounds/background(680x480).jpg").convert()
screen.blit(background_image,[0,0])

character = pygame.image.load("C:/Python34/Scripts/Images & Sounds/bird(40x40).png").convert()
screen.blit(character, (X[0],X[1]))

perso(TE)


flag

我运行代码,当pygame窗口打开时,它是黑色的,几秒钟后,我收到“不响应”消息(对于pygame窗口)。但是,w=int(input("Déplacement: "))部分似乎可以正常工作,因为它要求输入。也许与图像有关?

参考方案

最简单的游戏循环之一由每次通过循环调用的“更新”序列和“渲染”序列组成。这两个序列只需很少的时间即可完成(速度越快越好)。可能是Python的input内置函数正在停止“更新”序列,并导致游戏崩溃,因为它无法继续循环。

解决此问题的最简单方法是仅使用Pygame的内置按键输入法。打破“渲染”和“更新”序列也是一个好主意,以帮助区分游戏逻辑和图像渲染。

import pygame 
from pygame import *

pygame.init()

screen = pygame.display.set_mode((680, 488)) 
background_image = pygame.image.load("C:/Python34/Scripts/Images & Sounds/background(680x480).jpg").convert()
character = pygame.image.load("C:/Python34/Scripts/Images & Sounds/bird(40x40).png").convert()

def move(X):
    keys = pygame.get_pressed()
    #Right#
    if keys[pygame.K_RIGHT] != 0:
        if X[1] == 608:
             print("You can't leave the map")
        else:    
             X[1] +=  32
             print(X)     
    #Left#
    elif keys[pygame.K_LEFT] != 0:
        if X[1] == 0:
             print("You can't leave the map")
        else:
             X[1] -= 32
             print(X)     
    #Down#  
    elif keys[pygame.K_DOWN] != 0:
        if X[0] == 456:
             print("You can't leave the map")
        else:
             X[0] += 24
             print(X)     
    #Up#
    elif keys[pygame.K_UP] != 0:
        if X[0] == 0:
             print("You can't leave the map")
        else:
             X[0] -= 24
             print(X)
    else:
        print("non valable")

    return X


def draw(X):
    screen.blit(background_image,[0,0])
    screen.blit(character, (X[0],X[1]))

Running = True
X = [0,448]
while Running:

    # Updated and draw
    X = move(X)
    draw(X)

    # Allow for the user to exit the game
    for i in pygame.event.get():
        if i.type==QUIT:
            Running = False
            exit()

    # End the game if
    if X == [640, 0]:
        Running = False
        exit()

Python-crontab模块 - python

我正在尝试在Linux OS(CentOS 7)上使用Python-crontab模块我的配置文件如下:{ "ossConfigurationData": { "work1": [ { "cronInterval": "0 0 0 1 1 ?", "attribute&…

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python Pandas导出数据 - python

我正在使用python pandas处理一些数据。我已使用以下代码将数据导出到excel文件。writer = pd.ExcelWriter('Data.xlsx'); wrong_data.to_excel(writer,"Names which are wrong", index = False); writer.…

python:ConfigParser对象,然后再阅读一次 - python

场景:我有一个配置文件,其中包含要执行的自动化测试的列表。这些测试是长期循环执行的。   配置文件的设计方式使ConfigParser可以读取它。由于有两个三个参数,因此我需要通过每个测试。现在,此配置文件由script(s1)调用,并且按照配置文件中的列表执行测试。Script(s1)第一次读取配置,并且在每次测试完成后都会执行。阅读两次的要求:由于可能会…