Es importante para que funcione el servidor, que el archivo html se llame index.html, de lo contrario, el servidor no lo interpretara y responderá con un error 404.
Fundamentos de Programación
Bienvenida a Platzi: ¿qué necesitas para tomar el curso?
Programación en Navegadores: Primeros Pasos
Crea tu primer sitio web
Sitios web con HTML
Estructura de árbol en HTML
Instalando tu primer editor de código
Cómo declarar variables y usar prompt
Algoritmo de piedra, papel o tijera
Algoritmo avanzado de piedra, papel o tijera
Aleatoriedad
Refactor del código usando funciones
Ciclos
Gana 3 veces
Archivos de HTML y JavaScript
¿Qué es el DOM?
Quiz: Fundamentos de Programación
Desarrollando un juego con HTML y JavaScript
Maquetación con HTML
Sección de elegir mascota
¿Dónde ubicar la etiqueta script? Conectando HTML con JavaScript
Escuchando eventos con JavaScript
addEventListener
Manipulación del DOM
Enemigos aleatorios
Ataques en JavaScript
Ataques aleatorios del enemigo
Imprimiendo ataques del enemigo
¿Ganaste, perdiste o empataste?
Tablas de verdad
Creando el contador de vidas
¿Quién ganó el juego?
Reiniciando el juego
Ocultando elementos HTML con JS para mejorar la UX del juego
Quiz: Desarrollando un juego con HTML y JavaScript
Estilos con CSS
Anatomía de CSS
Tipos de display
Flexbox
Modelo de caja
Imágenes para los Mokepones
Estilos del botón
Adaptando HTML al diseño del juego
Layout: título y ataques
Adaptando JavaScript al diseño del juego
CSS Grid
Responsive Design
Detalles finales
Quiz: Estilos con CSS
Optimización de código
Revisión de código
Don't repeat yourself (DRY)
Clases y objetos
Clases y objetos de Mokepon
Arrays o arreglos
Objetos vs. arreglos
Ciclos: manipulando el DOM con iteradores
Declaración lenta de variables
Una sola fuente de la verdad
Mascotas aleatorias con arreglos
Ataques dinámicos por cada mascota: extraer
Renderizado dinámico en HTML
Eventos de click dinámicos
Secuencia de ataques del enemigo
Iniciando el combate
Resolviendo el reto de condicionales
Optimizando el frontend del juego
Quiz: Optimización de código
Mapa con canvas
Introducción a canvas: dibujando con JavaScript
Moviendo a Capipepo hacia la derecha
Movimiento hacia todas las direcciones
Movimientos con el teclado
Imágenes y personajes de fondo
Métodos en las clases
Obstáculos y colisiones
Combate entre mokepones colisionados
Mapa responsive
Botones bonitos y viewport
Quiz: Mapa con canvas
Backend: videojuego multijugador
¿Qué es backend?
Instalación de Node.js y NPM
Terminal de comandos y Node.js
Servidor web con Express.js
HTTP, localhost, servidores y puertos
Express.js y fetch: API REST con JavaScript
JSON y POST: mokepon online
Transmisión de coordenadas
Mokepones dinámicos en el mapa
Optimizando el mapa del juego
Batalla entre jugadores
Consumiendo la API de ataques del enemigo
Quiz: Backend: videojuego multijugador
Próximos pasos
Probando el juego en varios dispositivos
¿Y ahora qué curso tomar?
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 179
Preguntas 146
Es importante para que funcione el servidor, que el archivo html se llame index.html, de lo contrario, el servidor no lo interpretara y responderá con un error 404.
Hay que proteger al profe Juan, es demasiado bueno para este mundo.
Para deshabilitar el seleccionado del texto en los botones se puede hacer con el siguiente codigo en css
user-select: none;
Estuve un rato largo buscando porque me salía el error “cannot get /” y en la sección de preguntas ya lo solucionaron.
Hasta este momento traemos el documento html con el nombre mokepon.html
Cambiándolo por index.html como lo tienen en el video se soluciona y te permite entrar desde el localhost:8080 y con la dirección IP también.
me estaban apareciendo este error en la consola:
GET mokepon.js net::ERR_ABORTED 404 (Not Found)
no estaba cargando el javascript
lo solucioné cambiando la etiqueta script en el html en vez de ./js/mokepon.js es /mokepon.js y cargo todo. Asi debe quedar:
<script src="./mokepon.js"></script>
YO: DESPUÉS DE ACBAR EL CURSO DE PROGRAMACIÓN BÁSICA
La dirección IP es una dirección de cada computador que nos permite acceder a éste desde otros dispositivos.
Entonces al poner https://192.168.10.116:8080
estamos accediendo al puerto 8080
del computador que tiene la dirección 192.168.10.116
.
En este caso, esta es una IP local, es decir, solo podrán usarla aquéllos que estén bajo la misma red (es decir, conectados al mismo router).
Vuestro router tiene una IP pública con el que se puede acceder a vuestra red. Para comunicar puertos concretos hacemos Port Forwarding, esto es decirle al router que, cada vez que reciba una petición al puerto - por ejemplo - 8080, que mande esa petición a un computador concreto.
Así es que, configurando correctamente el router, podéis tener un servidor en vuestro propio hogar.
No estoy seguro de si puede ser peligroso hacer ésto, solo lo comento como dato.
Tengo un error y me gustaria saber si alguien mas le pasa y es en termino de las coaliciones. Cuando lo hago desde el mobil, y alguien ingresa me coaliciona pero solo en el movil, pero en el mapa no se ve la coalicion.
Si lo hago ambos jugadores desde el computadior funciona normal. Podria se algo en terminos de que las pantallas son diferente y la del celular al ser mas pequeña encuentra coalicion comparada con la del computador?
a aluien mas le sucede esto?
Yo en mi trabajo y junto con los que he desarrollado código, al proceso de testing le bautizamos el proceso Cletus “Hacerlo a prueba de idiotas” jajajja
Fíjense que el documento principal html debe estar como
index.html
Otra solución también es ingresar a
localhost:8080/mokepon.html
Con esto le dan la dirección exacta del archivo a donde desean ingresar, y listo!!
Ctrl + Shift + L por defecto
si los pasaron con el explorador de windows, se debe quitar js en el html. asi:
<script src="./js/mokepon.js"> </script>
y dejarlo asi:
<script src="./mokepon.js"> </script>
por ultimo cambiar el nombre a index el html no mokepon.
el curoso fue genial, aun que casi al final me explota el cerebro.
es cierto que en el proyecto hay muchar areas de opotunidad que se pueden mejorar.
pero esta genial este curso
Yo tambien me emocione cuando vi que la clase era del profe Juan 😊
Jejejeje Mori, con esa intro de “HOLA, te acuerdo de mi”, ya ni nos acordabamos…
Excelente curso, se ha aprendido mucho en poco tiempo. Pero muchas clases!
Yo logre eliminar el error de que cuando volvías a seleccionar un jugador los anteriores se redibujan en ubicación donde hacían colicion. 😱
Aquí la prueba final! ❤️
https://mokepon-platzi.herokuapp.com/
Juanda es un excelente profesor, explica todo lo que coloca en el código, ojala el resto explicara igual
Si por alguna razon copiaron su direccion ip desde el navegador al momento de cambiar el localhost por ella, asegurense de que despues de el ultimo numero de la direccion, no haya una diagonal jajajaja
Como no debe de ser:
Como debe ser jajajaja:
Así había solucionad, ya que había visto ese hueco.
En mi colegio nunca ví esa actitud en la que se tuviera un interés genuino para que los estudiantes aprendieran. Gracias de verdad!
Espero que al hacer la prueba me de unos 10000 platzi puntos.
yo dejaría la pantalla en blanco, me gusta porque es como dándole a entender al jugador que se ponga serio
Yo hice lo mismo que otro compañero, si no selecciona mascota, sale un alert y al darle en aceptar se reinicia el juego
Si están llevando adelante el proyecto desde WSL2: LEAN ESTO ANTES DE INTENTAR ABRIR EL JUEGO EN EL CELULAR.
En este video está la explicación de porque es mas difícil hacerlo y la forma de resolverlo:
https://www.youtube.com/watch?v=3Tkkk3ePZKo&ab_channel=EarHackerDem
ERROR Cannot GET/
Si te encuentras con este error en la sección de preguntas ya lo solucionaron, te comparto la solución, es simple, hasta el momento venimos manejando el archivo mokepon.html pero en esta clase ya lo manejan como index.html, solo necesitas cambiar el nombre de este archivo y listo 👌
Que chevere ver otra clase del profe juan david, excelente manera de enseñar
Yo que pensaba que este iba a ser un video de “felicitaciones muchachos” :´ )
Si no quieren que no se seleccione el texto ponen esto en el css del boton
user-select: none;
Realice el mismo juego en Vuejs, utilizando SocketIO como mecanismo de tiempo real:
Pueden jugarlo en linea con otras personas: Mokepon Vue
Hola. simpre sale este error, pero no se por que es, y hay veses que no deja funcionar bien la aplicacion, si a alguien mas le sale confirmen.
Me encanta la energía de Juan David jajajaja
Mi profesor favorito es Juan David. Es muy divertido aprender con el.
Juanda es el mejor profesor, explica tan bien que es imposible no entender, ojalá los otros profesores hubieran explicado como él
Tengo un problemita con mi codigo
Al finalizar la batallas hay algunos ataques que me salen como undefined (Unas veces solo en un jugador y otra veces en ambos juagadores) ya he revisado el código y lo he comparado con el del proyecto y está igual
Es el único imperfecto que tengo u.u
Nooo que fracaso, desde la clase 71 todo el codigo se rompio, ya no me funciona nada, la verdad explican y copian como si uno supiera ya…
Que alegria ver a juanito de nuevo, el viejo confiable tocayo c:
Te agradezco mucho profe Juan David, evidentemente sos el más joven, pero tenés un don para explicar de manera tan clara, y no solo eso, tu personalidad lo mantiene a uno enfocado en lo que vas a decir. Gracias.
Hola tengo unos errores en el código.
Quien mas tiene estos errores?
Este curso empezo siendo traquilo y termino rompiendome el cerebre, aun asi nunca voy a parar de aprender!!
Tengan mucho cuidado con el orden de las carpetas, tenía un error y era que la carpeta “public” estaba por fuera de la carpeta donde está el archivo “index.js”, en otras palabras, vayan a Recursos del video y verifiquen el orden de las carpetas.
yo lo que hice fue en esa parte llamar a la función de reiniciar juego después del alert.
Si no les aparece el IPv4 con wifi es porque están usando Ethernet desde su pc, así que desconecten su cable y conecten wifi o usen otra pc para conocer el IPv4.
Pueden consultar la IPv4 desde el cmd de windows.
Se rompió todo mi código al abrirlo en localhost:8080 me presentaba el siguiente error
Lo solucione al cambiar en el Html la ruta de carpeta que contiene Js ya que al moverlo a la carpeta public la ubicación de este cambio.
cuando se da click en seleccionar sin mokepon yo solo puse un
location.reload()
y funciona
Yo lo solucione llamando a la funcion para reiniciar la partida
else {
window.reiniciarPartida()
}
Evidentemente la solucion de Juan es mucho mas efectiva y evita que la pagina se vuelva a cargar, pero ese fue mi intento desesperado xD
Mi solución para que no para que no se rompiera el juego cuando no seleccionamos nada fue poner:
seleccionarMascota.style.display = ‘flex’ en la parte final del “else”. Quizas no es la mejor solución pero funcionó 😃
Ya muchos lo han dicho pero me gustaría igual hacer el aporte con algo más.
Yo también luché con el cannot GET /, y eso se soluciona cambiando el nombre de nuestro archivo html de mokepon.html a index.html.
Sin embargo, si hicieron lo mismo que yo y sacaron el archivo mokepon.js de la carpeta js para meterla en la carpeta public, el programa estará rotísimo en el celu y el compu. Para solucionar eso, dentro del archivo html, deben ir al fondo donde está script, y cambiar su contenido de “./js/mokepon.js” a “./mokepon.js”. Recordar, solo hacer esto si movieron el archivo y no la carpeta, si movieron la carpeta, no pasará nada raro 😉
BENDITO ERROR QUE APARECE Y NO SABER SOLUCIONARLO Uncaught (in promise) TypeError: Cannot set properties of null (setting ‘x’)
at digimon.js:462:41
at Array.map (<anonymous>)
at digimon.js:439:50
Doy gracias a todo el equipo de Platzi por tan espectacular curso. Quedé maravillado y encantado. Los profesores son increíbles y con una actitud buenísima, el contenido es muy completo. Llegar hasta aquí fue un reto, pero valió completamente la pena. Muchas gracias.
Después pasar horas y horas buscando la forma de solucionar cuanto error surgía, después de ver una y otras vez las clases, puedo decir que siento satisfacción al finalizar este curso. Se que aun estoy programando con las ruedas auxiliares, pero seguiré estudiando para mejorar mis habilidades. Gracias.
deben cambiar el nombre del archivo “mokepon.html” por “index,html"
y también sacar la " mokepon.js " de la carpeta “js” para poder guardarlo en la carpeta “publica” de forma mas sencilla.
luego cambiar el script en el html a:
<script src =”./mokepon.js"></script>
Hay pequeños detalles que los profes deben mencionar cuando se hacen cambios en el código, como por ejemplo cuando cambiamos de carpeta la dirección del src de donde sacamos el archivo de JS cambia y eso rompe el código, así como tambien que se debió cambiar el nombre del archivo html para que se pudiera correr en el servidor
el primer ejercicio lo solucione llamando a la función reiniciarJuego 😄
} else {
alert('SELECCIONA UNA MASCOTA')
reiniciarJuego()
}
llegue muy orgullo a esta clase…
movi los archivos de carpeta y se rompio todo 😭
por si a alguien le sirve … para que el juego cargue en el celu deben quitarle la protección contra sitios no seguros , estuvo 3 horas hasta que lo descubrí, al menos asi me funcionó a mi. Ahora tengo un montos de nuevos errores jeje pero ya es ese otro cuento !! un abrazo compañeros!
parce porque empieza así un curso de programación básica?
Me gustaria que a esta clase la complementen explicando como proceder para los que estamos en WSL, ya que corriendo el juego desde windows funciona perfecto pero desde la terminal de ubunto, no carga el juego con la ipv4.
Seria bueno porque me gustaria poder revisar mis proyectos tambien en el celular usando espress.static()
Hola me gustaria aportar como resolvi el problema de
“Cannot GET /” Failed to load resource: the server responded with a status of 404 (Not Found) lo que pasa
es que el nombre de la terminal como el nombre del html
debe ser index no solo el html almenos asi es como
me funciono
para los que les sucede el error 404 y les sale el mensaje: Cannot GET /. Esta es la solucion
Resulta que al configurar el servidor al crear el archivo package.json en la terminal establecimos con valores predeterminados en este caso index.html por lo que al cambiar el nombre del archivo mokepon.html a index.html lo solucina
Espero que les ayude aunque todavia desconosco como puedo cambiar ese valor predeterminado, espero ayudas tambien.
es muy frustrante que desde que empezó Diana estoy medio perdido porque ella no explica lo que hace, solo lo hace, como si ya entendieramos los conceptos (algo que no pasó con los otros porfesores). Por otro lado, en la clase 81 y 82 dejó de funcionar mi código pero no logro encontrar en donde está el error y ahora no tengo el código guardado a como estaba antes de empezar esas clases y no lo puedo recuperar.
Así mismo, descargo el código que tiene Platzi en los recursos pero tampoco corre en mi navegador. Solo se rompió en las últimas dos clases y eso es lo que me parece frustrante, que no lo voy a plder jugar ni mostrar a pesar de que hice todo el curso
Para aquellos a quien todavia les aparece el error:
“Failed to load resource: the server responded with a status of 404 (Not Found).”
tienen que cambiar el nombre “mokepon.html” a “index.html” y luego deslizar hasta donde tienen el script que carga “mokepon.js” en “index.html” y cambiar su direccion por la nueva direccion que esta en public.
Pueden colocar entre comillas “./” y les sera mucho mas facil colocar la direccion.
antes:
<script src= "js/mokepon.js"></script>
ahora:
<script src= "./mokepon.js"></script>
sigo sin poder ver a ambas mascotas en dispositivos diferentes, alguna recomendacion?
Lo, siento, ya intenté de todo y simplemente no me funciona en mi celular, no me presiona los botones, revisé literalmente linea por linea comparando el código de platzi con el mío, todo está perfecto. simplemente no funciona en mi celular. todo perfecto cuando lo abro desde localhost:8080 en la laptop
Si alguien más se estaba preguntando porqué el archivo html debe llamarse index.html, encontré este artículo que lo explica. Espero les sea de utilidad:
A mi no me pregunten como llegue hasta aca: lo voy a considerar como magia
Antes de continuar, mi solución fue solo reiniciar la página hasta que se seleccione la mascota:
else {
window.location.reload()
}
El juego me funciona cuando me conecto en el navegador como localhost:8080 pero cuando mi IP:8080 no me corrió ni en la laptop ni otros dispositivos.
Finalmente, encontré que debía revisar el firewall de windows pero resulto que estaba apagado pq otra aplicación lo estaba reemplazando… el antivirus, al revisarlo vi que ese firewall si estaba bloqueando la red wi-fi con la que estaba conectado y al darla como segura me permitió abrir el juego desde cualquier dispositivo con la IP:8080.
Por si le pasa a alguien… Saludos
Después de un largo tiempo trabajando en el proyecto he logrado que funcione como a mí me gusta en un 80 %, ya que varias cosas no funcionan como yo quiero, por ejemplo al terminar el combate el jugador ganador regresa al mapa, al perdedor eliminar la imagen del mapa y varias cosas más, lo he probado en dispositivos móviles y pc’s y funciona bien.
pantalla inicio
Ambos jugadores en el mapa con npc’s
Al colisionar inicia atacando el jugador que provoco la colisión
Turno 2
Turno 5
Al terminar el combate indica quien gano y quien perdio, desaparecen los botones y aparece el boton de reiniciar.
Las capturas la hice utilizando el modo responsive ya que si este funciona lo mas probable es que la version normal funcione tambien, lo cual asi es.
Proyecto en GitHub
https://github.com/FredyBarrantes/HtmlCssJavascript.git
Cuando pongan el ip, 8080 es solo para el celular.
en la web funciona sin el ip
hostname -I
Asi para los q utilizan Linux
Por algun motivo mi juego no funciona a la perfeccion
😦 Yo lo solucione desde la primera clase.
Pense que lo habian olvidado y oh sorpresa.
Les comparto mi codigo:
<
boton_mascota.addEventListener("click", ()=>{
if(inputHipodoge.checked == true || inputCapipepo.checked == true || inputRatigueya.checked == true || inputLangostelvis.checked == true || inputPydos.checked == true || inputTucapalma.checked == true){
selecionarMascotaJugador()
}else {
alert("Debe selecionar una mascota")
}
})>
Aaaaparte modifique el codigo para quitar el boton de seleccionar, y en cambio al dar click sobre el nombre de la mascota se oculte esa parte y salga la otra pantalla. 😄 me parecio mas fácil para cuando es en mobile, directo seleccionar al dar tap a la mascota
Yo lo había echo recargando la pagina, aunque era un poco molesto fue la solución que pensé en el momento
location.reload()
Excelente explicación
por fin estoy terminando
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?