Python 使用pygame使图像笔直移动
我必须通过pygame窗口直接移动矩形对象。我用pygame尝试了一些代码。代码是Python 使用pygame使图像笔直移动,python,pygame,pygame-surface,Python,Pygame,Pygame Surface,我必须通过pygame窗口直接移动矩形对象。我用pygame尝试了一些代码。代码是 import pygame from itertools import cycle pygame.init() screen = pygame.display.set_mode((300, 300)) s_r = screen.get_rect() player = pygame.Rect((100, 100, 50, 50)) timer = pygame.time.Clock() movement
import pygame
from itertools import cycle
pygame.init()
screen = pygame.display.set_mode((300, 300))
s_r = screen.get_rect()
player = pygame.Rect((100, 100, 50, 50))
timer = pygame.time.Clock()
movement = "straight"
x = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
raise
if movement == 'straight':
x += 50
screen.fill(pygame.color.Color('Black'))
pygame.draw.rect(screen, pygame.color.Color('Grey'), player)
pygame.display.flip()
timer.tick(25)
在这里,图像没有移动。我需要的是图像必须以直线方式移动。
x
正在添加,但这不会影响播放器,实际上会影响矩形的绘制
import pygame
from itertools import cycle
pygame.init()
screen = pygame.display.set_mode((300, 300))
s_r = screen.get_rect()
timer = pygame.time.Clock()
movement = "straight"
x = 0
player = pygame.Rect((x, 100, 50, 50))
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
raise
if movement == 'straight':
x += 10
player = pygame.Rect((x, 100, 50, 50))
if x >= 300:
x = 0
screen.fill(pygame.color.Color('Black'))
pygame.draw.rect(screen, pygame.color.Color('Grey'), player)
pygame.display.flip()
timer.tick(25)
每次更改
x
时,您都需要调整player
矩形。从中,您可以看到前两个参数是“left”和“top”。因此,如果您希望矩形从左向右移动,您将需要如下内容:
player = pygame.Rect((100 + x, 100, 50, 50))
pygame.draw.rect(screen, pygame.color.Color('Grey'), player)
顺便说一句:
- 不要使用
退出程序raise
- 使用可读变量-不是
,而是s\u r
screen\u rect
- 你不需要
-你有x
player.x
- 只能创建一次矩形
- 将代码添加到问题时删除重复的空行
x
,但从未使用过它。看看这个:。此外,每次通过循环时,您都需要重新绘制矩形。@MattShank,我已经回滚了您的编辑。由于python是一种缩进非常重要的语言,因此对它的任何修改都应该由OP来完成。您向他们请求澄清是正确的,只是您自己没有这样做。缩进可能是他们问题的一部分,为他们“纠正”缩进可能会使问题本身无效。我不建议在这种情况下这样做,但当涉及到python和其他语言时,如果空格有意义,请不要弄乱缩进。@不可分割,明白。@user3830347下次使用按钮{}
关于保留缩进的代码。这不是一个有效的答案。请发布答案,用pygame使矩形移动。我只是一个初学者。所以我不知道很多。如果你知道如何将其笔直移动。请帮助我。这很有帮助。但当它笔直移动时,它会离开屏幕。我如何才能再次从中间开始。例如点击屏幕后,反复执行相同的过程。您需要将x
与窗口的宽度进行比较。如果x
大于窗口的宽度,您可以将x
重置为0或100,或者重置为您希望它启动的任何位置。您可以使用player.x+=10
。您不必每次都创建Rect()
。
import pygame
BLACK = pygame.color.Color('Black')
GREY = pygame.color.Color('Grey')
pygame.init()
screen = pygame.display.set_mode((300, 300))
screen_rect = screen.get_rect()
timer = pygame.time.Clock()
movement = "straight"
player = pygame.Rect(0, 100, 50, 50) # four aguments in place of tuple (,,,)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if movement == 'straight':
player.x += 10
if player.x >= 300: # check only when `player.x` was changed
player.x = 0
screen.fill(BLACK)
pygame.draw.rect(screen, GREY, player)
pygame.display.flip()
timer.tick(25)