Функция сбора монет для игры на Python

#python #function #pygame #side-scroller

#python #функция #pygame #боковой скроллер

Вопрос:

В настоящее время я работаю над созданием функции для моей игры с боковым скроллером в pyhton 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
  

Я пытаюсь заставить деньги исчезнуть, повторно изменив изображение уровня, но по какой-то причине этого не происходит. Я не уверен, почему, но по какой-то причине это не работает. Кажется, все правильно, но я предполагаю, что guyPos никогда не равен moneyPos. Любая помощь приветствуется.

Комментарии:

1. почему вы перебираете range(moneyPos-10, moneyPos 10) ?

2. вместо того, чтобы просто редактировать свой пост, возможно, вы могли бы объяснить, что вы пытались сделать

Ответ №1:

Выполнив:

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

вы практически присваиваете ноль guyPos

Ответ №2:

Для чего-то подобного я бы использовал функцию colliderect(), уже встроенную в pygame. Просто проверьте, сталкивается ли игрок с какой-либо из монет, и если да, добавьте монету в коллекцию игрока, добавив соответствующую сумму к этой переменной, и удалите монету из списка спрайтов в blit.

В псевдокоде:

 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