Hola. Tengo una duda (quiz?s un poco tonta) y es que no s? c?mo hacer que un objeto elija al azar entre una serie de acciones que le ponga. S? que la acci?n 'random()' elige un n?mero al azar y te lo devuelve en forma de variable, pero no s? como hacer que elija una acci?n entre otras de forma aleatoria.
Gracias de antemano. :)
Pues mira, hay otra muy parecida a random(), que es choose(), en esa puedes poner las acci?nes que quieras y todas se har?n o no aleatoriamente ;).
Ejemplo:
choose(acci?n1,acci?n2,acci?n3,...)
Espero que te sirva ;)
Creo que me sirve, el caso es que quiero que ejecute aletoriamente un conjunto de acciones, es decir:
choose(conjunto1,conjunto2)
Y eso he visto que no me deja hacerlo, asi que prob? poniendo una alarma (el choose se activa cuando colisiona con un objeto) como cada una de las acciones a elegir:
choose(alarm[0]=5,alarm[1]=5)
Pero el objeto ignora las alarmas completamente, ?a qu? se debe? ?se pueden poner conjuntos de acciones en el choose?
Gracias otra vez. :)
MMM, ok, vamos a hacer que todos las cosas se reunan en una variable.
(ten en cuenta q todo lo que voy a decir es para que lo entienda un novato, independientemente de tu nivel, porq yo no lo s? ;))
Imaginate:
*acciones_1//conjunto de acciones 1
*acciones_2//conjunto de acciones 2
*acciones_3//conjunto de acciones 3
*end_acciones_1//fin de acciones 1
*end_acciones_2//fin de acciones 2
*end_acciones_3//fin de acciones 3
En el evento create:
acciones_1 = true
acciones_2 = true
acciones_3 = true
end_acciones_1 = true
end_acciones_2 = true
end_acciones_3 = true
//esto es en formato c?digo
Pero si quieres te puedes ir a control>set variable y hacer lo mismo
en "variable" pones: acciones_1,acciones_2,blablabla...
y en value pones false.
[/code]
Ahora en step:
if acciones_1 = true and end_acciones_1 = false //esto indica que se ha activa el grupo de acciones 1 y estas no han terminado (end_acciones_1)
{
lo que sea//esto es la 1? acci?n que quieres que se produzca
lo que sea
lo que sea...
}
if acciones_2 = true and end_acciones_2 = false
{
lo que sea...
Ahora vamos con el choose()
[code]//ahora pones:
choose(acciones_1 = true,acciones_2 = true, acciones_3 = true)
PERO!! Hay un problema, las accione, se activan, pero permanecen activadas, asiq tendr?s que poner, seg?n la acci?n, uqe cunado termine la ultima acci?n, el conjunto de acciones vuelva a false
Ejemplo:
if acciones_1 = true adn end_acciones_1 = false//si se pudene realizar las acciones y estas no han terminado...
{
instance_create(obj_manzana,x,y)//hace la accion de crear una manzana.
x=1//se va al punto horizontal 1
y=2//se va al punto vertical 2
end_acciones_1 = true//indica que las acciones han terminado
}
else //sino
{
exit//no lo hagas
}
PD: si esto te dice algo como..."unknown variable and" cambia el "and" por "&&" (sin comillas) que es lo mismo (pero creo que en versiones m?s bajas al gm7 no te lo admite ;))
PD2: Es posible que por la programaci?n de tu juego esto no te funcione, de ser as?, habria que ver como funciona para poder darte una respuesta, pero esto es muy en general
Hoyga!!!!!!!!!!!!!!!!!!! XD
Este parece un trabajo para... ?la sentencia
switch! Yo nunca he utilizado la funci?n
choose para escoger entre acciones sino entre valores, por lo que dudo de la efectividad de las soluciones anteriores (de hecho creo que no funcionan, corr?janme si me equivoco).
Volviendo a la soluci?n, Joe Pino que debes usar
choose para escoger entre valores, en combinaci?n con
switch del siguiente modo:
Citarswitch (choose('Comer','Dormir','VerTV','UsarGM','BuscarTesorosEnterradosEnElParqueDeLaCiudad'))
{
case 'Comer':
//AQU? DEBES PONER TODAS LAS ACCIONES QUE DESEES PARA COMER
break; //es importante cerrar el grupo de acciones con un break para detener el switch en este punto
case 'UsarGM':
//AQU? DEBES PONER TODAS LAS ACCIONES QUE DESEES PARA DORMIR
break;
case 'verTV':
//YA CONOCES LA RUTINA, ES AS? PARA CADA ACCI?N
break;
//Y AS? SUCESIVAMENTE...
}
Cabe resaltar que si lo deseas puedes usar valores num?ricos en el
choose en vez de cadenas de texto, aunque las cadenas de texto mantienen mejor la legibilidad del c?digo. Para una mejor explicaci?n de c?mo trabaja la sentencia
switch puedes referirte al manual en espa?ol online [CLIC AQU?] (http://www.comunidadgm.org/manual_GM/Sentencia_switch.htm). Alternativamente puedes guardar el resultado de la funci?n
choose en una variable y luego pasarle esa variable como par?metro al
switch.
Espero te ayude ?Saludos!