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


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ¿Sugerencias sobre hacer peleas simples de RPG?
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Sugerencias sobre hacer peleas simples de RPG?  (Leído 60 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.819


Hackentifiko!


Ver Perfil
¿Sugerencias sobre hacer peleas simples de RPG?
« en: Hoy a las 07:20 »

Tengo una duda relacionada con el cursor pero aprovecho para preguntar de todo.

Código
  1. fscommand ("fullscreen", "true");
  2. ////////////////////////////////////////////////////////////////////
  3. // DKMario:
  4. ////////////////////////////////////////////////////////////////////
  5. DKMarioPow = 100;
  6. DKMarioOptions = ["Jump", "Hammer"];
  7. Option1 = DKMarioOptions[0];
  8. Option2 = DKMarioOptions[1];
  9. Option3 = "-----";
  10. Option4 = "-----";
  11. Option5 = "-----";

Los personajes por ahora tendrán sólo 1 estadística (Pow) y hasta 5 opciones.
Supongo que es mejor definir las opciones en un array, eso hago, pero como mi Flash no puede mostrar arrays en cuadros de textos las defino también en variables sueltas. En el array no están todas pero por ahora no hay problema. Entiendo que con un while se podría definir más automáticamente, lo haré en otro momento.

Código
  1. function AddDKMario () {
  2. attachMovie("sDKMario", "P1", 100);
  3. P1._X = 20;
  4. P1._y = 316;
  5. }
  6. AddDKMario();

P1 es personaje 1.
La profundidad (el 100) es un número provisorio, ni siquiera me acuerdo de si mayor es más atrás o delante.

Código
  1. function AddOptions () {
  2. attachMovie("sOptions", "Options", 150);
  3. Options._X = 40;
  4. Options._y = 276;
  5. }
  6. // Items:
  7. HammerPow = 200;

El objeto sOptions tiene código y es lo más complicado por ahora, luego lo detallo.
HammerPow es para cálculos de daño al usar esa arma.

Código
  1. ////////////////////////////////////////////////////////////////////
  2. // DK:
  3. ////////////////////////////////////////////////////////////////////
  4. DKPow = 1000;
  5. DKActions = ["Barrel", "Bellydrum"];
  6. function AddRival (rival) {
  7. attachMovie(rival, "P2", 110);
  8. P2._X = 746;
  9. P2._y = 316;
  10. }
  11. AddRival("sDK");

Como es el rival no necesita que el contenido de los arrays se muestren en texto, así que no hay variables sueltas para las opciones en este caso.

Frame 2:
AddOptions();
stop ();

Básicamente en ese punto por ahora se ve así:


El dibujo de sOptions no es un cerebro, es un globo de pensamiento con animación, normalmente son de color blanco pero probé poner otro claro basado en los colores del personaje. No recuerdo haber probado rojo, luego veo.

La cosa es que ese objeto tiene código:
attachMovie("sCursor", "Cursor", 1);
setProperty ("Cursor", _x, 22);
setProperty ("Cursor", _y, -141.3);

Eso agrega el martillo que ven a la izquierda. O que debería verse, la similitud de colores del fondo y mango no ayuda, aunque lo haya cambiado. Suelo tener problemas con los colores, aún no resolví un problema que tengo con un monitor.

En el objeto, hay otro con código que se va a repetir al final de la animación:
Código
  1. onClipEvent (load) {
  2. Globos = 0;
  3. // Para limitar la velocidad del cursor:
  4. FramesOcurridos = 15;
  5. }
  6. onClipEvent (enterFrame) {
  7. // Para que aparezcan globos:
  8. t = Math.random()*Math.PI*2;
  9. x = 150*Math.cos(t);
  10. y = 75*Math.sin(t);
  11. Globos++;
  12. if (Globos>100) {
  13. Globos = 1;
  14. }
  15. Name = "Globo"+Globos;
  16. attachMovie("sGlobo", Name, Globos);
  17. setProperty (Name, _x, x);
  18. setProperty (Name, _y, y);
  19. //
  20. // Movimiento del cursor:
  21. //
  22. FramesOcurridos = Math.min(FramesOcurridos+1, 15);
  23. if (FramesOcurridos == 15) {
  24. // Si se presiona arriba:
  25. if (Key.isDown(38)) {
  26. _parent.Cursor._y = _parent.Cursor._y-24.7;
  27. FramesOcurridos = 0;
  28. } else if (Key.isDown(40)) {
  29. // Si se presiona abajo:
  30. _parent.Cursor._y = _parent.Cursor._y+24.7;
  31. FramesOcurridos = 0;
  32. }
  33. }
  34. }

Lo de los globos está bien.

El tema del cursor es que si no le pongo límite apretás la tecla 1 segundo y se mueve como 10 veces. Entonces puse que se mueva cada 15 frames, eso es suficiente para que uno pueda apretar la tecla y soltarla.
El problema es que si uno mantiene la tecla apretada, en los RPGs el movimiento suele ser más seguido, sin el problema que mencioné.
Además, si alguien presionara las teclas muy rápido, algunas presiones no se captarían.
Algo estoy haciendo mal.
Se ve bastante bien, no se nota salvo que hayas visto mucho cómo se mueven los cursores en estos juegos. Básicamente, si pongo que se muevan muy seguido, presionar un momento puede hacer que se mueva 2 veces, pero si no se mueve tan rápido falta la rapidéz visual que se ve en estos casos en estos juegos.
¿Cual sería la solución?

Por otro lado, no sé si voy por buen camino con lo de agregar un objeto (que es como que se active o aparezca un menú) y todo eso.
Mi plan es algo como:

Frame 1: El que no se repetirá, se define lo necesario. También es el único que avanza incondicionalmente.

2: Momento en que el jugador elige qué hacer. Aparece el "pensamiento", sOptions, el jugador puede mover el cursor y elegir. Cuando elige (algo elegible, no las rayitas), se pasa al siguiente frame.

3: Se muestra la acción elegida, la animación. Cuando termina, si el rival sobrevive, se pasa al siguiente frame. Por ahora son sólo peleas de 1 vs 1.

4: El rival o la IA elige una acción y aparece la animación. Si el personaje del jugador sobrevive, se vuelve al frame 1.

Cuando haya más variedad de batallas puede que deba separar algunas cosas del frame 1 y entonces habrá otro, pero bueno... ¿creen que voy bien? No sé si ese "plan" va a funcionar o me dará líos. No es necesario que las etapas estén separadas así en frames pero parece más ordenado y fácil de entender.

Edit: Acá le cambié los colores:

Los globitos de abajo los tengo pendientes. Creo que está mejor, pero bueno, parece cuestión de gustos. Creo que el rojo quedaría mejor en el medio pero por algún motivo lo que está en los extremos ocupa más espacio, es más visible, por eso puse el rojo ahí.


« Última modificación: Hoy a las 07:43 por Tachikomaia » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines