Aprender a programar puede ser tan claro como seguir el flujo de una batalla por turnos. Con el ejemplo de Pokémon, entenderás cómo usar objetos, variables, condiciones y ciclos para construir un algoritmo simple en JavaScript que decide quién gana entre Pikachu y Jigglypuff.
¿Cómo se modela el combate con objetos?
En programación, un Pokémon se piensa como un objeto: tiene propiedades como nombre, vida y poder de ataque. Aquí ambos empiezan con vida = 100. Pikachu tiene ataque = 55 y Jigglypuff ataque = 45. El daño se calcula restando el ataque del rival a la vida actual.
Un objeto agrupa datos relacionados en una sola entidad.
Vida y ataque son datos numéricos que cambian durante el combate.
El daño se aplica con una asignación: vida = vida − ataque.
El combate es por turnos: primero uno, luego el otro.
¿Por qué las variables y el turno son clave?
Las variables son como “cajitas” que guardan datos. Igual que en álgebra, se les asigna un valor y luego se usan en expresiones. Para recordar quién ataca, definimos una variable turno: si es 1, ataca Pikachu; si es 0, ataca Jigglypuff. Pikachu arranca con turno = 1.
let turno =1;// 1: Pikachu, 0: Jigglypuff
Actualizar la vida exige asignar el nuevo valor, no solo escribir la operación. Por eso se usa vida = vida − ataque.
if(turno ===1){ jigglypuff.vida= jigglypuff.vida- pikachu.ataque;// aplica daño de Pikachu. turno =0;// cambia el turno.}else{ pikachu.vida= pikachu.vida- jigglypuff.ataque;// aplica daño de Jigglypuff. turno =1;// cambia el turno.}
Asignar es indispensable: sin “=” la variable no cambia.
Comparar no es lo mismo que asignar: “===” compara, “=” asigna.
El turno alterna cada vez para mantener el orden del combate.
¿Cómo operan los ciclos y condiciones?
Un ciclo repite instrucciones mientras una condición sea verdadera. Aquí, el combate sigue mientras ambos tengan vida > 0. Se evalúa el turno, se aplica el daño y se alterna de nuevo. La ejecución es muy rápida, aunque la expliques paso a paso.
Al salir del ciclo, una condición final decide quién “murió”. No hace falta preguntar por ambos: si uno no es menor o igual que cero, el otro sí lo es.
La condición del ciclo combina reglas con “y” lógico: vida > 0 y vida > 0.
Salir del ciclo significa que al menos una vida ya no es mayor que 0.
Mostrar el resultado es tan simple como evaluar una condición final.
¿Te gustaría practicar escribiendo este algoritmo paso a paso en JavaScript y comentar cómo mejorar la claridad del flujo por turnos? Comparte tus dudas y avances en los comentarios.
Me trae nostalgia ver este vídeo, fue el segundo vídeo que vi. EL primero fue cuando fredy y cristian estaban en un carro.
También fué el primer video de Platzi que vi. Lo vi cuando cursaba mi primer cuatrimestre de la carrera (y estaba aprendiendo algoritmos en ella). 20 clases de introducción a la programación en 5 minutos de Platzi.
Me trae nostalgia ver este vídeo, fue el segundo vídeo que vi x2 xD
Estoy aquí, terminando este curso, después de haber terminado antes el de Programación Básica, y me encanta recordar el reto de los "Pakimanes" gracias a este video :inlove
Mi favorito siempre fue Tocineitor jajaja
jajajaj genial
Lo que no sabían es Pikachu tiene una variable mas, defensa = 10 y por eso son 65.
yo si decia algo no me cuadra....
Algo aqui anda mal....
Ese Jigglypuff esta muerto, no mas no le han avisado XD
jajajajajajaj
ahahhahahha
No se como Freddy logra hacer esto tan entretenido y facil de aprender pero me gusta
Me acordé de la clase del curso de Programación Básica en la que Freddy nos enseñaba POO con los pakimanes
classPakiman{constructor(n, v, a){this.imagen=newImage();this.nombre= n;this.vida= v;this.ataque= a;this.imagen.src= imagenes[this.nombre];}hablar(){alert(this.nombre);}mostrar(){document.body.appendChild(this.imagen);document.write("<br /><strong>"+this.nombre+"</strong><br />");document.write("Vida: "+this.vida+"<br />");document.write("Ataque: "+this.ataque+"<hr />");}}var imagenes =[];imagenes["Cauchin"]="vaca.png";imagenes["Pokacho"]="pollo.png";imagenes["Tocinauro"]="cerdo.png";var coleccion =[];coleccion.push(newPakiman("Cauchin",100,30));coleccion.push(newPakiman("Pokacho",80,50));coleccion.push(newPakiman("Tocinauro",120,40));for(var freddito of coleccion){ freddito.mostrar();}for(var x in coleccion[0]){console.log(x);}
Muy bueno
Excelente!
Es de lo mejor esta explicacion, ni en el colegio ni en la universidad en muchas horas de clases no he entendido, y aqui en 5 min aprendi todo. estoy feliz con cada curso y video de Platzi.
Es la mejor explicación de un diagrama de flujo de JS
Si, pienso igual.
Con este video conocí a Platzi <3
Yo igual, hace ya varios años
yo también lo conocí, buscando cosas de Pokémon en YouTube <3
me hizo acordar a los pakimanes que creamos en el curso de programacion basica.
Todo es mucho mas facil de entender cuando lo haces con pokemones. Al de redes neuronales hay que agregarle unos pikachus
Me encantó el video, lo escribí en Python y quedo así =) .👇
import random
def pokemon_game(): # Definimos la vida de los pokemones
hp_pikachu =100 hp_jiggypuff =100 # Esta partida esta arreglada(al menos le estamos dando ventaja a Pikachu)xD
attack_pikachu = random.randint(0,55) attack_jigglypuff = random.randint(0,45) # Definimos el turno, el cual será aleatorio
turn = random.randint(0,1) # Entramos en combate
while hp_pikachu >0 and hp_jiggypuff >0:if turn ==1: hp_pikachu -= attack_jigglypuff
print('Pikachu HP: '+str(hp_pikachu)) turn =0else: hp_jiggypuff -= attack_pikachu
print('Jigglypuff HP: '+str(hp_jiggypuff)) turn =1if hp_pikachu <=0: win ='Jigglipuuf is the winner'else: win ='Pikachu is the winner'print(win)pokemon_game()
Está muy bien, me gusta que el ataque sea aleatorio haciendo que al correr el programa no haya un solo resultado.
Realmente. Programar es como darle instrucciones a alguien que no entiende nada. Se lo debes indicar literalmente paso a paso.
Justo asi.
vídeos como este , demuestran que platzi de verdad quiere que la gente aprenda.
Algoritmo
Objeto, cosas en común, Atributos y métodos
Variable son cajitas donde se guardan los datos
mientras se cumplan las condiciones un ciclo se repite
Una condición compara una variable contra un dato
pikachu.vida=100 - ataque.jigglypuff (45)
pikachu.vida= 55 (no 65 como dicen)
Esta partida estaba arreglada desde las matemáticas incluso! :D
soy el unico que vio que el ataque de jigglypuff no fue de 45 si no de 35
si ataque es = 45
pikachu vida =100
ataque - vida = 55
Si, tienes toda la razón, un pequeño error.
Ya habia dicho Freddy que estaba arreglado.
++También lo había visto muchas veces en youtube y no me aburro jajajaaja
++
Poder conocer la programación con ejemplos claros, sencillos y amigables hace que las cosas sean mas fáciles de entender, te anima a conocer mas y sobretodo crea nuevos desarrolladores sin barreras mentales.
Lo explica tan fácilmente como si estuviera tatuado en su cerebro. Quiero llegar a ese nivel....
Que hermoso video! Si me hubieran explicado programación así en la universidad no la hubiera odiado tanto al inicio.