我正在教五年级的学生,所以它需要尽可能简单。但是,正如您在代码行39中看到的那样,我使用的是函数参数的存储变量。然而,有没有更简单的方法呢?假设我想放入第二个字符,我必须再次放入这个长长的变量列表?
我应该创建一个字符类吗?如果是这样,我该如何将其插入到参数中?
import pygame
pygame.init()
win = pygame.display.set_mode((1000, 1000))
#Character Details
x = 100
y = 5
width = 10
height = 10
vel = 20
run = True
while run:
pygame.time.delay(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
#Movement Details
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
x -= vel #
if keys[pygame.K_RIGHT]:
x += vel
if keys[pygame.K_UP]:
y -= vel
if keys[pygame.K_DOWN]:
y += vel
#Without this character movement is additive.
win.fill((0, 0, 0))
pygame.draw.rect(win, (245, 100, 50), (x, y, width, height))
pygame.display.update()
```发布于 2020-05-11 09:33:25
您可以将变量设置为Rect对象。
player1 = pygame.Rect(100,5,10,10) #x,y,w,h
player2 = pygame.Rect(200,20,10,10)
...
pygame.draw.rect(win,(245,100,50),player1)
pygame.draw.rect(win,(245,100,50),player2)您也可以使用列表,它也可以很好地工作,但是使用Rect,它会为您计算额外的属性,如
player1.center #get center of the player, both x and y
player.right #get right side of player, same as x position + width您也可以使用这些工具进行移动
player1.center = (200,200) #moves the center to (200,200)但是你需要为每个玩家设置一个速度变量,你可以有一个列表
发布于 2020-05-12 04:05:47
@The Big Kahuna已经建议你可以用一个代表球员的rect来代替pygame.draw.rect()的一个参数。这特别回答了你的问题,你应该这么做。
既然你在向别人传授这一点,我也想提出一些其他建议。
第一个是对“大卡哈纳”所说的内容的调整。他正确地建议你应该使用pygame rect类,你应该这样做。Rect允许您通过调用位置和大小参数组合在一起的rect来创建rect,而不是像这样传递四个参数。也就是说,您可以将两个位置参数和两个大小参数组合在一起。如下所示:
size = (10, 10) # width, height
player1 = pygame.Rect((100, 5), size)
player2 = pygame.Rect((200, 20), size)如果需要,您也可以将位置分开。
您可以做的另一件事(也是我在这里评论的真正原因)是查看pygame.draw.rect()的另一个参数。(245,100,50)是您正在绘制的颜色(请参阅文档here)。而不是仅仅使用像这样的数字,通过将颜色分配给靠近程序顶部的某个变量并在绘图调用中使用该变量,可以使它变得更加清晰。如下所示:
orangey = (245, 100, 50)
...
pygame.draw.rect(win, orangey, player1)在这种情况下,我将颜色称为橙色,因为当我展示它时,它看起来有点橙色。但显然,您可以为它命名任何适当的描述性名称。
您可以使用多种颜色来区分播放器矩形,如下所示:
orange = pygame.Color("orange")
purple = pygame.Color("purple")
...
pygame.draw.rect(win, orange, player1)
pygame.draw.rect(win, purple, player2)通过查看问题here的答案,您可以看到一种查找定义颜色的好方法,就像我展示的颜色一样。
https://stackoverflow.com/questions/61720771
复制相似问题