Page 1 of 1
Máquina de Estados?
Posted: Sun Oct 31, 2021 5:35 pm
by angelqa
hola,
¿alguien me recomienda algún ejemplo para cotillear cómo funciona la "máquina de Estados" con las clases?
En el manual no he sabido encontrar una explicación suficiente para echarlo a andar y creo que me vendrían bien para una cosa que estoy intentando hacer.
Gracias
Re: Máquina de Estados?
Posted: Mon Nov 01, 2021 12:30 am
by droman
Si abres la demo de SPACEMANBOW del FTP tienes, toooodo un ejemplo de como funcionan.
Aún así... una pequeña explicación en base a lo que yo he aprendido del ejemplo.
Dentro de una clase, puedes establecer ESTADOS de esta manera:
Code: Select all
state "logo1"
{
//Todo lo que tenga que ver, por ejemplo, con mostrar un logo.
alpha = IncreaseValue(alpha, 200, GetFTime() * 4.0f);
manbow.SetColor(RGB(255-alpha, 255-alpha, 255-alpha));
manbow.SetAlpha(alpha);
if (alpha == 200)
{
_change("logo2");
}
}
state "logo2"
{
//Aquí haces todo lo que tenga que hacer el logo, como antes.
}
Resumiendo, Declaras un estado con
state "nombre" y lo llamas con
_change("nombre")
Re: Máquina de Estados?
Posted: Mon Nov 01, 2021 7:48 am
by angelqa
Gracias Droman
He estado cotilleando la demo de spacemanbow del ftp y ya imagino por donde van los tiros
Aunque me pierdo mucho con el código de esta demo, creo que con unos estados y unos timers (también echaba esto en falta) debería poder hacer lo que intento, muchas gracias
Re: Máquina de Estados?
Posted: Sat Aug 06, 2022 5:44 pm
by Javi
Code: Select all
switch (_type)
{
case "enemy_yellowcar": _type = 0; break;
case "enemy_buggy": _type = 1; break;
case "enemy_torreta": _type = 2; break;
case "enemy_ovni": _type = 3; break;
case "enemy_pinkcars": _type = 4; break;
case "item_weapon": _type = 5; break;
case "enemy_furgoneta": _type = 6; break;
case "enemy_drones": _type = 7; break;
case "enemy_misil": _type = 8; break;
case "enemy_mina": _type = 9; break;
case "enemy_camion": _type = 10; break;
case "enemy_boss": _type = 12; break;
case "enemy_tanque": _type = 13; break;
}
source : http://www.msxvr.es/doc/wiki/mdwiki.htm ... 77e64f3.md
Re: Máquina de Estados?
Posted: Mon Aug 08, 2022 12:55 pm
by droman
No entiendo este código.... es un simple switch, pero no veo la relación con la máquina de estados.... ¿Podrías explicarlo, por favor?
Gracias!
Re: Máquina de Estados?
Posted: Mon Aug 15, 2022 8:18 am
by Javi
A state machine commonly involve enum states and a switch case of every state.
Take a look of this example
https://www.tecbolivia.com/index.php/ar ... ado-finito
Code: Select all
enum eEstados { // Los estados se la MEF se definen en una enumeracion
DETENIDO,
YENDO_ARRIBA,
YENDO_ABAJO
} estado;
and
Code: Select all
estado = DETENIDO; // La MEF se inicializa en estado DETENIDO
while (TRUE) {
switch (estado) {
case DETENIDO:{ //
// Verificar si se ha seleccionado un nuevo piso:
piso_nuevo = seleccion_piso();
if (piso_nuevo > piso_actual)
estado = YENDO_ARRIBA;
else if (piso_nuevo < piso_actual)
estado = YENDO_ABAJO;
} break;
case YENDO_ARRIBA:{
piso_actual = comprobacion_piso();
if (piso_nuevo == piso_actual)
estado = DETENIDO;
} break;
case YENDO_ABAJO:{
piso_actual = comprobacion_piso();
if (piso_nuevo == piso_actual)
estado = DETENIDO;
} break;
}
}
Re: Máquina de Estados?
Posted: Wed Aug 24, 2022 11:06 pm
by droman
Eso es correcto, pero en VR-Script no se hace de ese modo. Tienes una función específica, como te muestro en el mensaje superior.
Aún así, se podría hacer, pero es mucho más sencillo implementar el "change" de VR-Script.