Python 游戏中的金币收集功能

0 投票
2 回答
3466 浏览
提问于 2025-04-18 10:00

我现在正在为我的横版卷轴游戏创建一个功能,使用的是Python 3.2.3和pygame,目的是让主角能够收集金币。我想实现的效果是,当我的角色位置和金币位置重合时,金币就会消失。以下是我的代码:

def drawMoney(x,y):
offset = 0 - guy[X]
guyPos = guy[X]+640
moneyPos = x
print(guyPos,moneyPos)
if lvlNum == level1:
    money1  = screen.blit(money,(offset+x, y))
if guyPos == moneyPos or guy[Y] == y:
    y = 10000

我试图通过重新绘制关卡的画面来让金币消失,但不知道为什么这没有成功。我不太确定原因,感觉一切都设置得很正确,但我猜测角色的位置可能从来没有和金币的位置重合过。任何帮助都非常感谢。

2 个回答

0

对于这种情况,我会使用pygame里已经内置的colliderect()函数。你只需要检查一下玩家是否和任何一个金币发生碰撞,如果发生了,就把这个金币加到玩家的收藏里,也就是把相应的数量加到那个变量中,并且把这个金币从要显示的精灵列表中移除。

用伪代码表示的话是这样的:

For coin in coin_list:
    Does the coin collide with the player (check by using pygame.Rect.colliderect())
        If so: add coin amount to player's coin variable and remove coin from coin_list
1

通过这样做:

offset = 0 - guy[X] 
guyPos = guy[X] + offset

你实际上是把零赋值给了 guyPos

撰写回答