elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Ayuda javascript (herencia + prototype)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda javascript (herencia + prototype)  (Leído 2,340 veces)
kgarcia994

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Ayuda javascript (herencia + prototype)
« en: 6 Enero 2017, 17:16 pm »

Hola buenas, os agradecería mucho si me pudieras ayudar en un problema que tengo que me trae de cabezas estos dias.
El caso es que tengo que hacer para el ciclo un juego de rol (y no tenemos profes en esos módulos ya que la generalitat no nos ha asignado ninguno, y estudiamos sin profesor..).

El juego consiste en tener 3 clases (guerrero, mago blanco y mago negro) que heredan cada una de una clase que son Seres.

El problema que tengo viene al definir las funciones prototype.
El guerrero tiene tres funciones. 1- Pintar (pone la imagen y los datos en el navegador) 2 - Atacar (depende a quien ataque hace una cosa u otra) y 3 - MostrarDatos (muestra en un div los movimientos que hace y se tendría que ejecutar desde el método 2 (atacar)).
Cuando escribo contenido en las dos primeras funciones, pintar y atacar, me funciona todo bien, es decir refresco el navegador y se ve todo perfecto, pero, cuando pongo cualquier código (ya sea un alert, o un prompt) en la tercera función, al refrescar no se me ve nada.

Agradecería si alguien me pudiera ayudar en este problemilla ...

Adjunto el código de la clase guerrero que me falla :

Código
  1. function Guerrero(nombrePersonaje, imagenPersonaje, vidaPersonaje, idPantalla, fuerzaGuerrero) {
  2. /*Con el metodo call heredamos los atributos de "Ser",
  3. pasandole primero el objeto que las tendra ("this" en este caso por que queremos que erede el Guerrero) mas los atributos*/
  4. Ser.call(this, nombrePersonaje, imagenPersonaje, vidaPersonaje, idPantalla);
  5.  
  6. /*Seguidamente ponemos el atributo unico del guerrero*/
  7. this.fuerzaGuerrero = fuerzaGuerrero;
  8. }
  9.  
  10.  
  11. Guerrero.prototype.Pintar = function () {
  12. /*Seleccionamos el id (div) donde introduciremos los elementos (pasado por los parametros del constructor)*/
  13. var divPrincipal = document.getElementById(this.idPantalla);
  14.  
  15. /*Creamos un elemento (div) con una clase (para usarlo en el css mas adelante)
  16. y lo introducimos en el elemento seleccionado arriba (el div principal)*/
  17. var divPersonaje = document.createElement("div");
  18. divPersonaje.className = "clasePersonaje";
  19. divPrincipal.appendChild(divPersonaje);
  20.  
  21. /*Creamos un div para la imagen que extiende del div del personaje creado justo encima*/
  22. var divImagenPersonaje = document.createElement("div");
  23. divImagenPersonaje.className = "divImagenPersonaje";
  24. divPersonaje.appendChild(divImagenPersonaje);
  25.  
  26. /*Creamos la imagen, le ponemos el nombre de la clase,
  27. le pasamos la ruta de donde la cargara (this.imagenPersonaje)
  28. y le decimos que es hijo del div de la imagen creado encima*/
  29. var imagen = document.createElement("img");
  30. imagen.className = "imagenPersonaje";
  31. imagen.src = this.imagenPersonaje;
  32. divImagenPersonaje.appendChild(imagen);
  33.  
  34.  
  35.  
  36. /*Creamos un div para los datos del personaje que extiende del div del personaje creado al principio*/
  37. var divDatosPersonaje = document.createElement("div");
  38. divDatosPersonaje.className = "divDatosPersonaje";
  39. divPersonaje.appendChild(divDatosPersonaje);
  40.  
  41.  
  42. /*Creamos los elementos ("p" para texto), le añadimos los valores
  43. y ponemos extienda del div de los datos del personaje creado justo encima*/
  44. var nombre = document.createElement("p");
  45. nombre.innerHTML = "Nombre: " + this.nombrePersonaje;
  46. divDatosPersonaje.appendChild(nombre);
  47.  
  48. var vida = document.createElement("p");
  49. vida.innerHTML = "Vida: " + this.vidaPersonaje;
  50. vida.id = "vida"+this.nombrePersonaje; /**/
  51. divDatosPersonaje.appendChild(vida);
  52.  
  53. var fuerza = document.createElement("p");
  54. fuerza.innerHTML = "Fuerza: " + this.fuerzaGuerrero;
  55. divDatosPersonaje.appendChild(fuerza);
  56.  
  57. /*Creamos un elemento de tipo button, le ponemos el texto y seguidamente
  58. añadimos su metono onclick y le indicamos que sera la funcion Atacar.
  59. Una vez definido lo añadimos como hijo al div de los datos del personaje creado justo encima
  60. (Si usamos Atacar() no copiaremos la funcion si no que tendremos el resultado de la ejecucion de la funcion)*/
  61. var boton = document.createElement("button");
  62. boton.innerHTML = "Atacar";
  63. boton.onclick = this.Atacar;
  64. boton.id = this.nombrePersonaje;/*Le ponemos de ID el nombre para usarlo a la hora de calcular los ataques*/
  65. divDatosPersonaje.appendChild(boton);
  66.  
  67.  
  68.  
  69.  
  70. }
  71.  
  72. Guerrero.prototype.Atacar = function () {
  73.  
  74. //Pedimos el nombre del personaje al que atacar
  75. var nombrePersonajeElegido = prompt('Escribe el nombre del personaje al que quieres atacar');
  76.  
  77. //Comprobamos si existe el nombre escrito (key) en el array "Seres"
  78. if(nombrePersonajeElegido in Seres){
  79.  
  80. //Guardamos la ruta de la imagen
  81. var nombreImagen = Seres[nombrePersonajeElegido].imagenPersonaje;
  82. //Quitamos los 4 primeros caracteres de la ruta (img/) y los cuatro ultimos (.jpg o .png) y lo guardamos en mayuscula.
  83. var tipo = nombreImagen.slice(4,-4).toUpperCase();
  84.  
  85. //Comprobamos si es guerrero
  86. if(tipo=="GUERRERO"){
  87.  
  88. /*Guardamos el resultado del calculo entre la vida del personaje y la fuerza del que ataca
  89. ("this.id" devuelve el ID del boton (definido arriba) que sera el nombre del atacante)*/
  90. var vidaRestante= (parseInt(Seres[nombrePersonajeElegido].vidaPersonaje)) - (parseInt(Seres[this.id].fuerzaGuerrero));
  91.  
  92. /*Guardamos la vida restante que le queda al personaje atacado*/
  93. Seres[nombrePersonajeElegido].vidaPersonaje = vidaRestante;
  94.  
  95. this.MostrarDatos();
  96.  
  97. }
  98.  
  99. }else{
  100. alert('No existe ningun personaje con ese nombre');
  101. }
  102.  
  103.  
  104.  
  105. }
  106.  
  107. Guerrero.prototype.MostrarDatos = function () {
  108. /*Si pongo contenido aquí, ya no me funciona*/
  109. }

Muchas gracias por adelantado.


« Última modificación: 7 Enero 2017, 00:03 am por #!drvy » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Ayuda javascript (herencia + prototype)
« Respuesta #1 en: 7 Enero 2017, 00:19 am »

En un principio no veo ningún error. Se puede deber a muchas causas según que interpreta el navegador (el html y la clase padre a la que llamas).  Normalmente si deja de ejecutarse o directamente no se ejecuta es por un error de syntax o parecido. Fíjate en la consola (F12) a ver que error te tira.


Saludos


En línea

kgarcia994

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Ayuda javascript (herencia + prototype)
« Respuesta #2 en: 7 Enero 2017, 23:25 pm »


Editado: Al parecer es el navegador, al utilizarlo desde Mozilla no me funcionaba, pero ejecutándolo desde el Chrome si que me carga este tercer metodo..
« Última modificación: 8 Enero 2017, 13:29 pm por kgarcia994 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con ejercicios de herencia
Java
mili03 3 5,041 Último mensaje 25 Junio 2010, 17:51 pm
por Leyer
ayuda ajax prototype
Desarrollo Web
kakashi20 1 2,791 Último mensaje 28 Octubre 2011, 06:49 am
por Mr. Crowley
[Java] Ayuda con herencia
Programación General
samyri 2 1,890 Último mensaje 19 Agosto 2014, 16:37 pm
por samyri
Ayuda con programa con herencia en C++
Programación C/C++
Y@mil 0 1,357 Último mensaje 17 Mayo 2015, 18:15 pm
por Y@mil
ayuda herencia c++
Programación C/C++
johnnyd77 0 1,414 Último mensaje 2 Noviembre 2016, 23:50 pm
por johnnyd77
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines