Autor Tema: [AYUDA] Con mi juego  (Leído 583 veces)

Desconectado NDSi

  • PHPero Avanzado
  • ****
  • Mensajes: 410
  • Karma: 8
  • Sexo: Masculino
    • Ver Perfil
[AYUDA] Con mi juego
« en: 21 de Noviembre de 2009, 20:52:18 pm »
Hola a todos, no se me ocurre un buen titulo para el tema. Yo tengo un juego que hay diferentes moustros por atrapar, todos los moustros estan en la tabla 'moustros', con sus nombres, puntos de vida, etc.

1.- Lo que no se hacer es para que de toda esa tabla al apretar ese boton salga uno al azar. O por ejemplo que los que tienen como valor 'dificultad' 3 salgan mas seguidos que los que tienen 1.
2.- Tampoco se como cambiar los niveles, o sea, para cambiar los puntos de vida, ¿tengo que crear un moustro por cada nivel o de que manera lo hago?
3.- Y tambien,  por ultimo, si el camptura un moustro que se sume a su equipo, y eso tampoco lo se hacer, podria ser en la tabla 'usuarios' fila 'moustros' pero solo se pondria un moustro y yo necesito sacar muchos moustros (o sea los de su equipo).

Espero averme explicado.

Comunidad PHPeros

[AYUDA] Con mi juego
« en: 21 de Noviembre de 2009, 20:52:18 pm »

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[AYUDA] Con mi juego
« Respuesta #1 en: 22 de Noviembre de 2009, 00:03:12 am »
Como titulo, podrias poner 'Problema con razonamiento nivel/experiencia' :P
Escribe bien MONSTRUOS, por dios!

1.- Para seleccionar al azar se usa mysql_query("SELECT... ORDER BY RAND()");
Para lo de la dificultad, tengo un metodo que iba a usar en mi propio juego, aunque no se si hará un bucle infinito... xD
El tema es guardar el % de posibilidades que tiene de salir (de 1 a 100 obviamente, aunque 100... mejor no, como mucho 60/70)
Sacar los monstruos, en tu caso, con la query y ordenarlos en un array asi: array('id' => array('PORCIENTOKNECESITA', 'ACIERTOSKLLEVA');

El PORCIENTOKNECESITA es 100 MENOS el porciento de la db (no me acuerdo como razoné esto :S)
Con un bucle se van aciendo rands y se suman a ACIERTOSKLLEVA, cuando alguno tenga los aciertos k necesita, se coge ese:
Kedaria asi:

$query 
mysql_query...;
while(
$monstruos my...) { // un while para fetch normal
$mons = array($monstruos['id'] => array(100-$monstruos['porcientodeladb'], 0);
}
// este while es para crear el array de los monstruos ($mons);
while(1>0) { // es un array k se cumple si 1 es mayor de 0... es infinito
$rand array_rand($mons1); // Esta funcion devuelve un elemento del array aleatoriamente (uno, porqu lo puse asi en el 2º parametro)
$mons[$rand][1]++; // Sumamos 1 a los aciertos
if($mons[$rand][0] == $mons[$rand][1]) {
//$rand es tu id, haz aki o fuera del while lo k kieras, tras el "break" todo parará... (ha sonado misterioso? :P)
break; // Para el while
}
}


Ya me contaras si funciona, da error o te jode el internet (dudo lo ultimo xD)
La he hecho sobre la marcha, solo tenia la idea xD

2.- No entiendo nada :S segun el nivel de k? si es de la gente, en el WHERE de la query añades:
WHERE nivelnecesario = '".$niveldeluser."'
(nivelnecesario es un campo de la tabla monstruos)

3.- Puedes separar por comas sus IDS, con explode las separas y con foreach podrias recorrerlo y sacar cada monstruo

Desconectado NDSi

  • PHPero Avanzado
  • ****
  • Mensajes: 410
  • Karma: 8
  • Sexo: Masculino
    • Ver Perfil
Re:[AYUDA] Con mi juego
« Respuesta #2 en: 22 de Noviembre de 2009, 02:20:29 am »
Gracias.
Con la dos me referia a que por ejemplo.

Monstruo Nivel 1
Ataque: 100
Defensa: 50
Monstruo Nivel 2
Ataque: 250
Defensa: 50

O sea, cada raza de los monstruos puede tener un nivel que al encontrarte con el monstruo saldra al azar. Por ejemplo digamos que sale Monstruo 1 y en la DB tiene como datos, Ataque = 50, Defensa = 100, y yo quiero que depende el nivel del monstruo esos datos sean diferentes.

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re:[AYUDA] Con mi juego
« Respuesta #3 en: 22 de Noviembre de 2009, 11:15:08 am »
Lo que se suele hacer para esos casos es una función matemática que de como resultado el ataque y la defensa, por ejemplo:

Ataque(nivel) = 50*nivel + 25/nivel
Defensa(nivel) = 25*nivel;

De esa forma solo tienes que sacar el nivel de la base de datos, y lo demás lo calculas sobre la marcha, en tiempo de ejecución que se dice.

Si necesitas que cada monstruo tenga una función diferente, se me ocurre que podrías colocar las funciones en la BD, luego sustituir "nivel" por el nivel del monstruo con str_replace, y por ultimo volcar el resultado de la función en una variable con eval().

Saludos!
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[AYUDA] Con mi juego
« Respuesta #4 en: 22 de Noviembre de 2009, 12:30:55 pm »
No es tan facil encontrar una buena ecuación para hacer esto, yo me estrujé mucho el cerebro...

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re:[AYUDA] Con mi juego
« Respuesta #5 en: 22 de Noviembre de 2009, 12:53:09 pm »
No es tan facil encontrar una buena ecuación para hacer esto, yo me estrujé mucho el cerebro...

Bueno, os ahorraré trabajo.
Siguiendo este esquema:

Monstruo Nivel 1
Ataque: 100
Defensa: 50
Monstruo Nivel 2
Ataque: 250
Defensa: 50

Las ecuaciones serían:
Ataque(nivel) = 100 + 75*nivel
Defensa(nivel) = 50;

Pero supongo que era solo un ejemplo jaja

Saludos!
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[AYUDA] Con mi juego
« Respuesta #6 en: 22 de Noviembre de 2009, 23:56:34 pm »
Bueno para que haces esto 100-$monstruos['porcientodeladb'] y para que sumas uno a los aciertos o,o. Otra cosa crei que break solo se usaba para switch.
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[AYUDA] Con mi juego
« Respuesta #7 en: 23 de Noviembre de 2009, 15:11:18 pm »
No, no se usa solo para switch...

Se suman para saber cuantos aciertos llevas...

eso es para saber el numero de aciertos k necesita cada monstruo, no me preguntes como razone eso de 100-$monstruos['porciento'] x k no me acuerdo

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[AYUDA] Con mi juego
« Respuesta #8 en: 23 de Noviembre de 2009, 20:41:04 pm »
Ok ya entendí el código, era que no me había fijado bien.
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>