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
Máquina de Estados?
- droman
- Posts: 263
- Joined: Mon Oct 04, 2021 9:09 am
- Location: Leganés (Madrid)
- Has thanked: 35 times
- Been thanked: 80 times
Re: Máquina de Estados?
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:
Resumiendo, Declaras un estado con state "nombre" y lo llamas con _change("nombre")
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.
}
La muerte, segura de su victoria nos da toda la vida de ventaja.
Las fotografías de los que viajan, son la cultura de los que se quedan.
Las fotografías de los que viajan, son la cultura de los que se quedan.
Re: Máquina de Estados?
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
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?
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
- droman
- Posts: 263
- Joined: Mon Oct 04, 2021 9:09 am
- Location: Leganés (Madrid)
- Has thanked: 35 times
- Been thanked: 80 times
Re: Máquina de Estados?
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!
Gracias!
La muerte, segura de su victoria nos da toda la vida de ventaja.
Las fotografías de los que viajan, son la cultura de los que se quedan.
Las fotografías de los que viajan, son la cultura de los que se quedan.
Re: Máquina de Estados?
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
and
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;
}
}- droman
- Posts: 263
- Joined: Mon Oct 04, 2021 9:09 am
- Location: Leganés (Madrid)
- Has thanked: 35 times
- Been thanked: 80 times
Re: Máquina de Estados?
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.
Aún así, se podría hacer, pero es mucho más sencillo implementar el "change" de VR-Script.
La muerte, segura de su victoria nos da toda la vida de ventaja.
Las fotografías de los que viajan, son la cultura de los que se quedan.
Las fotografías de los que viajan, son la cultura de los que se quedan.