Course Solution Cs1 Python _ Codecombat.pdf

  • Uploaded by: Ricardo Jimenez
  • 0
  • 0
  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Course Solution Cs1 Python _ Codecombat.pdf as PDF for free.

More details

  • Words: 6,364
  • Pages: 90
Introducción a las Ciencias de la computación Python Aprenda sintaxis básica, bucles mientras y el entorno CodeCombat.

Tabla de contenidos 1. Calabozos de Kithgard 2. Gemas en lo profundo. 3. Guardia de la sombra 3a. Sentido Antikorario 3b. Pasadizos de Kithgard Concept Challenge. Careful Steps 4. Mina Enemiga 4a. Interrupción Ilusoria 4b. Joyero Olvidadizo Concept Challenge. Long Steps

5. Nombres Verdaderos 5a. Ventajas a tu Favor 5b. La Espada en Alto Concept Challenge. Dangerous Steps Combo Challenge. Sleep Hour 6. Los comentarios de la celda 7. Bibliotecario de Kithgard 8. El prisionero 9. Baile de Fuego 10. Laberinto encantado 11. Descendiendo mas allá 11a. Riddling Kithmaze 11b. Aura Radiante Concept Challenge. Loop Warehouse 12. La puerta del terror 13. Hack and Dash 14. Las Alacenas de Kithgard 14a. Cupboards of Kithgard A 14b. Cupboards of Kithgard B 15. Enemigo Conocido 16. Maestro de Nombres 16a. Humilde Kithmen 16b. Acortando Distancia Concept Challenge. Master Of Names Debug 17. El Laberinto Final Combo Challenge. Safe Place 18. Puertas de Kithgard 19. Wakka Maul

#1. Calabozos de Kithgard

Level Overview and Solutions Toma la gema y escapa del calabozo, pero no toques nada más. En este nivel aprenderás los movimientos básicos de tu héroe.

Intro

¡Guia a tu héroe escribiendo un programa!

Escribe el código en el editor a la derecha, y tu héroe va a seguir tus instrucciones. Mueve tu héroe por el corredor sin tocar las paredes.

Código predeterminado # Muévete hacia la gema. # ¡No toques las paredes! # Escribe tu código abajo. hero.moveRight()

Vista global ¡Empecemos! Si nuestro héroe (tú) no se mueve, tendremos un problema. Para escapar del calabozo, es necesario moverse. Así que aprendamos a movernos Dado que tu eres el heroe, puedes referirte al heroe con: hero

Esto significa que cada vez que escribas esta palabra clave dentro del editor de código, te estas refiriendo a tí, el heroe del juego. Ahora que sabes como referirte a tí mismo en el juego, puedes darle instrucciones a tu heroe así: hero.moveDown() hero.moveRight()

Para completar este nivel: mueve a la derecha, abajo y a la derecha nuevamente para tomar la gema!

Solo necesitas tres líneas de código para vencer este nivel. El código que escribes aquí es muy similar al código que escribirías para decir a la computadora como hacer todo tipo de cosas, desde reproducir música a mostrar una página web. ¡Estás dando tus primeros pasos para convertirte en programador!

Calabozos de Kithgard Solución # Muévete hacia la gema. # ¡No toques las paredes! # Escribe tu código abajo. hero.moveRight() hero.moveDown() hero.moveRight()

#2. Gemas en lo profundo.

Level Overview and Solutions Rápidamente recolecta las gemas; las necesitarás.

Intro

Recuerde cómo moverse, es importante:

self.moveRight()

Código predeterminado # Toma todas las gemas usando tus comandos de movimiento. hero.moveRight()

Vista global ¿Puedes recordar la lección del último nivel? Esto será lo mismo, pero necesitarás moverte más. Recuerda, hero

se refieren a ti, el heroe. Cuando te mueves, sólo puedes ir hasta el siguiente cuadrado (mira por las pequeñas marcas en el suelo), por lo tanto necesitarás hacer moveUp dos veces seguidos para llegar a lo alto del nivel desde el fondo. O puedes ingresar un número como parámetro al comando de movimiento, para indicarle a tu héroe que se mueva más de un espacio a la vez. Por ejemplo, puedes mover dos veces así: hero.moveUp(2)

Gemas en lo profundo. Solución

# Toma todas las gemas usando tus comandos de movimiento. hero.moveRight() hero.moveDown() hero.moveUp() hero.moveUp() hero.moveRight()

#3. Guardia de la sombra

Level Overview and Solutions Evade al ogro para coger las gemas y llegar al otro lado a salvo. ¡Cuidado con los pinchos!

Intro

Cúbrete para evitar ser visto.

Código predeterminado # Mantente fuera de la vista del ogro. Recolecta las gemas. hero.moveRight()

Vista global Todo esto es acerca de las habilidades de sigilo. Todavía no tienes un arma, por lo que no puedes luchar contra el Ogro munchkin que hace guardia en el camino. En lugar de eso, intenta moverte por detras de la estatua para que no pueda verte. Entonces podras recolectar las gemas sin ser detectado.

Guardia de la sombra Solución # Mantente fuera de la vista del ogro. Recolecta las gemas. hero.moveRight() hero.moveUp() hero.moveRight() hero.moveDown() hero.moveRight()

#3a. Sentido Antikorario

Level Overview and Solutions Mantene fuera de la vista de la ronda Orgo.

Intro Avoid the Munchkins by picking your path carefully!

Código predeterminado # Evita los ogros y recoge la gema.

Vista global A veces todo depende de sincronización. Toma la gema, pero mueve de la misma manera de la ronda Orgo, para que no te vean. Puedes arrastrar la línea del tiempo para ver que paso la última vez ejecutaste tu código.

Sentido Antikorario Solución

# Evita los ogros y recoge la gema. hero.moveDown(2) hero.moveRight() hero.moveUp() hero.moveRight()

#3b. Pasadizos de Kithgard

Level Overview and Solutions Dos pasillos, una solución. El tiempo es esencial.

Intro Time your movement carefully to avoid the patrol!

Código predeterminado # Evita ser visto por los ogros.

Vista global Tal vez aún no tienes las habilidades wait o attack , así que tendrás que usar tu ingenio para resolver el puzzle. ¿Cómo te puedes mover de forma que no cruzes el pasadizo al mismo tiempo que los ogros enanos?

Pasadizos de Kithgard Solución # Evita ser visto por los ogros. hero.moveRight() hero.moveLeft() hero.moveRight(2)

#Concept Challenge. Careful Steps

Level Overview and Solutions Intro

This is a CONCEPT challenge. It's time to check your knowledge of basic commands. Collect all the gems and return to the exit, which is marked with the red X mark.

Código predeterminado # This is a CONCEPT challenge about basic syntax. # Collect all gems and return to the exit (the red X). # Avoid the spikes.

Vista global Sorry, no hints here :-( This is where you use what you've learned in the previous levels. If you have problems with this task, go back and review the past few levels to make sure you understand them!

Careful Steps Solución

# This is a CONCEPT challenge about basic syntax. # Collect all gems and return to the exit (the red X). # Avoid the spikes. hero.moveUp() hero.moveRight() hero.moveDown() hero.moveRight() hero.moveLeft() hero.moveDown() hero.moveUp() hero.moveUp() hero.moveLeft() hero.moveDown() hero.moveLeft() hero.moveLeft()

#4. Mina Enemiga

Level Overview and Solutions Avanza cauteloso, ¡el peligro está por doquier!

Intro

Puedes usar argumentos para optimizat tu codigo. En vez de: hero.moveRight() hero.moveRight()

Puedes usar:

hero.moveRight(2)

Código predeterminado # Usa parámetros con declaraciones de movimiento para moverte más lejos. hero.moveRight(3)

Vista global El suelo está plagado de minas, pero hay un camino seguro hasta la gema. Cuando llamas a una funcion cómo moveRight() a veces puedes darle información extra para cambiar lo que hace. Esta información se conoce como "argumentos" o "parámetros". Puedes darle un parámetro a moveRight() tal que así: moveRight(3) . Esto le dice a moveRight() que mueva a tu héroe 3 espacios a la derecha en vez de 1.

Mina Enemiga Solución # Usa parámetros con declaraciones de movimiento para moverte más lejos. hero.moveRight(3) hero.moveUp() hero.moveRight() hero.moveDown(3) hero.moveRight(2)

#4a. Interrupción Ilusoria

Level Overview and Solutions Distrae a los guardias, después escapa.

Intro Step on the Red X to launch the decoy. Move to the gem and escape!

Código predeterminado # Usa el señuelo para distraer a los guardias pisando la X.

Vista global No podrás escabullirte de los guardias a menos que esten distraídos. Afortunadamente, alguien dejó un señuelo cerca. Pisando la X activarás el señuelo. Consejo: Puedes moverte varios espacios pasando parámetros al comando move, por ejemplo moveRight(3) .

Interrupción Ilusoria Solución

# Usa el señuelo para distraer a los guardias pisando la X. hero.moveRight() hero.moveDown(2) hero.moveUp(2) hero.moveRight(3)

#4b. Joyero Olvidadizo

Level Overview and Solutions ¡Existen gemas dispersas en todos los calabozos de Kithgard!

Intro Collect the gems by using your move commands! hero.moveRight() hero.moveDown()

Código predeterminado # Recolecta las gemas y ve a la salida.

Vista global Este nivel requiere varios comandos, asegurate de usar la funcion autocompletar para escribir tu código mas rapido. Puedes escribir R, Enter para autocompletar un comando moveRight. Después de que hayas practicado los movimiento simples con este nivel, ¡será tiempo de aprender a atacar!

Joyero Olvidadizo Solución

# Recolecta las gemas y ve a la salida. hero.moveRight() hero.moveDown() hero.moveRight(2) hero.moveUp() hero.moveRight()

#Concept Challenge. Long Steps

Level Overview and Solutions Intro

This is a CONCEPT Challenge about arguments. Collect all the gems and escape from the dungeon (the red arrow marks the exit). Use no more than 7 commands. You will need to use arguments with your movement commands!

Código predeterminado ¡Próximamente!

Vista global ¡Próximamente!

Long Steps Solución # <%= challenge %> # <%= grab_gems_and_escape %> # <%= limit7 %> # <%= use_arg %> hero.moveRight(1) hero.moveUp(3) hero.moveRight(2) hero.moveDown(3) hero.moveLeft(1) hero.moveUp(2) hero.moveRight(3)

#5. Nombres Verdaderos

Level Overview and Solutions Conoce el verdadero nombre de los enemigos para vencerlos.

Intro

Asegurate de atacar a cada ogro dos veces. ¡Las mayúsculas y las minúsculas importan!

Código predeterminado # ¡Defiendete de Brak y Treg! # Necesitas atacar a los pequeños ogros dos veces. hero.moveRight() hero.attack("Brak") hero.attack("Brak")

Vista global Tene en mente algunas cosas para superar este nivel: 1. Necesitas atacar a cada ogro dos veces para derrotarlo. 2. Escribe el nombre apropiadamente, ¡con mayúscula donde corresponda! "Brak" y "Treg" . 3. Pon los nombres entre comillas para marcarlos como cadenas. Cadenas son un tipo de dato de programación. Representa un texto. 4. Después de que mates a "Brak" y "Treg" , muevete a la derecha para recolectar la gema. 5. No es un problema si mueres; siempre puedes volver a intentarlo.

Nombres Verdaderos Solución # ¡Defiendete de Brak y Treg! # Necesitas atacar a los pequeños ogros dos veces. hero.moveRight() hero.attack("Brak") hero.attack("Brak") hero.moveRight() hero.attack("Treg") hero.attack("Treg")

#5a. Ventajas a tu Favor

Level Overview and Solutions Dos ogros bloquean tu camino fuera del calabozo.

Intro ¡Próximamente!

Código predeterminado # Ataca ambos ogros y toma la gema. hero.moveRight() hero.attack("Krug") hero.attack("Krug")

Vista global Recuerde a atacar ogros dos veces, y escribir su nombre con mayúscula en comillas: "Krug" y "Grump". Si compras una espada poderosa, podrías matar a ogros en solo un ataque.

Ventajas a tu Favor Solución

# Ataca ambos ogros y toma la gema. hero.moveRight() hero.attack("Krug") hero.attack("Krug") hero.moveRight() hero.moveUp() hero.attack("Grump") hero.attack("Grump") hero.moveLeft() hero.moveLeft()

#5b. La Espada en Alto

Level Overview and Solutions Aprende a equiparte para el combate.

Intro Ataca a cada ogro por nombre. ¡Recuerda, cada ogro necesita dos golpes!

Código predeterminado # Vence a los ogros. # Recuerda que cada uno necesita dos golpes.

Vista global ¡Asegurate de tener suficiente armadura para ganar esta batalla! Deberías comprar el Tarnished Bronze Breastplate en la tienda. Recuerda, cada ogro requiere dos golpes para matarlo. Intenta matarlos en el orden que vienen hacia tí asi no lanzaran golpes extras.

La Espada en Alto Solución

Complete Solution

Partial Solution 1

# Vence a los ogros. # Recuerda que cada uno necesita dos golpes. hero.attack("Rig") hero.attack("Rig") hero.attack("Gurt") hero.attack("Gurt") hero.attack("Ack") hero.attack("Ack")

#Concept Challenge. Dangerous Steps

Level Overview and Solutions Intro

This is a Concept Challenge: use strings to defeat ogres by name.

Código predeterminado # Defeat the ogres using their names. hero.moveRight(); # Defeat the first pair of ogres. hero.moveRight(2); # Defeat the second pair of ogres.

Vista global ¡Próximamente!

Dangerous Steps Solución # Defeat the ogres using their names. hero.moveRight(); # Defeat the first pair of ogres. hero.attack("Sog"); hero.attack("Sog"); hero.attack("Gos"); hero.attack("Gos"); hero.moveRight(2); # Defeat the second pair of ogres. hero.attack("Kro"); hero.attack("Kro"); hero.attack("Ergo"); hero.attack("Ergo");

#Combo Challenge. Sleep Hour

Level Overview and Solutions Intro This is a COMBO challenge level! Complete the level goals and at least one of the concept goals using the programming skills you've learned so far: Basic Commands Movement Arguments Strings If you can, complete ALL the goals.

Código predeterminado # This is a COMBO challenge level. # Defeat ogres, collect gems, and escape to the red X # using strings and movement arguments!

Vista global Don't walk over the piles of rubble!

Sleep Hour Solución Complete Solution

Partial Solution 1

Partial Solution 2

This solution uses all concepts: basic syntax, movement arguments, and strings. # This is a COMBO challenge level. # Defeat ogres, collect gems, and escape to the red X # using strings and movement arguments! hero.moveRight(2) hero.attack("Ursa") hero.attack("Ursa") hero.moveDown() hero.moveLeft(2) hero.moveUp(2) hero.attack("Rexxar") hero.attack("Rexxar") hero.moveRight() hero.attack("Brack") hero.attack("Brack") hero.moveRight(2)

#6. Los comentarios de la celda

Level Overview and Solutions ¡Estás atrapado en una prisión con un mago famoso! Di la contraseña para conseguir su ayuda.

Intro Los comentarios son una herramienta para que un programador pueda explicarle a otro su código. ¡En CodeCombat, los comentarios son pistas útiles sobre cómo escribir y cómo estructurar tu codigo! # En Python los comentarios empiezan con una #. ¡Léelos para obtener instrucciones!

` lua -- En Lua los comentarios empiezan con --. ¡Léelos para obtener instrucciones!

Código predeterminado hero.say("¿Qué es la contraseña?") # Usa la función "say()" para decir la contraseña. # La contraseña es: "Achoo"

Vista global

Comentarios

Los comentarios son una herramienta para que dos programadores puedan comunicarse entre sí. Son también útiles para un único programador para recordar qué estaban haciendo para continuar más tarde. En CodeCombat, añadimos comentarios para ayudarte a estructurar tu código y te damos pistas importantes. Léelas para entender el objetivo y qué código necesitas escribir para alcanzarlo. En este nivel necesitas leer los comentarios que te proporcionamos para hallar la respuesta, ¡y escapar de la prisión!

Los comentarios de la celda Solución hero.say("¿Qué es la contraseña?") # Usa la función "say()" para decir la contraseña. # La contraseña es: "Achoo" hero.say("Achoo") hero.moveUp() hero.moveUp()

#7. Bibliotecario de Kithgard

Level Overview and Solutions ¡Busca ayuda de un Bibliotecario amable!

Intro

La mayoría de los niveles tienen sugerencias que pueden ayudarte cuando estás atascado. Haga clic en Siguiente para desplazarse por todas las sugerencias para un nivel. Para este nivel, haz clic en 'Siguiente' para encontrar la contraseña de la puerta de la biblioteca.

Código predeterminado

# ¡Necesitas una contraseña para abrir la puerta de la biblioteca! # ¡La contraseña está en la guía de Ayuda! # Hace click sobre el botón "Ayuda" azul abajo del editor de código para abrir la guía de Ayuda del nivel. # La mayoría de los niveles tienen una guía de Ayuda con información adicional. ¡Si te encuentras sin saber que     hacer, no olvides de hacer click sobre Ayuda! hero.moveRight() hero.say("¡No sé la contraseña!")

# ∆

Vista global

Bienvenidos al guía de Ayuda! La mayoría de los niveles tienen guias que contienen información adicional para ayudarte en completar tus objectivos y aprender nuevos conceptos. Como esto: La contraseña para la puerta de la biblioteca es "Hush" . Consejo: El comando say te permite decir la contraseña! Consejo: Recuerda usar comillas con la contraseña para que sea una cadena, y usa mayúsculas donde corresponde. Miembros registrados de CodeCombat también consiguen acceso a videos explicativos en la guía para la mayoría de los niveles. ¡Asegurate mirar la Ayuda en futuros nivels si te encuentras sin saber que hacer!

Bibliotecario de Kithgard Solución

# ¡Necesitas una contraseña para abrir la puerta de la biblioteca! # ¡La contraseña está en la guía de Ayuda! # Hace click sobre el botón "Ayuda" azul abajo del editor de código para abrir la guía de Ayuda del nivel. # La mayoría de los niveles tienen una guía de Ayuda con información adicional. ¡Si te encuentras sin saber que     hacer, no olvides de hacer click sobre Ayuda! hero.moveRight() hero.say("Hush") hero.moveRight()

#8. El prisionero

Level Overview and Solutions Libera al prisionero y ganarás un aliado.

Intro ¡Próximamente!

Código predeterminado ¡Próximamente!

Vista global Tu puedes atacar a la "Puerta Débil" para liberar a tu aliado, luego ayúdalo a pelear con el ogro "Dos". Cuando tú atacas algo por su nombre, asegurate de incluir la comilla dobles al inicio y al final del nombre (así se especifica un campo de texto String) y asegurate de capitalizar los nombres correctamente. Dependiendo de tu arma y tu estrategia, podrías atacar al ogro más de una vez.

El prisionero Solución

# <%= goals %> # <%= free_prisoner %> hero.moveRight() hero.attack("Weak Door"); # <%= kill_guard %> hero.moveRight(2) hero.moveDown(2) hero.attack("Two") hero.attack("Two") hero.attack("Two") hero.attack("Two") hero.attack("Two") hero.attack("Two") # <%= get_gem %> hero.moveRight() hero.moveDown()

#9. Baile de Fuego

Level Overview and Solutions Ahorra al escribir (y rescata a tu heroe) con bucles!

Intro

Esquiva las bolas de fuego por bailar derecha y izquierda.

Usa un bucle 'while-true' para repetir para siempre así: while True: hero.moveLeft() # Va a ejecutar uno y otra vez.

Código predeterminado # Normalmente el código se ejecuta en el orden que está escrito. # Bucles repeten un bloque de código varios veces. # Usa la tecla tab o 4 espacios para agregar sangria a las líneas de movimiento bajo el bucle. while True: hero.moveRight() # Agrega un comando 'moveLeft' al bucle aquí

Vista global Normalmente el código ejecuta en el orden que está escrito. Bucles te permiten repetir un bloque de código varios veces sin tener que escribirlo de nuevo.

Como usar los bucles 'while-true' Primero, empezamos un bucle con la palabra clave while . Esto indica al programa mientras algo sea verdad, repite el bloque del bucle. Por ahora queremos que nuestros bucles siguen para siempre, entonces vamos a usar un bucle 'while-true'. Porque 'true' significa verdad (en inglés).

No se preocupen tanto por esto de verdad por ahora. Vamos a explicarlo más después. Sólo recuerda que un bucle 'while-true' es un bucle que nunca termina. Así es como se escribe un bucle 'while-true': # Empieza el bucle while-true con "while True:" # Cualquier comando bajo el comando 'while' que tiene sangria (empieza con 4 espacios) se considera DENTRO del     bucle. while True: hero.moveRight() hero.moveLeft() hero.say("¡Esa línea no está dentro del bucle!")

Consejo: ¡Puedes poner lo que quieres dentro un bucle while-true! ¡Pero por este nivel, sólo necesitamos repetir dos comandos: moveRight() y moveLeft() !

Baile de Fuego Solución # Normalmente el código se ejecuta en el orden que está escrito. # Bucles repeten un bloque de código varios veces. # Usa la tecla tab o 4 espacios para agregar sangria a las líneas de movimiento bajo el bucle. while True: hero.moveRight() # Agrega un comando 'moveLeft' al bucle aquí hero.moveLeft()

#10. Laberinto encantado

Level Overview and Solutions Un laberinto construido para confundir a los viajeros.

Intro

Double check your indentation! You only need one while-true loop containing four commands in this level.

Código predeterminado # Los bucles son la mejor manera de hacer algo repetitivo. while True: # Añadir comandos aquí para repetirlos. hero.moveRight() hero.moveRight()

Vista global Los Bucles "loops" permiten repetir el mismo código una y otra vez. Puedes hacer este nivel con tan solo 5 comandos en un bucle. Normalmente solo querrás tener un bucle en tu programa. Consejo: el pasillo necesita dos movimientos a la derecha, y luego dos movimientos hacia arriba. A partir de ahí, simplemente deja que el bucle se repita para hacer el resto. Asegúrate de que tus comandos de movimiento están dentro del bucle ¡para que se repitan! En Python y en CoffeeScript hazlo con la sangría: todo lo que hay después de la palabra clave 'loop', en el mismo nivel de la sangría, forma parte del bucle. En otros lenguajes, hay símbolos explícitos de inicio y fin para señalar el bucle. Coloca el cursor sobre la documentación del "loop" si necesitas ayuda con la sintaxis.

Laberinto encantado Solución

# Los bucles son la mejor manera de hacer algo repetitivo. while True: # Añadir comandos aquí para repetirlos. hero.moveRight() hero.moveRight() hero.moveUp() hero.moveUp()

#11. Descendiendo mas allá

Level Overview and Solutions Utiliza un bucle para navegar mas eficientemente.

Intro ¡Próximamente!

Código predeterminado # Navega por el laberinto en menos de 4 líneas de código

Vista global Para conseguir el bonus, usa un bucle para resolver este nivel en solo cuatro líneas de código. (Las líneas vacías y los comentarios no cuentan, mientras que las instrucciones múltiples en la misma línea sí cuentan). Coloca el cursor sobre la descripción del bucle en la parte inferior derecha para ver ejemplos de sintaxis de bucle.

Descendiendo mas allá Solución

# Navega por el laberinto en menos de 4 líneas de código while True: hero.moveRight(2) hero.moveDown()

#11a. Riddling Kithmaze

Level Overview and Solutions Intro ¡Próximamente!

Código predeterminado # Loops son la mejor forma de hacer cosas repetitivamente while True: # Añade sentencias aquí para ser repetidas. hero.moveRight() hero.moveDown()

Vista global Count carefully how many movements you need inside your loop to solve the maze, and where you need to repeat your loop. Remember, you should only use one loop per level, and make sure all your code is inside the loop. Hover over the loop documentation to see an example of the loop syntax.

Riddling Kithmaze Solución

# Loops son la mejor forma de hacer cosas repetitivamente while True: # Añade sentencias aquí para ser repetidas. hero.moveRight() hero.moveDown() hero.moveRight(2) hero.moveUp()

#11b. Aura Radiante

Level Overview and Solutions Esqueletos. ¿Temibles o temerosos?

Intro ¡Próximamente!

Código predeterminado # Recoge una gema luminosa para ahuyentar a los esqueletos brevemente.

Vista global Los esqueletos son demasiado fuertes para pelear contra ellos. Las gemas luminosas los mantendrán alejados de ti, ¡pero por poco tiempo! Todo lo que necesita hacer es: Coge una Piedra de Luz Mover más allá de un esqueleto Repetir

Aura Radiante Solución # Recoge una gema luminosa para ahuyentar a los esqueletos brevemente. while True: hero.moveUp() hero.moveDown() hero.moveRight(2)

#Concept Challenge. Loop Warehouse

Level Overview and Solutions Intro This is a Concept Challenge: Find a looping pattern to move through the warehouse, collect all gems, and exit at the white X mark. Use no more than 5 statements.

Código predeterminado # Collect all gems and escape at the white X mark. # Use no more than 5 statements.

Vista global ¡Próximamente!

Loop Warehouse Solución

# Collect all gems and escape at the white X mark. # Use no more than 5 statements. while True: hero.moveUp(2) hero.moveRight(2) hero.moveDown() hero.moveLeft()

#12. La puerta del terror

Level Overview and Solutions Detrás de una puerta de terror se encuentra un cofre lleno de riquezas

Intro

You can use while-true loops with any method like: while True: hero.moveRight() hero.attack("Brak")

Código predeterminado # Romper la puerta # Tomará muchos éxitos, asique utiliza un bucle

Vista global You can combine while-true loops and attack to easily destroy things that take more than one hit. Like this door. while True: hero.attack("Door")

You can attack the door by its name, which is "Door" . With looping and attacking, you can do this level in just two lines of code.

La puerta del terror Solución # Romper la puerta # Tomará muchos éxitos, asique utiliza un bucle while True: hero.attack("Door")

#13. Hack and Dash

Level Overview and Solutions Intro

There's danger in the air! You need to escape from the dungeon, but why not check that "Chest" before you go? Use attack() it to open the "Chest" , then use a while-loop to escape.

Código predeterminado # You can write code before a loop. hero.moveRight() # Break open the "Chest" before using the loop to escape the maze! # Return back back into the main hallway. while True: # Move 3 times. hero.moveRight(3)

Vista global You're not fast enough to outrun the Sprite without drinking the Speed Potion. Before the while-loop, you'll want to moveUp() and attack the "Chest" , then moveDown() back into the main hallway. Inside the while-loop, you need to add moveDown() . Use an argument to moveDown() multiple times wthout having write more lines of code. Don't worry, the Sprite is activated by stepping on the X, so you'll have time to grab the potion!

Hack and Dash Solución # You can write code before a loop. hero.moveRight() # Break open the "Chest" before using the loop to escape the maze! hero.moveUp() hero.attack("Chest") # Return back back into the main hallway. hero.moveDown() while True: # Move 3 times. hero.moveRight(3) # Move 3 times more. hero.moveDown(3)

#14. Las Alacenas de Kithgard

Level Overview and Solutions ¿Quién sabe que horrores acechan en Las Alacenas de Kithgard?

Intro

Puedes ejecutar cualquier accion antes del while-true bucle . hero.moveUp() while True: hero.attack("Brak")

Código predeterminado

# ¡Puede que haya algo por ahí para ayudarte! # Primero, acércate a la Alacena. # Luego, ataca la Alacena dentro de un bucle 'while-true'.

Vista global Los guardias ogro pueden ser demasiado para tí. Tal vez encuentres algo útil en el "Cupboard" Primero, acércate al "Cupboard" . Parece cerrado, así que tendrás que atacarlo repetidamente usando un while-true blucle para romperlo.

Las Alacenas de Kithgard Solución # ¡Puede que haya algo por ahí para ayudarte! # Primero, acércate a la Alacena. hero.moveUp() hero.moveRight(2) hero.moveDown(2) # Luego, ataca la Alacena dentro de un bucle 'while-true'. while True: hero.attack("Cupboard")

#14a. Cupboards of Kithgard A

Level Overview and Solutions Intro

Puedes ejecutar cualquier accion antes del while-true loop . hero.moveUp() while True: hero.attack("Brak")

Código predeterminado # Puede que haya algo por ahi para ayudarte # Primero, acércate al Armario. # Luego, ataca el Armario dentro de un bucle.

Vista global Los guardias ogro pueden ser demasiado para tí. Tal vez encuentres algo útil en el "Cupboard" Primero, acércate al "Cupboard" . Parece cerrado, así que tendrás que atacar repetidamente usando un while-true loop para abrirlo.

Cupboards of Kithgard A Solución # Puede que haya algo por ahi para ayudarte # Primero, acércate al Armario. hero.moveDown() hero.moveLeft(2) hero.moveUp(2) # Luego, ataca el Armario dentro de un bucle. while True: hero.attack("Cupboard")

#14b. Cupboards of Kithgard B

Level Overview and Solutions Intro

Puedes ejecutar cualquier accion antes del while-true loop . hero.moveUp() while True: hero.attack("Brak")

Código predeterminado # Puede que haya algo por ahi para ayudarte # Primero, acércate al Armario. # Luego, ataca el Armario dentro de un bucle.

Vista global Los guardias ogro pueden ser demasiado para tí. Tal vez encuentres algo útil en el "Cupboard" Primero, acércate al "Cupboard" . Parece cerrado, así que tendrás que atacar repetidamente usando un while-true loop para abrirlo.

Cupboards of Kithgard B Solución # Puede que haya algo por ahi para ayudarte # Primero, acércate al Armario. hero.moveRight() hero.moveDown() hero.moveRight() hero.moveDown(2) # Luego, ataca el Armario dentro de un bucle. while True: hero.attack("Cupboard")

#15. Enemigo Conocido

Level Overview and Solutions Usa tu primera variable para lograr la victoria.

Intro

Declara las variables así: enemy1 = "Kratt"

Cuando utilizas comillas: "Kratt" , estas haciendo una string.

Cuando no utilizas comillas: enemy1 , estas haciendo referencia a la variable enemy1 .

Código predeterminado # Puedes utilizar una variable como una etiqueta de nombre. enemy1 = "Kratt" enemy2 = "Gert" enemy3 = "Ursa" hero.attack(enemy1) hero.attack(enemy1) hero.attack(enemy2)

Vista global Hasta ahora has estado haciendo tres cosas: 1. Llamar methods (comandos como moveRight() ) 2. Pasar strings (partes de texto entre comillas "Treg") como argumentos para los metodos o funciones 3. Usar while-true loops para repetir tus metodos eternamente. Ahora vas a aprender a usar variables: simbolos que representan datos. El valor de la variable puede vary cuando almacenas datos en el, por eso se llama variable. Es una lata escribir los nombres de los ogros varias veces, asi que en esete nivel utilizarás tres variables para almacenar los nombres de los ogros. Despues vas a atacar, ùedes usar la variable ( enemy1 ) para representar el texto que esta almacenado en él ( "Kratt" ). Declara las variables así:

enemy1 = "Kratt"

Cuando utilizas comillas: "Kratt" , estas haciendo una string. Cuando no utilizas comillas: enemy1 , estas haciendo referencia a la variable enemy1 .

Enemigo Conocido Solución # Puedes utilizar una variable como una etiqueta de nombre. enemy1 = "Kratt" enemy2 = "Gert" enemy3 = "Ursa" hero.attack(enemy1) hero.attack(enemy1) hero.attack(enemy2) hero.attack(enemy2) hero.attack(enemy3) hero.attack(enemy3)

#16. Maestro de Nombres

Level Overview and Solutions Usa tus nuevos poderes de programación para identificar enemigos sin nombre.

Intro

Las variables contienen información a la que se hará referencia posteriormente. Puedes asignar un nuevo valor a una variable en cualquier momento que desee. Use findNearestEnemy() para seleccionar el enemigo más cercano. closestEnemy = hero.findNearestEnemy()

Código predeterminado ¡Próximamente!

Vista global Recuerda el útlimo nivel, las variables son símbolos que representan datos. El valor de la variable puede variar a medida que introduces nuevos datos en ella, que es por lo que se le llama variable. Ahora en vez de usar los nombres de los enemigos, puedes usar tus gafas y la función findNearestEnemy para almacenar referencias a los ogros en variables. No necesitas usar sus nombres. Cuando llames a la funcion findNearestEnemy , debes guardar el resultado de la variable, por ejemplo enemy3 (puedes llamarla como quieras). La variable recordará cual era el enemigo más cercano cuando llamaste a findNearestEnemy , así que asegurate de llamarla cuando veas a un enemigo cercano. Recuerda: cuando usas comillas, por ejemplo "Kratt" , estas haciendo una cadena. Cuando no, por ejemplo enemy1 , te estas refiriendo a la variable enemy1 .

Maestro de Nombres Solución

# <%= unknown_names %> # <%= glasses_ability %> # <%= enemy1 %> enemy1 = hero.findNearestEnemy() # <%= enemy1_attack %> hero.attack(enemy1) hero.attack(enemy1) # <%= enemy2 %> enemy2 = hero.findNearestEnemy() hero.attack(enemy2) hero.attack(enemy2) # <%= enemy3 %> enemy3 = hero.findNearestEnemy() # <%= enemy3_attack %> hero.attack(enemy3) hero.attack(enemy3)

#16a. Humilde Kithmen

Level Overview and Solutions Usa tus las gafas para buscar y atacar a los Kithmen.

Intro ¡Próximamente!

Código predeterminado # ¡Crear una segunda variable y ataca! enemy1 = hero.findNearestEnemy() hero.attack(enemy1) hero.attack(enemy1)

Vista global Como no sabes el nombre de estos ogros, puedes usar el método findNearestEnemy desde tus gafas para almacenar las referencias de los ogros en variables. Cuando llamas al método findNearestEnemy , tu debes almacenar el resultado en una variable, como enemy2 (puedes nombrarla como quieras). La variable te recordará quien era el enemigo más próximo cuando llamaste a findNearestEnemy , así que asegúrate de llamarlo cuando veas un enemigo cercano.

Recuerda: cuando usas comillas, como "Krat" , estás haciendo una cadena. Cuando no usas comillas como en enemy1 , te estás refieriendo a una variable.

Humilde Kithmen Solución # ¡Crear una segunda variable y ataca! enemy1 = hero.findNearestEnemy() hero.attack(enemy1) hero.attack(enemy1) enemy1 = hero.findNearestEnemy() hero.attack(enemy1) hero.attack(enemy1) hero.moveDown() hero.moveRight() hero.moveRight()

#16b. Acortando Distancia

Level Overview and Solutions Algunos enemigos requeriran del uso de diferentes tacticas de batalla

Intro ¡Próximamente!

Código predeterminado hero.moveRight() # deberias reconocer esto del nivel anterior. enemy1 = hero.findNearestEnemy() # Ahora ataca al enemigo1 'enemy1'.

Vista global Como en el nivel anterior, puedes usar el metodo findNearestEnemy de tus lentes para guardar referencias a los Ogros en variables. Cuando llamas al metodo findNearestEnemy , necesitas guardar el resultado en una variable, como enemigo2 (puedes llamarla como quieras). La variable recordara cualfue el enemigo cercano cuando llamaste el metodo findNearestEnemy , asi que asegurate de llamarlo cuando veas cerca a un enemigo.

Recuerda: cuando usas el metodo findNearestEnemy , necesitas estar en la vista del enemigo, o no seras capas de verla. Este nivel te introduce un nuevo tipo de Ogro, el Ogro lanzador, quien hace un daño mucho mayor que los Ogros enanos con los que has estado luchando. Hay muchos mas tipos de Ogros esperandote en mundos futuros.

Acortando Distancia Solución hero.moveRight() # deberias reconocer esto del nivel anterior. enemy1 = hero.findNearestEnemy() # Ahora ataca al enemigo1 'enemy1'. hero.attack(enemy1) hero.attack(enemy1) hero.moveRight() enemy1 = hero.findNearestEnemy() hero.attack(enemy1) hero.moveRight(2)

#Concept Challenge. Master Of Names Debug

Level Overview and Solutions Intro

This is a Concept Challange about variables. This is a special DEBUGGING level. The code for the level is given to you, but it contains one or more errors. Your job is to figure out what the error is, and fix it!

Código predeterminado

# There is a mistake in the code below. # Try to figure out what it is, then fix it! enemy1 = hero.findNearestEnemy() hero.attack(enemy1) hero.attack(enemy1) enemy2 = hero.findNearestEnemy() hero.attack(enemy2) hero.attack(enemy2) enemy = hero.findNearestEnemy() hero.attack(enemy3) hero.attack(enemy3)

Vista global Recuerda el útlimo nivel, las variables son símbolos que representan datos. El valor de la variable puede variar a medida que introduces nuevos datos en ella, que es por lo que se le llama variable. Ahora en vez de usar los nombres de los enemigos, puedes usar tus gafas y la función findNearestEnemy para almacenar referencias a los ogros en variables. No necesitas usar sus nombres. Cuando llames a la funcion findNearestEnemy , debes guardar el resultado de la variable, por ejemplo enemy3 (puedes llamarla como quieras). La variable recordará cual era el enemigo más cercano cuando llamaste a findNearestEnemy , así que asegurate de llamarla cuando veas a un enemigo cercano. Recuerda: cuando usas comillas, por ejemplo "Kratt" , estas haciendo una cadena. Cuando no, por ejemplo enemy1 , te estas refiriendo a la variable enemy1 .

Master Of Names Debug Solución

# There is a mistake in the code below. # Try to figure out what it is, then fix it! enemy1 = hero.findNearestEnemy() hero.attack(enemy1) hero.attack(enemy1) enemy2 = hero.findNearestEnemy() hero.attack(enemy2) hero.attack(enemy2) enemy3 = hero.findNearestEnemy() hero.attack(enemy3) hero.attack(enemy3)

#17. El Laberinto Final

Level Overview and Solutions Para escapar necesitar encontrar tu camino a través de un antiguo laberinto de Kithman

Intro

Segúrate de llamar findNearestEnemy() sólo cuando el enemigo esté en tu línea de visión.

Código predeterminado # Usa un solo bucle while-true para moverte y atacar while True: pass

Vista global Este nivel combina while-true loops y variables para resolver el laberinto y atacar enemigos. Ahora veras que necesitas variables porqué de hecho variarás los datos en la variable. Dentro del bucle while-true si defines la variable enemy , se referirá a cada uno de los tres ogros del nivel cuando se repita el bucle. Genial,¿no? Pon atención donde se debe repetir el bucle while-true para que no te vayas más lejos de lo que necesitas. Asegúrate de llamar a findNearestEnemy() cuando veas un ogro a simple vista.

El Laberinto Final Solución # Usa un solo bucle while-true para moverte y atacar while True: hero.moveRight() hero.moveUp() enemy = hero.findNearestEnemy() hero.attack(enemy) hero.attack(enemy) hero.moveRight() hero.moveDown(2) hero.moveUp()

#Combo Challenge. Safe Place

Level Overview and Solutions Intro This is a COMBO challenge! You need to defeat the ogres using at least one of the programming skills you've learned so far: Variables While Loops Arguments If you can, complete ALL the goals!

Código predeterminado # Move to the treasure room and defeat all the ogres.

Vista global ¡Próximamente!

Safe Place Solución Complete Solution

Partial Solution 1

Partial Solution 2

Partial Solution 3

This solution uses all concepts: arguments, while loops, and variables. # Move to the treasure room and defeat all the ogres. hero.moveUp(4) hero.moveRight(4) hero.moveDown(3) hero.moveLeft(2) while True: enemy = hero.findNearestEnemy() hero.attack(enemy) hero.attack(enemy)

#18. Puertas de Kithgard

Level Overview and Solutions Escapa del calabozo de Kithgard y no dejes que los guardianes te atrapen.

Intro

buildXY("fence", x, y) te permite construir una muralla en cierto lugar, como esto: hero.buildXY("fence", 40, 20)

Mueve el ratón sobre el mapa para encontrar dónde quieres colocar la muralla, y reemplaza los argumentos x y y de buildXY con esos números.

Código predeterminado # Construye 3 murallas para mantener a raya a los ogros! hero.moveDown() hero.buildXY("fence", 36, 34)

Vista global Cuando se utiliza el martillo de constructor, en lugar del método attack , se obtiene el método buildXY . buildXY toma tres argumentos, en lugar de uno: buildType , x y y . Para que pueda decidir qué construir y dónde construirlo. buildType : o bien la cadena "fence" , para construir murallas, o la cadena "fire-trap" , para construir trampas

explosivas. x : la posición horizontal en la que se construye. Se puede colocar el cursor sobre el mapa para encontrar las

coordenadas. y : la posición vertical en la que se construye. x y y son en metros. buildXY("fence", x, y) te permite construir una muralla en cierto lugar, como esto: hero.buildXY("fence", 40, 20)

Este nivel es mas fácil de superar con murallas "fence" que con trampas explosivas "fire-trap" . Es casi imposible usar trampas de fuego para derrotar a los ogros. Si quiere intentarlo, esta bien, pero nos tomó quince minutos entenderlo, y construimos este nivel. Solo tienes que construir tres murallas para detener a los ogros y escapar dela mazmorra por la derecha.

Puertas de Kithgard Solución # Construye 3 murallas para mantener a raya a los ogros! hero.moveDown() hero.buildXY("fence", 36, 34) hero.buildXY("fence", 36, 30) hero.buildXY("fence", 36, 26) hero.moveRight(3)

#19. Wakka Maul

Level Overview and Solutions Intro

Walk over gems to collect them. say() unit names to summon them. attack() doors to break out your friends.

Código predeterminado

# Welcome to Wakka Maul! Prepare for combat! # Venture through the maze and pick up gems to fund your warchest. # Break down doors to unleash allies (or enemies). # For example, to attack the door labeled "g" use: #hero.attack("g") # If you have enough gold, you can call out for help by saying the type of unit you would like to summon! #hero.say("soldier") to summon a Soldier at the cost of 20 gold! #hero.say("archer") to summon an Archer at the cost of 25 gold! hero.moveDown() hero.moveRight() hero.attack("g") hero.say("soldier")

Vista global Wakka Maul Battle your friends, coworkers and classmates in this all out brawl through the Kithgard dungeons! Break out allies, summon more units, and evade the enemy's advances! The doors are labelled "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" , "i" , "j" . Use these strings to attack the specific door you want! The human side can summon soldier and archer while the ogre side can summon scout and thrower . All either side needs to do is to say the unit name, and have enough gems, to summon the units. To summon units you'll want to say their name: # If on the human side: hero.say("soldier") # To summon a soldier for 20 gold. hero.say("archer") # To summon an archer for 25 gold. # If on the ogre side: hero.say("scout") # To summon a scout for 18 gold. hero.say("thrower") # To summon 2 throwers for 9 gold each.

Wakka Maul Solución # Welcome to Wakka Maul! Prepare for combat! # Venture through the maze and pick up gems to fund your warchest. # Break down doors to unleash allies (or enemies). # For example, to attack the door labeled "g" use: #this.attack("g") # If you have enough gold, you can call out for help by saying the type of unit you would like to summon! #this.say("soldier") to summon a Soldier at the cost of 20 gold! #this.say("archer") to summon an Archer at the cost of 25 gold! hero.moveDown() hero.moveRight() hero.attack("g") hero.moveRight(4) hero.moveUp() hero.attack("h") hero.attack("i") hero.moveUp(2) while True: hero.say("archer")

Related Documents

Cs1 Course Outline
October 2019 23
Cs1
June 2020 18
Cs1
May 2020 27
Cs1
June 2020 15
Python
November 2019 59

More Documents from ""