Pygame使用箭头键“环顾四周” - python

我目前正在尝试编码一系列房间,这里称为节点。您从面向北方的第一个房间/节点(node1)开始,然后显示北方的图像。如果在箭头键上按向左/向右/向下,则您将指向指南针上的相应点,并显示该方向的新图像。如果在第一个节点中朝北的同时按向上箭头键,则转到第二个节点。

但是,当我执行此代码时,任何按键操作都会导致我进入第二个节点。我浏览了一下,觉得应该使用AND语句使之成为非问题,但显然我在这些循环中缺少某些内容。

在此先感谢您的帮助...

def node1():
    node1_here = True
    node1_look_north = True
    node1_look_south = False
    node1_look_east = False
    node1_look_west = False
    node1_north_image = pygame.image.load('node1north.jpg')
    node1_south_image = pygame.image.load('node1south.jpg')
    node1_east_image = pygame.image.load('node1east.jpg')
    node1_west_image = pygame.image.load('node1west.jpg')
    while node1_here:
        while node1_look_north:
            screen.blit(node1_north_image, (0, 0))
            pygame.display.update()
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    quit()
                elif event.type == pygame.KEYDOWN and pygame.K_UP:
                    node2()
                elif event.type == pygame.KEYDOWN and pygame.K_DOWN:
                    node1_look_south = True and not node1_look_north
                elif event.type == pygame.KEYDOWN and pygame.K_LEFT:
                    node1_look_east = True and not node1_look_north
                elif event.type == pygame.KEYDOWN and pygame.K_RIGHT:
                    node1_look_west = True and not node1_look_north
        while node1_look_south:
            screen.blit(node1_south_image, (0, 0))
            pygame.display.update()
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    quit()
                elif event.type == pygame.KEYDOWN and pygame.K_DOWN:
                    node1_look_north = True and not node1_look_south
                elif event.type == pygame.KEYDOWN and pygame.K_LEFT:
                    node1_look_west = True and not node1_look_south
                elif event.type == pygame.KEYDOWN and pygame.K_RIGHT:
                    node1_look_east = True and not node1_look_south
        while node1_look_east:
            screen.blit(node1_east_image, (0, 0))
            pygame.display.update()
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    quit()
                elif event.type == pygame.KEYDOWN and pygame.K_DOWN:
                    node1_look_west = True and not node1_look_east
                elif event.type == pygame.KEYDOWN and pygame.K_LEFT:
                    node1_look_south = True and not node1_look_east
                elif event.type == pygame.KEYDOWN and pygame.K_RIGHT:
                    node1_look_north = True and not node1_look_east
        while node1_look_west:
            screen.blit(node1_west_image, (0, 0))
            pygame.display.update()
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    quit()
                elif event.type == pygame.KEYDOWN and pygame.K_DOWN:
                    node1_look_east = True and not node1_look_west
                elif event.type == pygame.KEYDOWN and pygame.K_LEFT:
                    node1_look_north = True and not node1_look_west
                elif event.type == pygame.KEYDOWN and pygame.K_RIGHT:
                    node1_look_south = True and not node1_look_west

def node2():
    node2_here = True
    node2_look_north = True
    node2_north_image = pygame.image.load('node2north.jpg')
    while node2_here:
        while node2_look_north:
            screen.blit(node2_north_image, (0, 0))
            pygame.display.update()

参考方案

说明:

pygame.K_UP

^这是一个常数,始终为真。因此,

elif event.type == pygame.KEYDOWN and pygame.K_UP:

^按任意键时,这将始终解析为,导致

node2()

被执行。

解:

elif event.type == pygame.KEYDOWN and event.key == pygame.K_UP:

^这将检查所按下的键是否为True

希望有帮助!

参考:
Pygame key docs

Python GPU资源利用 - python

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

Python:图像处理可产生皱纹纸效果 - python

也许很难描述我的问题。我正在寻找Python中的算法,以在带有某些文本的白色图像上创建皱纹纸效果。我的第一个尝试是在带有文字的图像上添加一些真实的皱纹纸图像(具有透明度)。看起来不错,但副作用是文本没有真正起皱。所以我正在寻找更好的解决方案,有什么想法吗?谢谢 参考方案 除了使用透明性之外,假设您有两张相同尺寸的图像,一张在皱纹纸上明亮,一张在白色背景上有深…

Python uuid4,如何限制唯一字符的长度 - python

在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…

Python sqlite3数据库已锁定 - python

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

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…