Fundamentos de Programación

1

Bienvenida a Platzi: ¿qué necesitas para tomar el curso?

2

¿Cómo aprender programación?

3

Crea tu primer sitio web

4

Sitios web con HTML

5

Estructura de árbol en HTML

6

Instalando tu primer editor de código

7

Cómo declarar variables y usar prompt

8

Algoritmo de piedra, papel o tijera

9

Algoritmo avanzado de piedra, papel o tijera

10

Aleatoriedad

11

Refactor del código usando funciones

12

Ciclos

13

Gana 3 veces

14

Archivos de HTML y JavaScript

15

¿Qué es el DOM?

Quiz: Fundamentos de Programación

Desarrollando un juego con HTML y JavaScript

16

Maquetación con HTML

17

Sección de elegir mascota

18

¿Dónde ubicar la etiqueta script? Conectando HTML con JavaScript

19

Escuchando eventos con JavaScript

20

addEventListener

21

Manipulación del DOM

22

Enemigos aleatorios

23

Ataques en JavaScript

24

Ataques aleatorios del enemigo

25

Imprimiendo ataques del enemigo

26

¿Ganaste, perdiste o empataste?

27

Tablas de verdad

28

Creando el contador de vidas

29

¿Quién ganó el juego?

30

Reiniciando el juego

31

Ocultando elementos HTML con JS para mejorar la UX del juego

Quiz: Desarrollando un juego con HTML y JavaScript

Estilos con CSS

32

Anatomía de CSS

33

Tipos de display

34

Flexbox

35

Modelo de caja

36

Imágenes para los Mokepones

37

Estilos del botón

38

Adaptando HTML al diseño del juego

39

Layout: título y ataques

40

Adaptando JavaScript al diseño del juego

41

CSS Grid

42

Responsive Design

43

Detalles finales

Quiz: Estilos con CSS

Optimización de código

44

Revisión de código

45

Don't repeat yourself (DRY)

46

Clases y objetos

47

Clases y objetos de Mokepon

48

Arrays o arreglos

49

Objetos vs. arreglos

50

Ciclos: manipulando el DOM con iteradores

51

Declaración lenta de variables

52

Una sola fuente de la verdad

53

Mascotas aleatorias con arreglos

54

Ataques dinámicos por cada mascota: extraer

55

Renderizado dinámico en HTML

56

Eventos de click dinámicos

57

Secuencia de ataques del enemigo

58

Iniciando el combate

59

Resolviendo el reto de condicionales

60

Optimizando el frontend del juego

Quiz: Optimización de código

Mapa con canvas

61

Introducción a canvas: dibujando con JavaScript

62

Moviendo a Capipepo hacia la derecha

63

Movimiento hacia todas las direcciones

64

Movimientos con el teclado

65

Imágenes y personajes de fondo

66

Métodos en las clases

67

Obstáculos y colisiones

68

Combate entre mokepones colisionados

69

Mapa responsive

70

Botones bonitos y viewport

Quiz: Mapa con canvas

Backend: videojuego multijugador

71

¿Qué es backend?

72

Instalación de Node.js y NPM

73

Terminal de comandos y Node.js

74

Servidor web con Express.js

75

HTTP, localhost, servidores y puertos

76

Express.js y fetch: API REST con JavaScript

77

JSON y POST: mokepon online

78

Transmisión de coordenadas

79

Mokepones dinámicos en el mapa

80

Optimizando el mapa del juego

81

Batalla entre jugadores

82

Consumiendo la API de ataques del enemigo

Quiz: Backend: videojuego multijugador

Próximos pasos

83

Probando el juego en varios dispositivos

84

¿Y ahora qué curso tomar?

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Última oportunidad para asegurar tu aprendizaje por 1 año a precio especial

Antes: $249

Currency
$189/año

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

0D
6H
41M
38S
Curso Gratis de Programación Básica

Curso Gratis de Programación Básica

Juan David Castro Gallego

Juan David Castro Gallego

Probando el juego en varios dispositivos

83/84
Recursos

Aportes 146

Preguntas 137

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

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.

Para deshabilitar el seleccionado del texto en los botones se puede hacer con el siguiente codigo en css

user-select: none;

Hay que proteger al profe Juan, es demasiado bueno para este mundo.

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.

YO: DESPUÉS DE ACBAR EL CURSO DE PROGRAMACIÓN BÁSICA

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>

Les dejo el juego que cree gracias a este curso, está hecho sin POO porque aún lo estoy estudiando y lo quiero aprender bien
Cambié la temática e hice que los personajes tengan 3 acciones, dos botones son de ataque y uno de cura, y cada personaje tiene diferentes stats. Espero que les guste!
https://alanjaqs.github.io/Pixefights-Game

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.

IP local

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).

IP pública

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.

Disclaimer

No estoy seguro de si puede ser peligroso hacer ésto, solo lo comento como dato.

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!!

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?

Para remplazar todos los "localhost"
use la opcion de visual studio code: “Select All Ocurrences”

Ctrl + Shift + L por defecto

Espero los que tengan este error puede ver este comentario.

En el minuto del video 16:03 Juan logra entrar utilizando la dirección IPv4 del WIFI que tiene asignado su PC, si no les funcionan hagan lo siguiente:

Primero verifiquen que su PC y otros dispositivos estén conectados a la misma red WIFI.

Si todavía no logan que funcione en otros dispositivos sigan 👇

Funciona con sistemas operativos Windows

Revisen el firewall de Windows, pero como se hace eso¿?

El firewall una herramienta de seguridad que previene el acceso no autorizado a una red, muchas ocasiones los antivirus lo remplazan y eso dificulta que otros otros dispositivos puedan acceder a nuestra red local.

  1. Con ayuda del buscador de Windows se dirigen a Firewall de Windows Defender
  2. Verifica si tu antivirus esta administrando esta configuración. (en mi caso es McAfee)
  3. Te diriges a tu antivirus y y buscas la opción Firewall
  4. Lo desactivas.

Esto es supremamente importante:

Solo desactívalo por un tiempo determinado, al tenerlo desactivado tu PC se encuentra vulnerable lo cual puede causar que intrusos accedan a el y se roben información personal o en el peor de los casos que controlen tu PC.

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 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/

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!

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.

Todos los Créditos a @ric.arellano92!
Para evitar el error “mokepon.js:448 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘nombre’)” lo que hice fue agregar un if que evalué si el mokepon existe o no, esta validación también se aplica en la parte de pintar mokeponEnemigo:

//---------------------Al recuperar enemigos--------------------------
                mokeponesEnemigos = enemigos.map(function (enemigo)
                {
                    let mokeponEnmigo = null
                    if(enemigo.mokepon != undefined)
                    {
                        const mokeponNombre = enemigo.mokepon.nombre 
                        switch (mokeponNombre)
                        {
                        case "Hipodoge":
                            mokeponEnmigo = newMokepon('Hipodoge', './assets/mokepons_mokepon_hipodoge_attack.png', 5, './assets/hipodoge.png', enemigo.id)
                                break
                            case "Capipepo":
                                mokeponEnmigo = newMokepon('Capipepo', './assets/mokepons_mokepon_capipepo_attack.png', 5, './assets/capipepo.png', enemigo.id)
                                break
                            case "Ratigueya":
                                mokeponEnmigo = newMokepon('Ratigueya', './assets/mokepons_mokepon_ratigueya_attack.png', 5, './assets/ratigueya.png', enemigo.id)
                                break
                            default:
                                break
                        }

                        mokeponEnmigo.x = enemigo.x
                        mokeponEnmigo.y = enemigo.y
                    }
                        return mokeponEnmigo
                })

//---------------------------------Al tratar de pintar enemigos----------------------------------------
        mokeponesEnemigos.forEach(function (mokepon)
        {
            if(mokepon != undefined){
                mokepon.pintarMokepon()
                revisarColision(mokepon)
            }
        })

subí la respuesta de @ric.arellano92 porque estuve rompiéndome la cabeza durante una semana y quiero que otros lo puedan solucionar, ya que desde las carpetas del curso da error. saludos!

En mi colegio nunca ví esa actitud en la que se tuviera un interés genuino para que los estudiantes aprendieran. Gracias de verdad!

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:

Espero que al hacer la prueba me de unos 10000 platzi puntos.

Juanda es un excelente profesor, explica todo lo que coloca en el código, ojala el resto explicara igual

Así había solucionad, ya que había visto ese hueco.

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 👌

yo dejaría la pantalla en blanco, me gusta porque es como dándole a entender al jugador que se ponga serio

Me encanta la energía de Juan David jajajaja

Yo tambien me emocione cuando vi que la clase era del profe Juan 😊

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

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.

Que alegria ver a juanito de nuevo, el viejo confiable tocayo c:

Yo que pensaba que este iba a ser un video de “felicitaciones muchachos” :´ )

Que chevere ver otra clase del profe juan david, excelente manera de enseñar

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.

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 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ó 😃

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

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

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

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

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

Dejo por acá mis resultados!

https://github.com/alejonaranjo83/Mokepon.git

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…

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:

https://axarnet.es/blog/que-es-index-html

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

Quiero decirles que solucione mi problema accediendo a mi ip:8080 de mi wifi, el problema estaba en mi firewall de windows 10, les dejo un tutorial para que puedan agregar el puerto 8080 como excepcion al firewall y de esta manera les cargue su página desde otro dispositivo a través del wifi:
.
Abre el Firewall de Windows:
.
Ve al “Panel de control” de Windows y selecciona “Sistema y seguridad” y luego “Firewall de Windows”.
.
Configuración Avanzada:
.
En el panel izquierdo, selecciona “Configuración avanzada”.
.
Reglas de Entrada:
.
En el panel izquierdo, selecciona “Reglas de entrada”.
.
Nueva Regla:
.
En el panel derecho, haz clic en “Nueva regla…” para abrir el asistente para crear una nueva regla de entrada.
.
Tipo de Regla:
.
Selecciona “Puerto” y haz clic en “Siguiente”.
.
Especificar Puerto:
.
Selecciona “TCP” y especifica el número de puerto (8080) que deseas permitir. Haz clic en “Siguiente”.
.
Acción:
.
Selecciona “Permitir la conexión” y haz clic en “Siguiente”.
.
Perfiles:
.
Deja marcadas todas las opciones (Dominio, Privado, Público) y haz clic en “Siguiente”.
.
Nombre de la Regla:
.
Asigna un nombre a la regla (por ejemplo, “Permitir Puerto 8080”) y opcionalmente proporciona una descripción. Haz clic en “Finalizar”.

necesito ayuda porque no me aparece error en la consola y tampoco me aparecen los mokepones del la segunda pestaña

Hola, luego de que se seleccionen los ataques en ambos dispositivos me sale este error
GET http 😕/192.168.0.19:800/mokepon/0.8147895793180704/ataques net::ERR_CONNECTION_REFUSED
Uncaught (in promise) TypeError: Failed to fetch
at obtenerAtaques (mokepon.js:278:5)

En mi pc uso solo conexión a internet por cable Ethernet y no pude abrir mis mokepones en el celu, estaba tan emocionado

quiero aprender a conectar mi archivo html con js
si estabas usando WSL2 para crear el proyecto y quieres ejecutar el proyecto directamente sobre la IP de tu WSL2, haz los siguientes pasos: 1. Abre el cmd de tu windows. 2. Asegúrate que estés en el usuario que tienes el WSL2: `C:\Users\USER>` 3. Escribe el comando `wsl hostname -I` 4. Te mostrará la ip en la que estará corriendo tu WSL2. 5. Ve al navegador y escribe la ip que te arrojo, seguido del puerto. Y ya, ojalá te haya servido.

Hola! Mi solución para evitar que los jugadores le dieran click al botón “Seleccionar” antes de elegir un personaje fue:

1. Al iniciar el juego desaparecerlo con:
botonMascotaJugador.style.display = ‘none’

2. Crear una función aparte para que luego de haber elegido el personaje, el programa acceda esta función y habilitara el botón. De manera que, al hacer ahora click al boton “Seleccionar”, continuara la lógica del juego que hemos estado programando.

<function seleccion(){
    botonMascotaJugador.style.display = 'block'
    botonMascotaJugador.addEventListener('click', seleccionarMascotaJugador)
}> 
recargue la paǵina en el celular y no me volvío a cargar el juego de mokepon, ¿alguien sabe como solucionarlo? ¿Por qué pasa esto?

si tienne el error 404 en la consola, deben usar el comando " node .\index.js "
en vez de " node index.js "

El juego me funciona correctamente, pero en la consola de inspeccionar del primer jugador me aparece el siguiente error cuando se une otro:
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘nombre’)
at mokepon.js:615:43
at Array.map (<anonymous>)
at mokepon.js:610:32
y deja de aparecer una vez el enemigo selecciona su mascota.

Estaría bien una aparición estelar de Juan David, porque quiero entender a que se debe, gracias.

para evitar usar dos: ontouch y onmouse , usen solamente onpointer , que tiene un uso general , onpointerup para detener movimiento y onpointerdown para mover

Ya que llegamos al final, cuanto se demoraron en completar el curso?

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 😉

creo que lo hiceun poco diferente pero me sirvio



function seleccionarMascotaJugador() {
jugar = 1

    if (inputscorpio.checked) {

        inputpersonajejugador.innerHTML = inputscorpio.id
        personajepc = inputscorpio.id

    } else if (inputcapri.checked) {

        inputpersonajejugador.innerHTML = inputcapri.id
        personajepc = inputcapri.id
    } else if (inputsagi.checked) {

        inputpersonajejugador.innerHTML = inputsagi.id
        personajepc = inputsagi.id
    } else if (inputsagicorpio.checked) {
        inputpersonajejugador.innerHTML = inputsagicorpio.id
        personajepc = inputsagicorpio.id
    } else if (inputscorcapri.checked) {
        inputpersonajejugador.innerHTML = inputscorcapri.id
        personajepc = inputscorcapri.id
    } else if (inputcapritario.checked) {
        inputpersonajejugador.innerHTML = inputcapritario.id
        personajepc = inputcapritario.id
    }
   
    else {
        jugar = 0
        alert(" debes seleccionar un personaje")
    }
    if (jugar == 1) {
 
        sectionmapa.style.display = "flex"
        sectionpersonaje.style.display = "none"
        iniciarmapa()
        extraerataques(personajepc)
        selecionarangelo (personajepc)
    }

Alguien podrian ayudarme con esto ? [Intervention] Slow network is detected. See https://www.chromestatus.com/feature/5636954674692096 for more details. Fallback font will be used while loading: chrome-extension://liecbddmkiiihnedobmlmillhodjkdmb/fonts/CircularXXWeb-Book.woff2

express.static --> permite servir archivos estaticos
ontouch --> lee los eventos tactil

Sinceramente no entiendo porque funciona cuando se le da la gana, toca como borrar cache.

Otra cosa, le falto desarrollo al juego, hay mucho bug. Por querer hacerlo multiplayer, ojala hubiera quedado completo lo dejare así con las ganas de compartirlo .
player1= empate

player2=disque pierde XD


Gracias por las bases para ser full stack.

  1. Si les colisianan los enemigos entrando desde diferentes dispositivos:

Me pasaba a mi que cuando me conectaba desde el movil, y el portatil al mismo timepo, cuando seleccionaba un personaje de algun dispositivo, automaticamente detectaba colision desde el dispositivo opuesto.

La solucion es agregar una verificacion en la linea de la funcion de verificacion de colision, solo tienen que agregar esta linea:

    function checkCollision(enemy){
        if(enemy === undefined){
            return;
        }

De esta MANERA si no se detecta un enemigo, evitas que se colisione sobre si mismo

En Mac pueden usar el comando “ifconfig -a”. De ahí buscar en el código el apartado “en0:” y después “inet”

❤️