Marzo 28, 2011, 05:53:51 AM Ultima modificación: Abril 04, 2011, 01:14:15 AM por p34
Hola, tengo un problema ya que estoy usando un ciclo FOR para dibujar un sprite por cada nivel de mi juego pero los sprites al llegar al nivel 12 exceden la view y me gustaria saber como le puedo hacer para que al pasar esto dibuje los sprites a la derecha de los otros, volviendo a empezar desde arriba.
Aqui les dejo como lo estoy haciendo:
[gml]var i;
for (i=0; i<obj_nivel.nivel_desbl; i+=1)
{
 if i = opcion-1
   {
    draw_sprite(spr_nivel,-1,view_xview+50,view_yview+25+30*i);
   }    
   else
   {
    draw_sprite(spr_nivel2,-1,view_xview+50,view_yview+25+30*i);
   }
}[/gml]
Una persona puede equivocarse mil veces pero solo fracasa cuando le echa la culpa a otro por sus errores

se me ocurre que crees un objeto que sea la barra de la derecha y en el room le pones que la siga, entonces al bajar com las flechas o como le hagas que tambien baje y puedas ver los otros botones :D

#2 Marzo 31, 2011, 07:06:16 PM Ultima modificación: Marzo 31, 2011, 07:18:27 PM por licshendu
Hola debes usar dos for pero antes que eso, debes  calcular el n?mero de veces m?ximo que cabe el sprite en la altura de la view:
Primero necesitamos una variable que contenga el numero de niveles desbloqueados ejemplo n=12

Despu?s tenemos que calcular cuantas veces cabe el sprite en la altura de la view, por ejemplo:
ny=view_hview[0] div sprite_get_height(sprite0)

Luego tenemos que dividir el numero de niveles desbloqueados entre el numero de veces que cabe el sprite en la altura de la view
nx=n div ny

Despu?s como el numero de niveles desbloqueados no siempre ser? m?ltiplo exacto del numero de veces que cabe el sprite en el alto de la view. Calculamos el residuo
nr= n mod ny

Ahora utilizando dos for en draw ya se dibujaran a la derecha si exceden la view
for(i=0;i<=nx;i+=1)
{
   if i=nx and nr!=0 nny=nr else nny=ny// en todas las columnas a excepci?n de la ultima se dibujara el numero m?ximo de veces que quepa el sprite en la altura de la view
   for(j=0;j<nny;j+=1)
       draw_sprite(sprite0,-1,view_xview[0]+i*sprite_get_width(sprite0),view_yview[0]+j*sprite_get_height(sprite0))
}


saludos  ;) anexo el ejemplo
"Si he llegado a ver más lejos que otros, es porque me subí a hombros de gigantes"  Isaac Newton

gracias por la ayuda. ya dibuja todos los sprites que ocupo pero todavia no puedo hacer que se pueda escoger uno para ir a un nivel. te dejo el ejemplo
Una persona puede equivocarse mil veces pero solo fracasa cuando le echa la culpa a otro por sus errores

#4 Abril 03, 2011, 01:14:57 AM Ultima modificación: Abril 03, 2011, 01:16:36 AM por licshendu
solo hab?a que modificar una l?nea y bueno agregue lo de llevarte a los niveles saludos p34  :D
"Si he llegado a ver más lejos que otros, es porque me subí a hombros de gigantes"  Isaac Newton

Cita de: licshendu en Abril 03, 2011, 01:14:57 AM
solo hab?a que modificar una l?nea y bueno agregue lo de llevarte a los niveles saludos p34  :D

Gracias de verdad, no tenia la mas minima idea de como lograrlo y tu me lo resolviste  :D
Una persona puede equivocarse mil veces pero solo fracasa cuando le echa la culpa a otro por sus errores