-
-
Save a1ip/2ea627a4bf6067a63634 to your computer and use it in GitHub Desktop.
Code for plan()
method is here:
# Move to the gem.
# Don't touch the walls!
# Type your code below.
@moveRight()
@moveDown()
@moveRight()
Code for plan()
method is here:
# Grab all the gems using your movement commands.
@moveRight()
@moveDown()
@moveUp()
@moveUp()
@moveRight()
Code for plan()
method is here:
# Evade the munchkin. Grab the gems.
@moveRight()
@moveUp()
@moveRight()
@moveDown()
@moveRight()
Code for plan()
method is here:
@moveRight()
@moveUp()
@moveRight()
@moveRight()
@moveDown()
@moveDown()
@moveUp()
@moveRight()
Code for plan()
method is here:
# Your goal is to get to the right side of the map alive.
# You don't need to fight the ogres, just move! Your allies will protect you.
@moveRight()
@moveRight()
@moveUp()
@moveRight()
@moveRight()
@moveRight()
@moveDown()
@moveRight()
@moveDown()
@moveRight()
Code for plan()
method is here:
# Defend against Brak and Treg!
# You must attack small ogres twice.
@moveRight()
@attack "Brak"
@attack "Brak"
@moveRight()
@attack "Treg"
@attack "Treg"
@moveRight()
@moveRight()
Code for plan()
method is here:
# Defeat the ogres.
# Remember that they each take two hits.
@attack "Rig"
@attack "Rig"
@attack "Gurt"
@attack "Gurt"
@attack "Ack"
@attack "Ack"
Code for plan()
method is here:
# Use arguments with move statements to move farther.
@moveRight 3
@moveUp()
@moveRight()
@moveDown 3
@moveRight 2
// Use arguments with move statements to move farther. | |
this.moveRight(3); | |
this.moveUp(); | |
this.moveRight(); | |
this.moveDown(3); | |
this.moveRight(2); |
Code for plan()
method is here:
# You need a password to open the Library Door!
# The password is in the Help Guide!
# Click on the blue "Help" button under the code window to open the Level Help Guide.
# Most levels have a Help Guide with extra information. If you get stuck on a level, be sure to click Help!
@moveRight()
@say "Hush"
@moveRight()
Code for plan()
method is here:
# Code normally executes in the order it's written.
# Loops let you to repeat a block of code multiple times.
# Use tab or 4 spaces to indent the move lines under the loop.
loop
@moveRight()
# Add a moveLeft command to the loop here
@moveLeft()
// Code normally executes in the order it's written. | |
// Loops let you to repeat a block of code multiple times. | |
while(true) { | |
this.moveRight(); | |
// Add a moveLeft command to the loop here | |
this.moveLeft(); | |
} |
Code for plan()
method is here:
# The code in this loop will repeat forever.
loop
# Move right
@moveRight()
# Move up
@moveUp()
# Move left
@moveLeft()
# Move down
@moveDown()
// The code in this loop will repeat forever. | |
while(true) { | |
// Move right | |
this.moveRight(); | |
// Move up | |
this.moveUp(); | |
// Move left | |
this.moveLeft(); | |
// Move down | |
this.moveDown(); | |
} |
Code for plan()
method is here:
# There may be something around to help you!
# First, move to the Cupboard.
@moveUp()
@moveRight 2
@moveDown 2
# Then, attack the "Cupboard" inside a loop.
loop
@attack "Cupboard"
Code for plan()
method is here:
# Loops are a better way of doing repetitive things.
loop
# Add commands in here to repeat.
@moveRight 2
@moveUp 2
Code for plan()
method is here:
# Use a loop to navigate the maze!
loop
@moveRight()
@moveUp()
@moveRight()
@moveDown()
Code for plan()
spell is here:
# Break down the door!
# It will take many hits, so use a loop.
loop
@attack "Door"
Code for plan()
method is here:
# You can use a variable like a nametag.
enemy1 = "Kratt"
enemy2 = "Gert"
enemy3 = "Ursa"
@attack enemy1
@attack enemy1
@attack enemy2
@attack enemy2
@attack enemy3
@attack enemy3
Code for plan()
method is here:
# Your hero doesn't know these enemy's names!
# The glasses give you the findNearestEnemy ability.
enemy1 = @findNearestEnemy()
@attack enemy1
@attack enemy1
enemy2 = @findNearestEnemy()
@attack enemy2
@attack enemy2
enemy3 = @findNearestEnemy()
@attack enemy3
@attack enemy3
Code for plan()
method is here:
# Create a second variable and attack it!
enemy1 = @findNearestEnemy()
@attack enemy1
@attack enemy1
enemy2 = @findNearestEnemy()
@attack enemy2
@attack enemy2
@moveRight()
@moveDown()
@moveRight()
Code for plan()
method is here:
@moveRight()
# You should recognize this from the last level.
enemy = @findNearestEnemy()
# Now attack the variable.
@attack enemy
@attack enemy
# And there's another room to clear!
@moveRight 2
@moveUp()
enemy = @findNearestEnemy()
@attack enemy
@moveRight()
Code for plan()
method is here:
# Use a loop to both navigate and attack.
loop
@moveRight()
@moveUp()
enemy = @findNearestEnemy()
@attack enemy
@attack enemy
@moveRight()
@moveDown 2
@moveUp()
Code for plan()
method is here:
# Build 3 fences to keep the ogres at bay!
@moveDown()
@buildXY "fence", 36, 34
@buildXY "fence", 36, 30
@buildXY "fence", 36, 26
loop
@moveRight()
Survive waves of enemies that get tougher each time you win. But if you lose, you'll have to wait a day to resubmit.
Code for level 1 plan()
method is here:
# Survive the waves of ogres.
# If you win, the level gets harder, and gives more rewards.
# If you lose, you must wait a day to re-submit.
# Each time you submit gives a new random seed.
loop
enemy = @findNearestEnemy()
if enemy
distance = @distanceTo(enemy)
if distance < 10 and @isReady('cleave')
@cleave enemy
else if distance < 5
@attack enemy
else
@moveXY enemy.pos.x, enemy.pos.y
else
item = @findNearestItem()
if item
@moveXY item.pos.x, item.pos.y
Code for level 2 plan()
method is here:
# Survive the waves of ogres.
# If you win, the level gets harder, and gives more rewards.
# If you lose, you must wait a day to re-submit.
# Each time you submit gives a new random seed.
loop
enemy = @findNearestEnemy()
if enemy
distance = @distanceTo(enemy)
if distance < 10 and @isReady('cleave')
@cleave enemy
else if distance < 3
@attack enemy
else
@move enemy.pos
else
item = @findNearestItem()
if item
@moveXY item.pos.x, item.pos.y
Code for level 3 plan()
method is here:
loop
flag = @findFlag()
item = @findNearest(@findItems())
enemy = @findNearest(@findEnemies())
thrower = @findNearest(@findByType('thrower'))
shaman = @findNearest(@findByType('shaman'))
if flag
@pickUpFlag flag
if thrower
enemy = thrower
if shaman
enemy = shaman
if item and @health < 200
@moveXY item.pos.x, item.pos.y
if enemy
while enemy.health > 0
if @health < 200
break
if @distanceTo(enemy) < 10 and @isReady('cleave')
@cleave enemy
else
@attack enemy
loop { | |
var flag = this.findFlag(); | |
var item = this.findNearest(this.findItems()); | |
var enemy = this.findNearest(this.findEnemies()); | |
var thrower = this.findNearest(this.findByType("thrower")); | |
var shaman = this.findNearest(this.findByType("shaman")); | |
if (flag) { | |
this.pickUpFlag(flag); | |
} | |
if (thrower) {enemy = thrower;} | |
if (shaman) {enemy = shaman;} | |
if (item && this.health < 200) {this.moveXY(item.pos.x, item.pos.y);} | |
if (enemy) { | |
while (enemy.health > 0) { | |
if (this.health < 200) { | |
break; | |
} | |
this.attack(enemy); | |
} | |
} | |
} |
def moveTo(position, fast = True): | |
if(self.isReady("jump") and fast): | |
self.jumpTo(position) | |
else: | |
self.move(position) | |
summonTypes = ['paladin'] | |
def summonTroops(): | |
type = summonTypes[len(self.built)%len(summonTypes)] | |
if self.gold > self.costOf(type): | |
self.summon(type) | |
def commandPaladin(paladin): | |
enemy = paladin.findNearest(self.findEnemies()) | |
if(paladin.canCast ("heal")): | |
target = None | |
if(self.health<self.maxHealth*0.6): | |
target = self | |
minHealth = 200 | |
for friend in self.findFriends(): | |
if friend.health < minHealth: | |
minHealth = friend.health | |
target = friend | |
if target: | |
self.command(paladin, "cast", "heal", target) | |
if enemy: | |
self.command(paladin, "attack", enemy) | |
else: | |
self.command(paladin, "move", self.pos) | |
def commandSoldier(soldier): | |
enemy = self.findNearest(self.findEnemies()) | |
thrower = self.findNearest(self.findByType("thrower")) | |
if thrower: | |
enemy = thrower | |
if enemy: | |
self.command(soldier, "attack", enemy) | |
else: | |
self.command(soldier, "move", self.pos) | |
def commandTroops(): | |
for friend in self.findFriends(): | |
if friend.type == 'paladin': | |
commandPaladin(friend) | |
elif friend.type == 'soldier' or friend.type == 'archer': | |
commandSoldier(friend) | |
def attack(target): | |
if self.canCast("chain-lightning", target) and self.distanceTo(target)<20: | |
self.cast("chain-lightning", target) | |
elif self.distanceTo(target)>10: | |
moveTo(target.pos) | |
elif self.isReady("bash"): | |
self.bash(enemy) | |
else: | |
self.attack(target) | |
loop: | |
item = self.findNearest(self.findItems()) | |
if item and self.health < 200: | |
self.move(item.pos) | |
summonTroops() | |
commandTroops() | |
enemy = self.findNearest(self.findEnemies()) | |
if enemy: | |
attack(enemy) |
Code for plan()
method is here:
# Escape the dungeon after you rescue the tortured peasant.
# You can hide behind the gargoyles.
# Killing the guards can have undesirable consequences.
# If you can loot all of the treasure, you may get an extra reward.
@moveXY 29, 83
@moveXY 46, 115
items = @findItems()
doors = @findByType('door')
door = @findNearest(doors)
@attack door
@moveXY 26, 101
@moveXY 66, 101
@moveXY 46, 81
@moveXY 46, 30
items = @findItems()
tar = @findNearest(items)
@moveXY tar.pos.x, tar.pos.y
items = @findItems()
tar = @findNearest(items)
@moveXY tar.pos.x, tar.pos.y
@attack 'South Vault Door'
@moveXY 84, 71
@attack 'Torture Room Door'
@attack 'Torture Master'
@say 'Come with me if you want to live!'
@moveXY 150, 9
@moveXY 84, 9
@moveXY 83, 81
@attack 'Exit Door'
@moveXY 152, 99
// Escape the dungeon after you rescue the tortured peasant. | |
// You can hide behind the gargoyles. | |
// Killing the guards can have undesirable consequences. | |
// If you can loot all of the treasure, you may get an extra reward. | |
this.moveXY(29, 83); | |
this.moveXY(46, 115); | |
var items = this.findItems(); | |
var doors = this.findByType("door"); | |
var door = this.findNearest(doors); | |
this.attack(door); | |
this.moveXY(26, 101); | |
this.moveXY(66, 101); | |
this.moveXY(46, 81); | |
this.moveXY(46, 30); | |
items = this.findItems(); | |
tar = this.findNearest(items); | |
this.moveXY(tar.pos.x, tar.pos.y); | |
items = this.findItems(); | |
tar = this.findNearest(items); | |
this.moveXY(tar.pos.x, tar.pos.y); | |
this.attack("South Vault Door"); | |
this.moveXY(84, 71); | |
this.attack("Torture Room Door"); | |
this.attack("Torture Master"); | |
this.say("Come with me if you want to live!"); | |
this.moveXY(150, 9); | |
this.moveXY(84, 9); | |
this.moveXY(83, 81); | |
this.attack("Exit Door"); | |
this.moveXY(152, 99); |
# Определите свои собственные простые функции перемещения. | |
# Определи moveRight | |
# Примечание: каждая функция должна двигать героя 12 на метров! | |
def moveRight(): | |
target = { "x": self.pos.x + 12, "y": self.pos.y } | |
while self.distanceTo(target) > 0: | |
self.move(target); | |
# Определи moveLeft | |
def moveLeft(): | |
target = { "x": self.pos.x - 12, "y": self.pos.y } | |
while self.distanceTo(target) > 0: | |
self.move(target); | |
# Определи moveUp | |
def moveUp(): | |
target = { "x": self.pos.x, "y": self.pos.y + 12} | |
while self.distanceTo(target) > 0: | |
self.move(target); | |
# Определи moveDown | |
def moveDown(): | |
target = { "x": self.pos.x, "y": self.pos.y - 12} | |
while self.distanceTo(target) > 0: | |
self.move(target); | |
# Теперь используй эти функции! | |
moveRight() | |
moveDown() | |
moveUp() | |
moveUp() | |
moveRight() |
Code for plan()
method is here:
# This is a long maze...
@moveRight 2
@moveUp 2
# Now you'll have to repeat the above steps two more times to get to the end of the maze...
@moveRight 2
@moveUp 2
@moveRight 2
@moveUp 2
This is an optional challenge level for experienced programmers who want to skip the early dungeon levels.
Code for plan()
method is here:
# Reach the end of the maze using move commands.
# Count how many gems you pick up, and then say the current count when near a fireball trap to disable it.
# The raven at the start will give you a password. Say the password near a door to open it.
# Kill ogres when you get near them.
# You can use a loop to repeat all of the instructions as needed.
# If you beat this level, you can skip to the Forest World!
@moveUp()
@moveRight 3
@moveUp()
@moveDown()
@moveRight()
@say "Swordfish"
@moveRight 2
@moveUp()
@say "1"
@moveUp 2
enemy = @findNearestEnemy()
@attack enemy
@attack enemy
@moveLeft 4
@moveUp 3
@moveRight 3
@moveUp()
@moveDown()
@moveRight()
@say "Swordfish"
@moveRight 2
@moveUp()
@say "2"
@moveUp 2
enemy = @findNearestEnemy()
@attack enemy
@attack enemy
@moveLeft 4
# Say "Open Sesame" and a door will open. | |
# Only doors near you will hear you. | |
# There is only one route without forks. | |
# The distance between each point is 24m. | |
sesame = "Open Sesame" | |
distance = 24 | |
previous = "start" | |
while True: | |
self.say(sesame) | |
# Check each direction to see if the path is clear. | |
# Be sure to check and record your previous direction! | |
# Up | |
if previous != "down" and self.isPathClear(self.pos, {"x": self.pos.x, "y": self.pos.y + distance}): | |
self.moveXY(self.pos.x,self.pos.y + distance) | |
previous = "up" | |
# Down | |
if previous != "up" and self.isPathClear(self.pos, {"x": self.pos.x, "y": self.pos.y - distance}): | |
self.moveXY(self.pos.x,self.pos.y - distance) | |
previous = "down" | |
# Left | |
if previous != "right" and self.isPathClear(self.pos, {"x": self.pos.x - distance, "y": self.pos.y}): | |
self.moveXY(self.pos.x - distance,self.pos.y) | |
previous = "left" | |
# Right | |
if previous != "left" and self.isPathClear(self.pos, {"x": self.pos.x + distance, "y": self.pos.y}): | |
self.moveXY(self.pos.x + distance,self.pos.y) | |
previous = "right" |
Код метода plan()
:
# Тебе нужен пароль, чтобы открыть дверь библиотеки.
# Пароль находится в "Советах"!
# Нажми на синюю кнопку "Советы" над окном кода.
# Если испытываешь затруднения, нажми кнопку "Советы"!
@moveRight()
# @say("Я не знаю пароль!") # ∆
@say "Hush"
@moveRight()
Код метода plan()
:
# @say "Какой же пароль?"
# Используй `say()`, чтобы его произнести.
# А пароль такой: "Achoo"
@say "Achoo"
@moveUp 2
Код метода plan()
:
# Освободи Патрика, который находится за "Weak Door".
@attack "Weak Door"
# Победи охранника по имени "Two".
@moveRight 2
@attack "Two"
@attack "Two"
# Собирай самоцветы.
@moveRight()
@moveDown()
Код метода plan()
:
# Циклы удобно использовать для повторяющихся участков кода.
while true
# Добавь сюда команды для повторения.
@moveRight 2
@moveUp 2
Код метода plan()
:
# Атакуй дверь!
# Потребуется много ударов, используй "while-true" цикл.
loop
@attack "Door"
# Выживи под напором огров. | |
# Если ты выиграл, то уровень становится сложнее, а награда за победу больше. | |
# Если ты проиграл, то следующая попытка даётся только через день. | |
# С каждым прохождением выполняется новая случайная расстановка. | |
while True: | |
flag = hero.findFlag(); | |
enemy = hero.findNearestEnemy() | |
item = hero.findNearestItem() | |
if flag: | |
hero.pickUpFlag(flag) | |
if item: | |
if hero.health < hero.maxHealth / 4: | |
hero.moveXY(item.pos.x, item.pos.y) | |
if enemy: | |
if hero.isReady("cleave"): | |
hero.cleave(enemy) | |
else: | |
hero.attack(enemy) |
# Выживи под напором огров. | |
# Если ты выиграл, то уровень становится сложнее, а награда за победу больше. | |
# Если ты проиграл, то следующая попытка даётся только через день. | |
# С каждым прохождением выполняется новая случайная расстановка. | |
summonTypes = ['soldier', 'soldier', 'griffin-rider', 'soldier', 'archer'] | |
def moveTo(position, fast=True): | |
if (hero.isReady("jump") and hero.distanceTo(position) > 10 and fast): | |
hero.jumpTo(position) | |
else: | |
hero.move(position) | |
def summonTroops(): | |
type = summonTypes[len(hero.built) % len(summonTypes)] | |
if hero.gold > hero.costOf(type): | |
hero.summon(type) | |
def commandTroops(): | |
for soldier in hero.findFriends(): | |
if enemy: | |
#hero.command(soldier, "attack", enemy) | |
hero.command(soldier, "defend", self) | |
def attack(target): | |
if (hero.distanceTo(target) > 20): | |
moveTo(target.pos) | |
elif hero.isReady("chain-lightning"): | |
hero.cast("chain-lightning", target) | |
elif hero.isReady("bash"): | |
hero.bash(target) | |
else: | |
hero.attack(target) | |
while True: | |
summonTroops() | |
commandTroops() | |
enemy = hero.findNearestEnemy() | |
item = hero.findNearestItem() | |
if hero.time < 35: | |
if item: | |
if hero.health < hero.maxHealth / 4: | |
if hero.isReady("jump"): | |
hero.jumpTo(item.pos) | |
hero.moveXY(item.pos.x, item.pos.y) | |
elif (enemy): | |
attack(enemy) | |
else: | |
hero.shield() |
Код метода plan()
:
# Пройди лабиринт менее чем за 5 строк кода.
while true
@moveRight 2
@moveDown()
Код метода plan()
:
@moveRight()
@attack "Chest"
@moveDown()
loop
@moveRight 3
@moveDown 3
Код метода plan()
:
# Там может оказаться что-то полезное!
# Сначала двигайся к шкафу.
@moveUp()
@moveRight 2
@moveDown 2
# Потом атакуй шкаф ("Cupboard") внутри цикла.
while true
@attack "Cupboard"
Код метода plan()
:
# Переменная - это контейнер с меткой, в которой хранятся данные.
# Эта переменная называется `someVariableName`
# Она содержит значение `"a string"`
someVariableName = "a string"
# Эта переменная называется `lolol`
# Это содержит число `42`
lolol = 42
# Создайте еще две переменные и присвойте им значения:
# Вы можете назвать их, как хотите, и сохранить в них любое значение!
# Используйте `=` для присвоения значения переменной.
book = "Bible"
man = "Christian"
# Переменная - это контейнер с меткой, в которой хранятся данные. | |
# Эта переменная называется `someVariableName` | |
# Она содержит значение `"a string"` | |
someVariableName = "a string" | |
# Эта переменная называется `lolol` | |
# Это содержит число `42` | |
lolol = 42 | |
# Создайте еще две переменные и присвойте им значения: | |
# Вы можете назвать их, как хотите, и сохранить в них любое значение! | |
# Используйте `=` для присвоения значения переменной. | |
book = "Bible" | |
man = "Christian" |
// Используйте все навыки программирования, чтобы не дать мячам приземлиться. | |
// Ты можешь бить по мячу в воздухе с помощью метода attack() | |
// Попробуй использовать наименьшее количество строк кода. | |
for (let i of [3, -3, 3, -3, 3, -3, 3, -3, 3, -3, 3, -3]) { | |
hero.attack('ball'); | |
hero.attack('ball2'); | |
hero.moveRight(i); | |
} |
# Используйте все навыки программирования, чтобы не дать мячам приземлиться. | |
# Ты можешь бить по мячу в воздухе с помощью метода attack() | |
# Попробуй использовать наименьшее количество строк кода. | |
for i in [3, -3, 3, -3, 3, -3, 3, -3, 3, -3, 3, -3]: | |
hero.attack('ball') | |
hero.attack('ball2') | |
hero.moveRight(i) |
// Выйдите из лабиринта, переместившись на отметку X. | |
// Постарайтесь собрать как можно больше монет. | |
// | |
hero.attack("Treasure Chest"); | |
hero.moveRight(); | |
hero.moveLeft(2); | |
hero.moveDown(); | |
hero.moveRight(3); | |
hero.attack("Wicket"); | |
hero.moveRight(2); | |
hero.moveLeft(2); | |
while(true) { | |
hero.moveUp(2); | |
var enemy = hero.findNearestEnemy(); | |
hero.attack(enemy); | |
hero.moveLeft(2); | |
hero.moveRight(2); | |
hero.moveDown(); | |
hero.moveRight(); | |
hero.moveUp(); | |
hero.moveRight(); | |
} |