Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: MakeroRealMadrid en Febrero 13, 2010, 12:31:58 PM

Título: ?Como puedo hacer una clasificaci?n de variables?
Publicado por: MakeroRealMadrid en Febrero 13, 2010, 12:31:58 PM
Hola a todos, haber, me explico:  

Tengo 5 variables:

global.variable1=13
global.variable2=21
global.variable3=35
global.variable4=46
global.variable5=57


-?Como las puedo mostrar en pantalla de tal forma que esten en orden de mayor a menor, el que mayor tenga el numero que est? arriba (Como una clasificaci?n de futbol, una cosa as?)?

Es decir que queden as? en pantalla si las dibujo:


                  ---Clasificaci?n---

1?---Variable5----------------------------------------------57
2?---Variable4----------------------------------------------46
3?---Variable3----------------------------------------------35
4?---Variable2----------------------------------------------21
5?---Variable1----------------------------------------------13


Un saludo!! ;)
Título: Re: ?Como puedo hacer una clasificaci?n de variables?
Publicado por: elviskelley en Febrero 13, 2010, 02:14:10 PM
sin modificar tu codigo.
en el event draw.
if (global.variable1 > global.variable2) and (global.variable1 > global.variable3) and
(global.variable1 > global.variable4) and (global.variable1 > global.variable5)
{draw_text("variable1"+string((global.variable1)))}

Esto lo haces igual para cada global.variable. la explicacion aqui solo mostraria la global.variable1 si es mayor que todas las demas...
global.variable

una manera mas limpia declara unas variables temporales y asignales las global.variable.
var a, b, c, d, e;
a=global.variable1
b=global.variable2
c=global.variable3
d=global.variable4
e=global.variable5

if (a > b) and (a > c) and (a > d) and (a > e)
{draw_text("variable1"+string((global.variable1)))}


Como puedes notar queda mas organizado.

oye todo esto va en el event draw.
Título: Re: ?Como puedo hacer una clasificaci?n de variables?
Publicado por: MakeroRealMadrid en Febrero 13, 2010, 03:14:00 PM
Gracias por contestar elvispresley  :D , oye el codigo este:


Cita de: elviskelley en Febrero 13, 2010, 02:14:10 PM
{draw_text("variable1"+string((global.variable1)))}


que es lo que hace ?, muestra en pantalla la variable1 +...?
otra cosa, creo que ese codigo no valdria porque lo que hace es ver si "a" es mayor que las demas, pero habria conflictos al hacerlos con los demas porque seria una cosa asi:

if a > b and if a>c ...

{

draw_text... 1?

}


como pondrias la b si es segunda por ejemplo??

bueno muchas gracias por contestar tio, este codigo es mu jodio lo e intentao en varios lenguajes y nunca me ha salido bueno un saludo
Título: Re: ?Como puedo hacer una clasificaci?n de variables?
Publicado por: Texic en Febrero 13, 2010, 04:52:22 PM
Uy, un desafio, q divertido  XD
A ver... (esto tomo mas tiempo de lo q parece):
a=var1
b=var2
c=var3
d=var4
e=var5
check()


Script Check:
if e>d {v=e e=d d=v check()}
if d>c {v=d d=c c=v check()}
if c>b {v=c c=b b=v check()}
if b>a {v=b b=a a=v check()}


Draw:
draw_text("Var1="+string(a))
draw_text("Var2="+string(b))
draw_text("Var3="+string(c))
draw_text("Var4="+string(d))
draw_text("Var5="+string(e))


Bueno, no le he probado, pero confio en que funcione, suerte, me has dado en q pensar a esta hora  XD
Título: Re: ?Como puedo hacer una clasificaci?n de variables?
Publicado por: Zeit en Febrero 13, 2010, 06:43:26 PM
Hola, puedes usar listas en lugar de variables y hay una funcion para ordenar, saludos.
Título: Re: ?Como puedo hacer una clasificaci?n de variables?
Publicado por: elviskelley en Febrero 13, 2010, 07:10:17 PM
lo reformule a una manera mas facil para ti.

var a, b, c, d, e, f; //declaro las variables.
a=global.variable1
b=global.variable2
c=global.variable3
d=global.variable4
e=global.variable5
f=max(a,b,c,d,e) //devolvera la vaiable con el mayor valor.
if f=e
{draw_text(x,y,"variable5: "+string(e))}
else
if f=d
{draw_text(x,y,"variable4: "+string(d))}
else
if f=c
{draw_text(x,y,"variable3: "+string(c))}
else
if f=b
{draw_text(x,y,"variable2: "+string(b))}
else
if f=a
{draw_text(x,y,"variable1: "+string(a))}
//asi sera mas facil para ti.
//solo cambia los nombres global.variables por las que desees comparar.

Hice el ejemplo lo dejo adjunto.
El codigo este esta en el script0
y lo llame desde el event draw del object0.
para sumar puntos usa las teclas, a,s,d,f,g.
veras como muestra solo la variable con mayor valor.
Título: Re: ?Como puedo hacer una clasificaci?n de variables?
Publicado por: knd144 en Febrero 13, 2010, 07:58:22 PM
Pues aun que ya este resuelto, conosco otro metodo para ordenar variables de mayor a menor (incluso a la inversa, si se desea): el metodo de la burbuja. Y funciona precisamente con arrays (aun que se las puede ingeniar uno para que funcione de otra manera).

el Pseudocodigo ser?a as?:
var N=(cantidad_de_espacios_en_el_arreglo)-1;
var axuiliar;

for(i=0;i<=n-1;i++)
{
  for(j=i+1;j<=n;j++)
  {
    if(array[j]>array)
    {
      auxiliar=array
      array=array[j]
      array[j]=auxiliar
    }
  }
}

de esta manera obtienes el arreglo ordenado de mayor a menor, siendo la posicion 0 el mayor y la posicion n-1(el final del arreglo) el menor.
;)
Título: Re: ?Como puedo hacer una clasificaci?n de variables?
Publicado por: MakeroRealMadrid en Febrero 13, 2010, 10:05:54 PM
Muchisimas gracias a todos sois la puta makina XD, weno 1 saludo y ahora a darle ca?a...  ;)