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


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ayuda para "Clic en el objeto".
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para "Clic en el objeto".  (Leído 56 veces)
Tachikomaia


Conectado Conectado

Mensajes: 1.776


Hackentifiko!


Ver Perfil
Ayuda para "Clic en el objeto".
« en: Hoy a las 06:19 »

El juego te dice "Prepárate para hacer clic en el objeto, no en el fondo", luego de un tiempo al azar aparece el objeto, y cuando le haces clic ganas.

Quiero que el juego se repita, mostrándote el promedio de cuánto tardas en hacer el clic.

Para que no sea bueno hacer clics constantemente, si haces clic en el fondo tu promedio se multiplica.

Para calcular bien el promedio debo crear un array o muchas variables, aún no lo intenté, no es el tema, lo que me tiene trancado es que quiero que el tiempo de espera dependa de tu tiempo promedio y no lo logro.

Luego explico este código:
Código
  1. // How fast the player wins:
  2. FakeAverageTime = 0;
  3. TimePassed = 0;
  4. AparitionProgress = random(250);
  5. // Usada repetidamente en un objeto en frame 2:
  6. function FireApearing () {
  7. AparitionProgress++;
  8. if (AparitionProgress > 500) {
  9. TimePassed = 0;
  10. // On frame 3 the fire is present:
  11. gotoAndStop (3);
  12. }
  13. }
  14. // Used on the fire sprite when its clicked:
  15. function FireExtinguished () {
  16. FakeAverageTime = Math.round((FakeAverageTime+TimePassed)/2);
  17. AparitionProgress = 100+random(150);
  18. gotoAndStop (2);
  19. }

En vez de usar tiempo de espera uso AparitionProgress, no hay mucha diferencia, el conteo sube en vez de bajar, y el objeto aparece cuando se llega a un número.

Lo que quiero cambiar es:
AparitionProgress = 100+random(150);

No sé cómo sería una buena fórmula pero quiero que:
- Siempre haya algo de random.
- Entre mayor sea tu promedio (más tardes), mayor sea el tiempo de espera (AparitionProgress comienza con un valor más bajo).
- El tiempo de espera no sea demasiado alto, tenga un límite (AparitionProgress no puede ser menor que 0).

Más concretamente algo como:
- Si tu promedio es 0 (prácticamente imposible que suceda, pero bueno), AparitionProgress debe ser 490~500.
- Si tu promedio es 30, AparitionProgress debe ser 430~460.
Si tu promedio es muy alto (si juegas mal a propósito o aún no entendiste), AparitionProgress debe ser 0~10.
Y claro cualquier número intermedio debe tener su rango de valores. Ah pero siempre es un número entero.

Lo más parecido que tengo como fórmula es:
Minimo = 490-FakeAverageTime*2
AparitionProgress = Minimo+random(490-Minimo)
Si AparitionProgress < 0
   AparitionProgress = random(10)

Luego de mucho tiempo pensándolo (quizá 2hs), no le veo mucho sentido a seguir, si otro lo puede resolver en minutos.


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