Информатика 2

Перейти на сайт CodeСombat.com
1. Защита лесной равнины
Посмотреть код задания
# Построй два ограждения для защиты деревни!

# Наведи курсор мыши на любую точку на карте, чтобы получить её координаты X, Y.

hero.buildXY("fence", 40, 52)

hero.buildXY("fence", 40, 21)

2. Winding Trail
Посмотреть код задания
# Пройдите до конца тропы и постройте забор. Ну, или ловушечк, чтобы собрать больше самоцветов.

# Используйте функцию moveXY(x, y) .

hero.moveXY(34, 45)
hero.moveXY(36, 60)
hero.moveXY(47, 23)
hero.moveXY(37, 13)
hero.moveXY(71, 25)

hero.buildXY(«fence», 72, 25)

3. Один неверный шаг
Посмотреть код задания
# Герой в замешательстве!
# Скорректируй путь так, чтобы не ступать по минам.

hero.moveXY(11, 36)
hero.moveXY(35, 25)
hero.moveXY(40, 56)
hero.moveXY(77, 58)
4. Лесное уклонение
Посмотреть код задания
# Охотник за головами поблизости!
# Перемещайся по лесу, чтобы не оказаться на линии его взгляда.

while True:
____hero.moveXY(56,44)
____hero.moveXY(40,56)
# Используй `moveXY`, чтобы перемещаться по лесу и выжить.
# Don't forget about indents.
____hero.moveXY(24,44)
____hero.moveXY(24,24)
____hero.moveXY(40,12)
____hero.moveXY(56,24)

5. Лесные закоулки
Посмотреть код задания
# Пройди через лес, но будь начеку!
# Эти лесные закоулки могут быть полны огров!

hero.moveXY(19, 33)
enemy = hero.findNearestEnemy()

# Выражение `if` проверит, является ли переменная огром.

if enemy:
____hero.attack(enemy)
____hero.attack(enemy)
____hero.moveXY(49, 51)

enemy = hero.findNearestEnemy()
if enemy:

# Атакуй противника здесь:
____hero.attack(enemy)
____hero.attack(enemy)

# `pass` ничего не делает, просто закрывает выражение `if`
____pass

hero.moveXY(58, 14)
enemy = hero.findNearestEnemy()

# Используй выражение `if`, чтобы проверить существование врага
if enemy:
# Если враг здесь, атакуй его:
____hero.attack(enemy)
____hero.attack(enemy)

5A. Засада в Бэквудском лесу
Посмотреть код задания
hero.moveXY(24, 42)
enemy = hero.findNearestEnemy()

if enemy:
____hero.attack(enemy)
____hero.attack(enemy)

hero.moveXY(27, 60)
enemy = hero.findNearestEnemy()

if enemy:
# Атакуй врага, если он есть!
____hero.attack(enemy)
____hero.attack(enemy)

hero.moveXY(42, 50)
enemy = hero.findNearestEnemy()

# Используй выражение `if` для проверки наличия врага.
if enemy:
# Атакуй врага, если он есть!
____hero.attack(enemy)
____hero.attack(enemy)

hero.moveXY(39, 24)
# Найди ближайшего врага:
enemy = hero.findNearestEnemy()
# Проверь, существует ли он:

if enemy:
# Атакуй врага, если он есть!
____hero.attack(enemy)
____hero.attack(enemy)
6. Сорванный пикник
7a. Орлиный глаз
8. Если враг не сдается
9. Деревенский стражник
Посмотреть код задания
# Патрулируй входы в деревню.
# Если нашёл врага, атакуй его.

while True:
____hero.moveXY(35, 34)
____leftEnemy = hero.findNearestEnemy()

____if leftEnemy:
________hero.attack(leftEnemy)
________hero.attack(leftEnemy)

# Теперь иди к правому входу.
____hero.moveXY(60, 32)

# Найди правого врага.
____rightEnemy = hero.findNearestEnemy()

# Используй «if» для атаки, если справа есть враг.
____if rightEnemy:
________hero.attack(rightEnemy)
________hero.attack(rightEnemy)

10. Ферма Торнбуш
Посмотреть код задания
# Патрулируй входы в деревню.
# Построй ловушку («fire-trap»), когда увидишь огра.
# Не подорви крестьян!

while True:

____hero.moveXY(43, 50)
____top = hero.findNearestEnemy()
____if top:
________hero.buildXY(«fire-trap», 43, 50)

____hero.moveXY(25, 34)
____left = hero.findNearestEnemy()
# Проверь существование `left`.
____if left:
# Построй ловушку на (25, 34), если есть враг.
________hero.buildXY(«fire-trap», 25, 34)

____hero.moveXY(43, 20)
# Установи переменную `bottom` для нижнего врага.
____bottom = hero.findNearestEnemy()
# Проверь существование `bottom`.
____if bottom:
# Построй ловушку, если есть враг.
________hero.buildXY(«fire-trap», 43, 20)

11. Спина к спине
Посмотреть код задания
# Оставайся по центру и защищай!

while True:
____enemy = hero.findNearestEnemy()
____if enemy:
# Или атакуй врага…
________hero.attack(enemy)
________hero.attack(enemy)
____else:
# … или возвращайся назад на оборонительную позицию.
________hero.moveXY(40, 33)

12. Лагерь Огров
Посмотреть код задания
# Если есть враг — атакуй его.
# В противном случае атакуй сундук!

while True:
# Используй if/else.
____enemy = hero.findNearestEnemy()
____if enemy:
________hero.attack(enemy)
________hero.attack(enemy)
____else:
________hero.attack(«Chest»)
13. Лесной рубщик
Посмотреть код задания
# Используй новую способность `cleave` как можно чаще.

hero.moveXY(23, 23)

while True:
____enemy = hero.findNearestEnemy()
____if enemy:
________if hero.isReady(«cleave»):
# Руби врагов!
____________hero.cleave(enemy)
________else:
# Иначе (если `cleave` не готов) просто атакуй.
____________hero.attack(enemy)
____________hero.attack(enemy)
14. Эльзевейр
Посмотреть код задания
# У рубки 10-секундный интервал.
# Используй выражение `else`, чтобы защитить себя во время перезарядки.

while True:
____enemy = hero.findNearestEnemy()
____if hero.isReady(«cleave»):
________hero.cleave()
# Впиши `else:` чтобы чем-то заняться, пока рубка не готова:
____else:
# Убедись, что атакуешь врага:
________hero.attack(enemy)
15. Бэквудское противостояние
Посмотреть код задания
# Манчкины атакуют!
# Враги периодически атакуют группами.
# Если можешь, используй cleave, чтобы уничтожить толпу врагов.

while True:
____enemy = hero.findNearestEnemy()
# Используй if с isReady, чтобы проверить «cleave»:
____if enemy:
________if hero.isReady(«cleave»):
# Руби! (cleave)
____________hero.cleave(enemy)
________else:
# Если cleave еще не готова:
# Атакуй ближайшего огра!
____________hero.attack(enemy)
15а. Бэквудское противостояние A
Посмотреть код задания
# Эти манчкины испугались героя!
# Тем не менее, скопившаяся группа манчкинов осмелится и нападёт! Будь начеку!
# Всякий раз, когда возможно, руби начисто толпы врагов.

while True:
____enemy = hero.findNearestEnemy()
# Используй if с isReady, чтобы проверить «cleave»:
____if enemy:
________if hero.isReady(«cleave»):
# Руби! (cleave)
____________hero.cleave(enemy)
________else:
# Если «cleave» еще не готова:
# Атакуй ближайшего огра!
____________hero.attack(enemy)
15b. Бэквудское противостояние B
Посмотреть код задания
# Эти манчкины испугались героя!
# Тем не менее, скопившаяся группа манчкинов осмелится и нападёт! Будь начеку!
# Всякий раз, когда возможно, руби начисто толпы врагов.

while True:
____enemy = hero.findNearestEnemy()
# Используй выражение `if` для проверки готовности рубки («cleave»).
____if hero.isReady(«cleave»):
# Руби!
________hero.cleave(enemy)
# Иначе, если `cleave` не готова:
____else:
# Атакуй ближайшего огра!
________hero.attack(enemy)

16. Дальномер
Посмотреть код задания
# Огры шныряют по лесу!
# Используй метод `distanceTo`, чтобы определить, где находятся враги.
# Скажи расстояние до каждого врага своей артиллерии!
enemy1 = «Gort»
distance1 = hero.distanceTo(enemy1)
hero.say(distance1)

enemy2 = «Smasher»
distance2 = hero.distanceTo(enemy2)
# Скажи переменную `distance2`!
hero.say(distance2)
# Не стреляй в друзей!
friend3 = «Charles»

# The last ogre.
enemy4 = «Gorgnub»
# Определи и передай расстояние до остальных врагов:
distance3 = hero.distanceTo(enemy4)
hero.say(distance3)
17. Защита крестьянина
Посмотреть код задания
while True:
____enemy = hero.findNearestEnemy()
____distance = hero.distanceTo(enemy)
____if distance < 10:
# Атакуй, когда они окажутся рядом с крестьянином.
________hero.attack(enemy)
# Иначе стой рядом с Виктором! Используй `else`.
____else:
________hero.moveXY(40, 37)
18. Рой Манчкинов
Посмотреть код задания
while True:
# Проверь расстояние до ближайшего врага.
____nearestEnemy = hero.findNearestEnemy()
____distance = hero.distanceTo(nearestEnemy)
# Если он ближе 10 метров, руби!
____if distance<10:
________if hero.isReady(«cleave»):
____________hero.cleave(nearestEnemy)
________else:
____________hero.attack(nearestEnemy)
# Иначе атакуй сундук («Chest» ).
____else:
________hero.attack(«Chest»
19. Безумные Манчкины
Посмотреть код задания
# Ещё один сундук на поле ждет героя!
# Атакуй сундук, чтобы взломать его.
# Некоторые манчкины не будут спокойно ждать, пока ты атакуешь его!
# Защищай себя, если манчкин подберётся слишком близко.
while True:
____enemy = hero.findNearestEnemy()
____distance = hero.distanceTo(enemy)
____if hero.isReady(«cleave»):

# Приоритет способности `cleave`, если она готова:
________hero.cleave(enemy)
____elif distance < 5:

# Атакуй ближайшего манчкина, который подберётся близко:
________hero.attack(enemy)

____else:
# В противном случае, пытайтся взломать сундук.
# Используйте название сундука «Chest» как цель атаки.
____hero.attack(«Chest»)

20. Роща танцующего пламени
Посмотреть код задания
# Злой Камень на этом уровне — это зло! Спасайтесь от него убегая в противоположную сторону.

while True:
____evilstone = hero.findNearestItem()
____if evilstone:
________pos = evilstone.pos
________if pos.x == 34: # == значит «равно»
# Если Злой Камень слева — бегите вправо.
____________hero.moveXY(46, 22)
________else:
# Если Злой Камень справа — бегите влево.
____________hero.moveXY(34, 23)
____else:
# Если Злого Камня нет — бегите на середину.
____hero.moveXY(40, 22)
21. Покой в движении
Посмотреть код задания
# Ты можешь вложить одно выражение `if` внутрь другого.
# Будь внимателен к тому, как выражения `if` взаимодействуют друг с другом.
# Убедись, что всё в порядке с отступами!
# Полезно начать с одного внешнего `if/else`,
# используя комментарии в качестве «заполнителей» для внутреннего `if/else`:
while True:
____enemy = hero.findNearestEnemy()
# Если враг рядом, то…
____if enemy:
# Создай переменную для расстояния с помощью `distanceTo`.
________distanceTo=hero.distanceTo(enemy)

# Если до врага меньше 5 метров, атакуй.
________if distanceTo < 5:
____________hero.attack(enemy)
# В противном случае (враг далеко) используй `shield`.
________else:
____________hero.shield()

# Иначе (если нет врагов)…
____else:
# … тогда двигайся обратно к Х.
________hero.moveXY(40, 34)

22. Защита Агриппы
Посмотреть код задания
while True:
____enemy = hero.findNearestEnemy()
____if enemy:

# Замени это своим кодом.
# Определи расстояние до противника с помощью `distanceTo`.

________distance = hero.distanceTo(enemy)
# Если дистанция меньше 5 метров...
________if distance<5:
# ... если `cleave` готово, руби!
____________if hero.isReady("cleave"):
________________hero.cleave(enemy)

# ... или же просто атакуй.
____________else:
________________hero.attack(enemy)

23. Деревенский бродяга
Посмотреть код задания
# Это определяет функцию с именем `findAndAttackEnemy`
def findAndAttackEnemy():
____enemy = hero.findNearestEnemy()
____if enemy:
________hero.attack(enemy)

# Этот код не является частью функции.
while True:
# Теперь ты можешь патрулировать деревню, используя `findAndAttackEnemy`
____hero.moveXY(35, 34)
____findAndAttackEnemy()
# Теперь иди к правому входу.
____hero.moveXY(60, 31)
# Используй `findAndAttackEnemy`
____findAndAttackEnemy()
24. Деревенский смотритель
Посмотреть код задания
# Эта функция атакует ближайшего врага.
def findAndAttackEnemy():
____enemy = hero.findNearestEnemy()
____if enemy:
________hero.attack(enemy)

# Определи функцию для рубки врагов (когда способность готова).
def findAndCleaveEnemy():
# Найди ближайшего врага:
____enemy = hero.findNearestEnemy()
# Если враг существует:
____if enemy:
# И если `cleave` готово:
________if hero.isReady("cleave"):
# Время рубить!
____________hero.cleave(enemy)
________else:
____________hero.attack(enemy)
____________hero.attack(enemy)

# В главном цикле патрулируй, руби и атакуй.
while True:
# Двигайся на патрульную точку, руби и атакуй.
____hero.moveXY(35, 34)
____findAndCleaveEnemy()
____findAndAttackEnemy()

# Двигайся к другой точке.
____hero.moveXY(60, 31)
# Используй функцию `findAndCleaveEnemy`.
____findAndCleaveEnemy()
# Используй функцию `findAndAttackEnemy`.
____findAndCleaveEnemy()
25. Деревенский защитник
Посмотреть код задания
# Манчкины наступают! Защити поселение!
# Определи собственную функцию, чтобы сразиться с врагом!

def cleaveOrAttack():
# Внутри функции найди врага, затем руби или атакуй его.
____ogre = hero.findNearestEnemy()
____if ogre:
________if hero.isReady("cleave"):
____________hero.cleave(ogre)

# Else attack the ogre:
________else:
____________hero.attack(ogre)
____________hero.attack(ogre)

# Двигайся между патрульными точками и вызывай функцию.
while True:
____hero.moveXY(35, 34)

# Используй функцию `cleaveOrAttack`, которая определена выше.
____cleaveOrAttack()

____hero.moveXY(47, 27)

# Повторно вызови функцию.
____cleaveOrAttack()

____hero.moveXY(60, 31)

# Повторно вызови функцию.
____cleaveOrAttack()
26. Прекрасный монетный двор
Посмотреть код задания
# Батраки пытаются украсть монеты!
# Напиши функцию, чтобы раздавить их, прежде чем они смогут взять монеты.

def pickUpCoin():
____coin = hero.findNearestItem()
____if coin:
________hero.moveXY(coin.pos.x, coin.pos.y)

# Напиши функцию attackEnemy ниже.
# Найди ближайшего противника и атакуй их, если он существует!

def attackEnemy():
____enemy = hero.findNearestEnemy()
____if enemy:
________distance = hero.distanceTo(enemy)
________if distance<5:
____________hero.attack(enemy)
____________hero.attack(enemy)
while True:

____attackEnemy()
____pickUpCoin()

27. Бэквудская развилка
Посмотреть код задания
# Используй функцию `checkAndAttack`, чтобы сделать код более читаемым.
# Эта функция имеет параметр.
# Параметр - способ передать данные в функцию.

def checkAndAttack(target):
# Параметр `target` - это просто переменная!
# В него передаётся значение аргумента при вызове функции
.
____if target:
________hero.attack(target)
____hero.moveXY(43, 34)

while True:
____hero.moveXY(58, 52)
____topEnemy = hero.findNearestEnemy()

# Using the checkAndAttack function with the topEnemy variable.
____checkAndAttack(topEnemy)
# Иди к нижней отметке Х.

____hero.moveXY(58, 52)
# Создай переменную `bottomEnemy` и найди ближайшего врага.
____bottomEnemy = hero.findNearestEnemy
# Используй функцию `checkAndAttack` с аргументом `bottomEnemy`
____checkAndAttack(bottomEnemy)
28. Расхититель гробниц
Посмотреть код задания
# Забытая гробница в лесу!
# Но огры следуют по пятам.
# Взломай гробницу, защищаясь от манчкинов.
# Эта функция должна атаковать врага, если он существует, иначе атаковать дверь!

def checkToDefend(target):
# Проверь, существует ли цель
____enemy = hero.findNearestEnemy()
____if enemy:

# Если да, атакуй цель
____hero.attack(enemy)
# Используй `else`, чтобы делать что-нибудь, пока нет цели
____else:
# Иначе атакуй дверь ("Door")
________hero.attack("Door")

while True:
____enemy = hero.findNearestEnemy()
____checkToDefend(enemy)

29. Призрак гробницы
Посмотреть код задания
# Единственный выход заблокирован ограми.
# Прячься от скелетов и победи огров один на один.
# Эта функция должна помочь атаковать врага и прятаться.

def hitOrHide(target):
# Если 'target' существует:
____if target:
# Атакуй 'target'.
________hero.attack(target)
________hero.attack(target)

# Затем иди к красной метке.
____hero.moveXY(32, 15)
while True:
____enemy = hero.findNearestEnemy()
____hitOrHide(enemy)

30. Игра в прятки
Посмотреть код задания
# Собери 4 кристалла, чтобы победить драчуна.
# Если нашёл кристалл -- спрячься.

def checkTakeHide(item):
____if item:

# Здесь что-то есть, возьми.
________hero.moveXY(item.pos.x, item.pos.y)
# Теперь двигайся в центр лагеря (40, 34).
____hero.moveXY(40, 34)
while True:

# Двигайся на верхнюю правую отметку.
____hero.moveXY(68, 56)
# Поищи камень там.
____lightstone = hero.findNearestItem()
# Вызови функцию `checkTakeHide` с аргументом `lightstone`.
____checkTakeHide(lightstone)
# Двигайся на верхнюю левую отметку.
____hero.moveXY(12, 56)
# Поищи камень.
____lightstone = hero.findNearestItem()
# Вызови функцию `checkTakeHide`.
# Передай результат поиска в качестве аргумента.

____checkTakeHide(lightstone)
31. Лесные шахтеры
Посмотреть код задания
# Единственный выход заблокирован ограми.
# Прячься от скелетов и победи огров один на один.
# Эта функция должна помочь атаковать врага и прятаться.

def hitOrHide(target):
# Если 'target' существует:
____if target:
# Атакуй 'target'.
________hero.attack(target)
________hero.attack(target)

# Затем иди к красной метке.
____hero.moveXY(32, 15)
while True:
____enemy = hero.findNearestEnemy()
____hitOrHide(enemy)

32. Призрак гробницы
Посмотреть код задания
# Единственный выход заблокирован ограми.
# Прячься от скелетов и победи огров один на один.
# Эта функция должна помочь атаковать врага и прятаться.

def hitOrHide(target):
# Если 'target' существует:
____if target:
# Атакуй 'target'.
________hero.attack(target)
________hero.attack(target)

# Затем иди к красной метке.
____hero.moveXY(32, 15)
while True:
____enemy = hero.findNearestEnemy()
____hitOrHide(enemy)

33. Призрак гробницы
Посмотреть код задания
# Единственный выход заблокирован ограми.
# Прячься от скелетов и победи огров один на один.
# Эта функция должна помочь атаковать врага и прятаться.

def hitOrHide(target):
# Если 'target' существует:
____if target:
# Атакуй 'target'.
________hero.attack(target)
________hero.attack(target)

# Затем иди к красной метке.
____hero.moveXY(32, 15)
while True:
____enemy = hero.findNearestEnemy()
____hitOrHide(enemy)

34. Призрак гробницы
Посмотреть код задания
# Единственный выход заблокирован ограми.
# Прячься от скелетов и победи огров один на один.
# Эта функция должна помочь атаковать врага и прятаться.

def hitOrHide(target):
# Если 'target' существует:
____if target:
# Атакуй 'target'.
________hero.attack(target)
________hero.attack(target)

# Затем иди к красной метке.
____hero.moveXY(32, 15)
while True:
____enemy = hero.findNearestEnemy()
____hitOrHide(enemy)