Play Home Contribute Github Join Us! Discourse Staff Members Github Contribution Guides Team

Пустыня саверна. Пастух саверна

Помогите пройти уровень. Я всю голову сломал, сижу все выходные. Стало очень сложно, может что то упустил?

# Используй цикл `while`, чтобы выбрать огра

while True:
    enemies = hero.findEnemies()
    enemyIndex = 0

    # Расположи это в цикле `while`, чтобы атаковать всех врагов.
    # Найди длину массива: len(enemies)
while enemyIndex < len(enemies):
    enemy = enemies[enemyIndex]
    hero.attack(enemy)
    # "!=" значит  "не равно".
    if enemy.type != "sand-yak":
        enemyIndex += 1
        # Пока здоровье врага больше 0, атакуй!
        if enemy.health > 0:
            hero.attack(enemy)
        pass

    # В перерывах между волнами возвращайся в центр.
hero.moveXY(30, 30)    
    type or paste code here
1 Like

Привет, 11180,

Три вещи:

  1. Ваши отступы неверны - убедитесь, что весь код находится внутри цикла ‘while True’.
  2. Удалить первую ‘hero.attack(enemy)’.
  3. Положите ‘enemyIndex += 1’, чтобы он обновлялся, даже если враг - песчаный як.

Надеюсь, это поможет.

Дженни

Hi 11180,

Three things:

  1. Your indents are wrong - make sure all the code is inside the ‘while True’ loop.
  2. Delete the first ‘hero.attack(enemy)’.
  3. Put the ‘enemyIndex += 1’ so it updates even if the enemy is a sand-yak.

Hope that helps.

Jenny

1 Like

Нет. не помогло. Не работает.

Ты можешь разместить свой новый код?

Дженни

Can you post your new code?

Jenny

# Используй цикл `while`, чтобы выбрать огра

while True:
    enemies = hero.findEnemies()
    enemyIndex = 0
    
    # Расположи это в цикле `while`, чтобы атаковать всех врагов.
    # Найди длину массива: len(enemies)
while enemyIndex < len(enemies):
    enemy = enemies[enemyIndex]
    
    # "!=" значит  "не равно".
if enemy.type != "sand-yak":
    enemyIndex += 1
    # Пока здоровье врага больше 0, атакуй!
    if enemy.health > 0:
        hero.attack(enemy)
        pass

    # В перерывах между волнами возвращайся в центр.
hero.moveXY(30, 30)    
    

Вы разобрались с пунктом 2, но не сделали 1 или 3:

1 - Все внутри цикла ‘while True’ должно иметь как минимум 1 отступ. На данный момент во втором утверждении ‘while’ этого нет, поэтому оно никогда не выполняется. Всем остальным строкам под этим отступом понадобится ещё один отступ.

3 - Вы увеличиваете ‘enemyIndex’, но только когда враг не является ‘песчаным яком’. Если враг - песчаный як, то enemyIndex не увеличивается, так что код просто продолжает перебираться через этого врага. Это означает, что ваш герой будет стоять там, пока другие враги нападают.

Дженни

You’ve sorted out point 2, but you haven’t done 1 or 3:

1 - Everything inside the ‘while True’ loop needs to have at least 1 indent. At the moment your second ‘while’ statement doesn’t have this, so it never runs. All the other lines below this one will need another indent.

3 - You’re increasing the ‘enemyIndex’, but only when the enemy is not a ‘sand-yak’. If the enemy is a sand-yak, then the enemyIndex isn’t increased, so the code just keeps looping over that enemy. This means your hero will stand there while other enemies attack.

Jenny

Там написано в комментарии, что нужно “пока”, а это While True.

Blockquote

о приветики!