如何制作图像m

2024-10-01 07:18:12 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个图像,我想用WASD键移动。我不完全理解如何做到这一点,我有一个主循环。 这就是我的形象,是占有

no_image = pygame.image.load("Ideot.png").convert
x_coord = 500 
y_coord = 250
no_position = [x_coord,y_coord]

此代码位于主循环后面。在主循环之后,我实际上通过

^{pr2}$

这就是我的循环 完成=错误

while not done:
   for event in pygame == pygame.Quit:
       done = True

你能演示一下如何用WASD移动图像吗


Tags: no代码图像imageconvertpngpositionload
1条回答
网友
1楼 · 发布于 2024-10-01 07:18:12

首先,我将谈谈当前的评论。MattDMo是对的,这不是一个代码编写服务,而是一种帮助人们理解他们的问题、事情为什么会起作用或为什么不起作用的方法。一个好主意是先尝试一下,然后再问你的问题,如果你想不出来的话。marienbad的链接确实会使图像移动,但方式不方便。这个链接的代码会在你每次按下某个键时移动你的图像(很有用,我建议你检查一下),但是当你按住某个键的时候移动是很好的。在

在按住键的同时移动图像是很困难的。我喜欢用布尔函数。在

如果您没有使用勾号方法,现在就停下来,让它就位。看看pygame.org/docs为了了解如何做到这一点,他们有很好的示例代码。如果没有它,运动将无法按你想要的方式工作,因为如果你不限制它,这个循环将以计算机所能处理的速度运行,因此你甚至可能看不到你的运动。在

from pygame.locals import * # useful pygame variables are now at your disposle without typing pygame everywhere.

speed = (5, 5) # Amount of pixels to move every frame (loop).
moving_up = False
moving_right = False
moving_down = False
moving_left = False # Default starting, so there is no movement at first.

上面的代码用于while循环之外。你的event for循环需要稍作修改,为了改进你的代码,我建议在这里使用函数,或者使用字典来消除所有这些if语句的需求,但我不只是为了让我的答案更简单,让你明白这一点。我漏掉了一些细节,比如事件.退出,因为你已经有了。在

如果不包括keyup部分,你的角色将永远不会停止移动!在

^{2}$

然后在循环中。。。在

if moving_up:
    y_coord += -speed[1] # Negative speed, because positive y is down!
if moving_down:
    y_coord += speed[1]
if moving_right:
    x_coord += speed[0]
if moving_left:
    x_coord += -speed[0]

现在你的x/y坐标将在它们被设置为移动时发生变化,这将用于blit你的图像!在这种情况下,请确保不要使用elif,如果您持有两个键,您希望能够通过组合到键来移动,例如向右和向上,以便可以向东北移动。在

相关问题 更多 >