Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - bonachiu

31
La gracia de esto que te puse es que son variables tipo array, ademas bidimensional, con dos indices  de la forma variable[indice1,indice2]

entonces .. bueno mas que nada es explicarte como funcionan los arrays (te van a ser muy utiles como maker.. casi te diria que son las variables que mas juego te van a dar y con las que te puedes ahorrar muchos quebraderos de cabeza y lineas de codigo, asi que prestale atencion o lee sobre ellas o busca ejemplos, voy a intentar explicarlo)

ponte que queremos hacer una lista de dinero de 5 personas, personas que van del 0 al 4 (para aprovechar la posicion 0), nota, de momento usamos arrays unidimensionales, mas abajo pasamos a bidimensionales

tendriamos

dinero[0]=20;
dinero[1]=40;
dinero[2]=50;
dinero[3]=100;
dinero[4]=10;

tenemos 5 valores en el array, que corresponden a 5 personas, cada una con una cantidad que yo he elegido

entonces.. imaginate que quiero sumar el dinero de todos porque es una puesta en comun.. tendria que ir uno por uno?? y decir.. suma=dinero[0]+dinero[1]+dinero[2]+dinero[3]....

es una perdida de tiempo ya que los arrays tienen la ventaja que puedes jugar con sus indices

si hicieras un for lo podrias hacer todo de una tirada, primero inicializarias suma a 0 y luego..

suma=0;
for(i=0;i<5;i+=1){
  suma=suma+dinero[ i ];
}

date cuenta que en el indice hemos puesto i que es el indice que va a ir cambiando en el for, de 0 a un numero menor que 5 sumando de 1 en 1 (asi funciona el for que he puesto)


bien, con esto tenemos que si ahora queremos asociarle el dinero a un nombre de persona tendriamos que hacer una lista aparte no?

aparte de los dinero... haria falta una de nombres llamada nombre

nombre[0]="Jose";
nombre[1]="Pepe";
nombre[2]="Diego";
nombre[3]="Rafa";
nombre[4]="Ramon";

y seguido a esto recordamos el valor del dinero que tenia cada uno

dinero[0]=20;
dinero[1]=40;
dinero[2]=50;
dinero[3]=100;
dinero[4]=10;

Entonces a nuestra forma de entender, el 0 es Jose y tiene 20, el 3 es Rafa y tiene 100, el 4 es Ramon y tiene 10...

son variables separadas que comparten indice, puedes jugar asi, o decidir hacer un array bidimensional

unificariamos todo con dos indices,, recordamos que la estructura era variable[indice1,indice2]

Entonces, indice1 lo usaremos como antes, para el numero de la persona (del 0 al 4), y indice2 lo vamos a usar con valor 0 o valor 1, si es 0 estamos con el dinero, y si es 1 estamos con el nombre de la persona, quedaria asi, unificado lo vamos a llamar listado

listado[0,0]=20;
listado[0,1]="Jose";
listado[1,0]=40;
listado[1,1]="Pepe";
listado[2,0]=50;
listado[2,1]="Diego";
listado[3,0]=100;
listado[3,1]="Rafa";
listado[4,0]=10;
listado[4,1]="Ramon";

Bien, contando con que entiendes esto, el ejemplo que te puse es que cada step que da el personaje, osea en cada instante que tu decides que se mueve (quiza lo hayas hecho por el evento Key Left o Right, no lo se la verdad, en donde hayas hecho que su eje X o Y cambie pones a continuacion el codigo que te di)

Te explico como funciona..

paso[1,0] acumula el valor del eje X del personaje en cierto momento
paso[1,1] acumula el valor del eje Y del personaje en cierto momento

y con paso [0,  ] pasa lo mismo tanto en el 0 como en el 1, lo que pasa es que con paso[0,  ] guardamos justo el paso anterior, pero antes de hacerlo le decimos a paso[1, ] que acumule el que tiene paso[0,  ] asi creamos una memoria de los ultimos dos pasos del personaje, donde estaba hace un paso (en paso[0, ]) y donde estaba hace dos pasos ( en paso[1, ]). de esta manera si el personaje obedece a paso[1, ] andara con dos pasos de retras respecto al personaje, lo que dara la impresion de que lo persigue a su misma velocidad, que es lo que nos interesa, porque un move_towards_point()... deja mucho que desear..

espero que te haya servido
32
jaja cierto, seria ponerse a contar espacios " " y nada.. dividirlo entre 7, no seria mucha historia..
33
Creo que has mencionado que has puesto Applies to: Object, deberia ser self en si mismo en la alarma para que se detenga, eliges la direccion central con speed 0, imposible que falle
34
vale.. te pongo un codigo que almacenaria en 7 variables distintas, aprovechando los indices de las variables tipo array (espero que las conozcas), no hace falta que este en ejecucion todo el tiempo, con que se ejecute una vez y quede guardado en las variables antes de mostrarlo por pantalla, sobra

txt_original="Este es el texto que vamos a dividir en 7 partes";
fraccion=ceil(string_length(txt_original)/7);
for(i=0;i<7;i+=1){
txt_part[i]=string_copy(txt_original,i*fraccion+1,fraccion);
}
parte=0;



y luego para mostrar alguna parte simplemente..

draw_text(x,y,txt_part[parte]);  //donde parte es un indice del 0 al 6 con los fragmentos del texto
35
antes que intentar borrar el bounding box en caso de que se pudiera te recomendaria que tu personaje se hiciera invisible e inmovible, que creara un objeto que no tenga eventos de colision ni de deteccion de solidos en su misma posicion con el sprite de ?l saltando y que se desplace donde se tendr?a que haber desplazado ?l saltando y que cuando llegue, cambie bruscamente la x y la y del personaje real a la suya, se elimine a el mismo y que haga al personaje visible y movible de nuevo.. suena un poco chapuza, pero cuando ya se tiene montado el engine es dif?cil cambiarlo, yo para un asuntillo que estoy trabajando directamente tuve que desechar los solidos predefinidos del game maker porque me provocaban problemas en casos similares al tuyo (el mio no es rpg)  y tuve que crear mi propia clase de objetos que mi juego considerar?a solidos para lo que el quisiera
36
Preguntas y respuestas / Re: Seguir al personaje
Diciembre 08, 2009, 01:40:55 PM
Los dos ejemplos que te han puesto son utiles, pero creo que cuando has preguntado ped?as algo parecido a lo que vimos en su d?a con Pokemon Edici?n amarillo en la que pikachu te segu?a y iba dos pasos detras tuya, cada paso que dabas entonces el se movia uno como recordando el trazado que hiciste con el protagonista.

Simplemente haz un array con dos posiciones paso[0,0] y paso[0,1], y paso [1,0] y paso [1,1] cada step o evento de movimiento en el que hagas que el personaje se desplace en su eje X o Y (inicializa paso[0] y paso[1] en create , en ese mismo evento y debajo pon algo asi donde pers es el personajillo que te sigue:

//tenemos paso[0] y paso[1] ambos con subindices tambien 0 y 1, pondremos que el subindice 0 es para las X, y el 1 para las Y, y el indice de la izquierda 0 y 1 para el paso 0 o el paso 1
paso[1,0]=paso[0,0];
paso[1,1]=paso[0,1];
paso[0,0]=xprevious;
paso[0,1]=yprevious;
pers.x=paso[1,0];
pers.y=paso[1,1];

37
Si, la verdad es un lujo, me acuerdo que en GM5 era sprite_mirror_horizontal() o algo asi, y habia que crear al menos dinamicamente una variable que guardara al sprite dado la vuelta, ahora es una simple propiedad sin tener que duplicar sprites, por no hablar de image_angle, aunque esa funcion es solo para premium.. y con los blend y los surfaces puedes hacer practicamente lo que quieras, pero es una movida, porque para que salga bien debes usar sprites con medidas pares tanto de ancho como de alto, si no, aunque sea por un pixel, se nota la chapuzilla jaja!
38
Preguntas y respuestas / Re: problemita
Diciembre 08, 2009, 12:43:13 PM
Bien.. Primero de todo si llevas mas de dos meses con game maker, deber?as quitarte la costumbre de usar los botoncitos de drag & drop, porque programar programar realmente con el c?digo. Osea que si no me equivoco tu problema es que si aprietas las dos teclas se queda con el evento del de la izquierda y claro, no se cu?nto le habras puesto de avance en el jump to position, pongamosle que 5 pixeles, al estar los dos eventos a la vez +5 -5 = 0 osea que no avanza y como el ?ltimo evento en ejecutarse es el de la izquierda nos quedamos con el sprite del t?o andando a la izquierda. Realmente no s? c?mo lo habr?s montado, pues si sueltas izquierda teniendo derecha apretada el sprite deber?a volver a la derecha y andar a la derecha ya lo hace

Debe haber algo m?s en el c?digo entonces, no s?lo cambiar de sprite y saltar a cierta posicion cuando pulsas la tecla, me equivoco?