#python #pygame
Вопрос:
Поэтому я попытался заставить врага развернуться, когда ударился о стену, и он застрял.
Это код только для врага: (Размер экрана 1000 на 1000, кстати)
xEnemy = random.randint(0,1000)
yEnemy = random.randint(0,1000)
#enemy
def enemy():
global xEnemy, yEnemy
pygame.draw.rect(screen,(255,0,0),(xEnemy,yEnemy,15,15))
if xEnemy > 0 and xEnemy < 1000:
xEnemy -=velEnemy
if xEnemy < 0 and xEnemy > 10:
xEnemy = velEnemy
Комментарии:
1.
xEnemy < 0 and xEnemy > 10
это никогда не бывает правдой. Кроме того, даже если вы скорректировали его в соответствии с тем, что вы, вероятно, имеете в виду, остерегайтесь (а) эффекта вложенности этогоif
под предыдущим и (б) возможности запуска обоих условных условий, поэтому вы вычитаетеvelEnemy
, а затем добавляете его снова, без результирующего эффекта.2.
xEnemy < 0 and xEnemy > 10
следует заменить наxEnemy < 0 or xEnemy > 1000
. Кроме того, если это условие верно, вы хотите впоследствии изменить скорость противника,velEnemy = -velEnemy
3. если ксенемия > 0: Ксенемия -=веленемия, если ксенемия >
4. Этот код заставляет противника стоять, потому что оба условия выполняются одновременно
5. Так как же мне заставить его сменить направление, когда он дойдет до конца
Ответ №1:
Вы должны изменить скорость, если xEnemy > 1000
или xEnemy < 0
. Если xEnemy > 1000
скорость должна стать отрицательной. Если xEnemy < 0
, то скорость должна стать положительной. Абсолютную величину скорости можно получить с abs(velEnemy)
помощью . Не забывай global velEnemy
def enemy():
global xEnemy, yEnemy, velEnemy
if xEnemy < 0:
velEnemy = abs(velEnemy)
if xEnemy > 1000:
velEnemy = -abs(velEnemy)
xEnemy = velEnemy
pygame.draw.rect(screen, (255,0,0), (xEnemy, yEnemy, 15, 15))