Deberías plantearte ya que con el nivel que tienes necesitas dar el siguiente paso.. no pierdas mas tiempo, decidete y para unos meses para comer algunas galletas de c++, sin eso vas a ir a ciegas toda la vida
[GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
Pero lo que mas te recomiendo es que aprendas C++, por que en ese lenguaje tienes todo esto por toda internet bien explicado, una vez que sepas C++ y entiendas algún ejemplo no te costará mucho trabajo traerte el ejemplo a gemix, yo aprendí c++ y luego monkey y ahora puedo traerme cualquier código "salvando las diferencias por que monkey es oop" a gemix, y eso me hace feliz XD..
Deberías plantearte ya que con el nivel que tienes necesitas dar el siguiente paso.. no pierdas mas tiempo, decidete y para unos meses para comer algunas galletas de c++, sin eso vas a ir a ciegas toda la vida
Deberías plantearte ya que con el nivel que tienes necesitas dar el siguiente paso.. no pierdas mas tiempo, decidete y para unos meses para comer algunas galletas de c++, sin eso vas a ir a ciegas toda la vida
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- SimulatorOne
- Posts: 6626
- Joined: Tue Nov 17, 2009 2:52 pm
- Location: Barcelona
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
lo siento pero es que no me entero de nada, prefiero ir experimentando poco a poco, intentar simular un comportamiento bueno de la bola.
lo que si me dado cuenta mirando los PRG de este proyecto(del año 2010), que no esta NADA obtomizado, y el codigo es muy muy rebuscado y liante.
Ademas consume una burrada de memoria ram.
ademas usando Gemix.... 5.7 y 6.0 beta .... dios >_<
que tiempos XDDD
lo que si me dado cuenta mirando los PRG de este proyecto(del año 2010), que no esta NADA obtomizado, y el codigo es muy muy rebuscado y liante.
Ademas consume una burrada de memoria ram.
ademas usando Gemix.... 5.7 y 6.0 beta .... dios >_<
que tiempos XDDD
- SimulatorOne
- Posts: 6626
- Joined: Tue Nov 17, 2009 2:52 pm
- Location: Barcelona
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
Hola
quiero que prueben este primer test de Colision de la Bola contra paredes de CUALQUIER FORMA ANGULO TAMAÑO.
De momento esta en fase de pruebas, mejoras y correcion de bugs.
En este test, simplemente haremos caer 1 bola des del oyo, caerá hasta toparse con una de las 2 paredes.
Una de las paredes se puede mover usando el teclado, mover,angulo y el tamaño.
Añado en el test distintas formas de Paredes que pueden probar...
El objetivo de este test es ajustar y corregir la colision Vertical Y sobre las paredes(o objetos duros,por ejemplo un fliper)
Se que este test es pobre, pero es que lo estoy programandolo des de 0.
Y actualmente tengo preguntas acerca del ORDEN de Correcion de cordenadas XY al colisionar con las paredes:
-Que se debe ajustar primero las cordenadas X o Y???
-Las piezas de paredes pueden mover la bola? Plataformas moviles, paredes, puertas y Flipers.
Actualmente funciona a suerte de que cuando movemos la pieza, la bola se mueve junto con ella... pero de momento en vertical Y
Algunas veces este test, puede fallar las colisiones... y la bola atraviesa el objeto de manera erronea...
De todas formas de momento estoy probandolo de este metodo un tanto Brusco por COLLISION(se que es la cosa mas lenta) , gracias a esto me permite averiguar una colision con Paredes con formas.
En cambio si lo hubiera echo con OVERLAP (podeis modificarlo en el PRG) NO puede detectar las formas, pero si el Angulo,Size,shear y flags...
Puede que al final, para que me sea mas sencillo la programacion, y tenga que sacrificar las paredes con Formas, es posible que llege a usar Mapa de Durezas... creo que es mucho mas rapido a la hora de comprobar... ademas que me chiva del color RGB de las colisiones por color MAP_GET_PIXEL.
Segun el juego de Megadrive de Virtual Pinball, solo hay paredes con angulos concretos: [0],[22.5],[45],[67,5],[90] y el tamaño de las paredes es el mismo.
Recuerdo que me estoy basandome en las fisicas de este juego:
quiero que prueben este primer test de Colision de la Bola contra paredes de CUALQUIER FORMA ANGULO TAMAÑO.
De momento esta en fase de pruebas, mejoras y correcion de bugs.
En este test, simplemente haremos caer 1 bola des del oyo, caerá hasta toparse con una de las 2 paredes.
Una de las paredes se puede mover usando el teclado, mover,angulo y el tamaño.
Añado en el test distintas formas de Paredes que pueden probar...
El objetivo de este test es ajustar y corregir la colision Vertical Y sobre las paredes(o objetos duros,por ejemplo un fliper)
Se que este test es pobre, pero es que lo estoy programandolo des de 0.
Y actualmente tengo preguntas acerca del ORDEN de Correcion de cordenadas XY al colisionar con las paredes:
-Que se debe ajustar primero las cordenadas X o Y???
-Las piezas de paredes pueden mover la bola? Plataformas moviles, paredes, puertas y Flipers.
Actualmente funciona a suerte de que cuando movemos la pieza, la bola se mueve junto con ella... pero de momento en vertical Y
Algunas veces este test, puede fallar las colisiones... y la bola atraviesa el objeto de manera erronea...
De todas formas de momento estoy probandolo de este metodo un tanto Brusco por COLLISION(se que es la cosa mas lenta) , gracias a esto me permite averiguar una colision con Paredes con formas.
En cambio si lo hubiera echo con OVERLAP (podeis modificarlo en el PRG) NO puede detectar las formas, pero si el Angulo,Size,shear y flags...
Puede que al final, para que me sea mas sencillo la programacion, y tenga que sacrificar las paredes con Formas, es posible que llege a usar Mapa de Durezas... creo que es mucho mas rapido a la hora de comprobar... ademas que me chiva del color RGB de las colisiones por color MAP_GET_PIXEL.
Segun el juego de Megadrive de Virtual Pinball, solo hay paredes con angulos concretos: [0],[22.5],[45],[67,5],[90] y el tamaño de las paredes es el mismo.
Recuerdo que me estoy basandome en las fisicas de este juego:
You do not have the required permissions to view the files attached to this post.
- kozka
- Posts: 2111
- Joined: Sun Feb 01, 2009 9:36 pm
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
Tiene muy buena pinta , te falta la fuerza de la gravedad y colision con mas bolas(si lo quieres complicar)
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
Tiene fallos, aveces la bola se vuelve loca y sale por debajo de la plataforma.
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- SimulatorOne
- Posts: 6626
- Joined: Tue Nov 17, 2009 2:52 pm
- Location: Barcelona
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
Tiene muy buena pinta: pues la verdad es que graficamente no es nada, lo importante es que pueda currarme las fisicas.
la fuerza de la gravedad ya la tiene en Y vertical.
El problema que que las colisiones no son precisas, aun que quisiera u_u
y por eso algunas veces la bola se traspasa el muro por error.
colision con mas bolas(si lo quieres complicar): mmmm... es muy complicado, ademas que antes deberia terminar con las fisicas de la bola xD
incluso he probado de usar fget_angle con floats: viewtopic.php?f=73&t=4543
pero me frustra que no sepa como usar e entender el 90% de las funciones de MATH2D.
Solo me se las mas sencillas de Div2
la fuerza de la gravedad ya la tiene en Y vertical.
El problema que que las colisiones no son precisas, aun que quisiera u_u
y por eso algunas veces la bola se traspasa el muro por error.
colision con mas bolas(si lo quieres complicar): mmmm... es muy complicado, ademas que antes deberia terminar con las fisicas de la bola xD
incluso he probado de usar fget_angle con floats: viewtopic.php?f=73&t=4543
pero me frustra que no sepa como usar e entender el 90% de las funciones de MATH2D.
Solo me se las mas sencillas de Div2
- kozka
- Posts: 2111
- Joined: Sun Feb 01, 2009 9:36 pm
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
cuando digo lo de la fuerza de la gravedad , ahora ya cae la pelota , pero si hay pendiente no cae a eso me refiero.
- SimulatorOne
- Posts: 6626
- Joined: Tue Nov 17, 2009 2:52 pm
- Location: Barcelona
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
Aun no hay inercias de pendientes, esa info la tiene que obtenerla de la Pared que colisiona, obteniendo un Angle de esa pared o/y direcion de velocidad XY.
Depende de la Direcion de la Bola.
Actualmente lo muevo por cordenadas XY(Float), en Angle no uso de momento...
Es decir, que hay 2 velocidades: XSP (horizontal), YSP (Vertical)
Si la bola va a: XSP=0 YSP=10; quiere decir que va Hacia abajo en un Angulo de 90º
con esta funcion me averigua ese Angulo de direcion de la Bola.
[Codebox=gemix file=Untitled.gemix]ANGLE=FGET_ANGLE(0,0,XSP*1000,YSP*1000);[/Codebox]
y lo multiplico por 1000, para obtener mayor precision del angulo.
una vez sabido el angulo de la bola, en cuanto colisiona con una pared... la pared tambien tiene un Angulo.
Esto se calcula el Angulo de la Bola + el Angulo de la pared... y se hace el Nuevo Angulo de Destino/Rebote de la Bola
Ese Angulo se debe convertirse en nuevos valores XSP (horizontal), YSP (Vertical).
un ejemplo grafico:

y con varios angulos de paredes y angulos de trayectoria de la bola diferentes:

Seria algo parecido a esto:
[Codebox=gemix file=Untitled.gemix]XSP=VEL* cos(angle)/1000;
YSP=VEL*-sin(angle)/1000;[/Codebox]
Lo que si, necesito Averiguar es la Velocidad de la Bola
Pero en una Variable Float VEL.
Esto deberia obtenerlo calculando XSP (horizontal)entre YSP (Vertical).
calculamos XSP=0 YSP=10; >> es igual a: VEL=10;
PEro no es lo mismo que esto:
calculamos XSP=10 YSP=10; >> es igual a: VEL=10;
mal!
NO es lo mismo, ya que se esta moviendose en Diagonal a una distancia diferente.
y luego tengo un futuro problema y no se si es posible solucionarlo u_u

Como es posible ajustar la colision en esos puntos... cuando la bola tiene un punto central de cordenada y un radio.
Depende de la Direcion de la Bola.
Actualmente lo muevo por cordenadas XY(Float), en Angle no uso de momento...
Es decir, que hay 2 velocidades: XSP (horizontal), YSP (Vertical)
Si la bola va a: XSP=0 YSP=10; quiere decir que va Hacia abajo en un Angulo de 90º
con esta funcion me averigua ese Angulo de direcion de la Bola.
[Codebox=gemix file=Untitled.gemix]ANGLE=FGET_ANGLE(0,0,XSP*1000,YSP*1000);[/Codebox]
y lo multiplico por 1000, para obtener mayor precision del angulo.
una vez sabido el angulo de la bola, en cuanto colisiona con una pared... la pared tambien tiene un Angulo.
Esto se calcula el Angulo de la Bola + el Angulo de la pared... y se hace el Nuevo Angulo de Destino/Rebote de la Bola
Ese Angulo se debe convertirse en nuevos valores XSP (horizontal), YSP (Vertical).
un ejemplo grafico:
y con varios angulos de paredes y angulos de trayectoria de la bola diferentes:
Seria algo parecido a esto:
[Codebox=gemix file=Untitled.gemix]XSP=VEL* cos(angle)/1000;
YSP=VEL*-sin(angle)/1000;[/Codebox]
Lo que si, necesito Averiguar es la Velocidad de la Bola
Pero en una Variable Float VEL.
Esto deberia obtenerlo calculando XSP (horizontal)entre YSP (Vertical).
calculamos XSP=0 YSP=10; >> es igual a: VEL=10;
PEro no es lo mismo que esto:
calculamos XSP=10 YSP=10; >> es igual a: VEL=10;
NO es lo mismo, ya que se esta moviendose en Diagonal a una distancia diferente.
y luego tengo un futuro problema y no se si es posible solucionarlo u_u
Como es posible ajustar la colision en esos puntos... cuando la bola tiene un punto central de cordenada y un radio.
You do not have the required permissions to view the files attached to this post.
- kozka
- Posts: 2111
- Joined: Sun Feb 01, 2009 9:36 pm
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
una cosa te digo ,otra vez, si vas a tratar de hacer unas fisicas realistas y buenas,te vas a encontrar muchos problemas . pero si es lo que quieres hacer adelante.
pero si lo que quieres es hacer un juego tipo pinball ,no te comas la cabeza demasiado y resuelve los problemas como hiciste con el sonic y como habias comentado con angulos estandar por colores o algo asi., y cosas asi.
pero si lo que quieres es hacer un juego tipo pinball ,no te comas la cabeza demasiado y resuelve los problemas como hiciste con el sonic y como habias comentado con angulos estandar por colores o algo asi., y cosas asi.
- SimulatorOne
- Posts: 6626
- Joined: Tue Nov 17, 2009 2:52 pm
- Location: Barcelona
- Contact:
Re: [GAME]: PYP - ProYect Pinball [Proyecto/Pausado]
Otro Test, y solo con primitivas graficas, no hay collision, solo detecta el color de fondo de pantalla con GET_PIXEL
Aqui no se puede mover el suelo de abajo, es pintado como fondo de pantalla.
Pero de momento hay 2 pruebas, pulsen Espacio para probar con la pared diagonal y otra la recta.
Esto es simplemente para comprobar la colision y que no la traspase aun que valla la bola a mucha velocidad, jamas se la traspasará
[Codebox=gemix file=Untitled.gemix]PROGRAM PYP_ProYect_Pinball;
CONST
PESO_BOLA=0.1F;//PESO DE LA BOLA
GLOBAL
STRING TX1,TX2,TX3,TX4;
word TAM_TABLERO[1]=500,700;//TAMAÑO DEL TABLERO
BOLAS_HAY;
COL0_Y,COL1_Y,COL2_Y;
COLOR_PARED;
COLOR_BOLA;
NUM_TEST;
LOCAL
FLOAT XF,YF,XSP,YSP;
Private
GAT=1;
BEGIN
VISIBLE=0;
SET_MODE(TAM_TABLERO[0],TAM_TABLERO[1],32,0,0,0);SET_FPS(60,0);
COLOR_BOLA=RGB(0,255,0);
COLOR_PARED=RGB(0,255,255);
text_size_x=text_size_y=200;
WRITE(0,TAM_TABLERO[0],TAM_TABLERO[1],8,TX4);
WRITE(0,0,0,0,TX1);
WRITE(0,0,20,0,TX2);
WRITE(0,0,40,0,TX3);
LOOP
TX1="Pulsa Enter para Lanzar la Bola!";
TX2="Pulsa Espacio para Probar otro Test!";
TESTS();
REPEAT
TX4=ITOA(FPS)+":FPS|TEST:"+ITOA(NUM_TEST);
if(gat and not key(_space));gat=0;end
FRAME;UNTIL(KEY(_ENTER)or(key(_Space)and not gat));
//JEFE MAIN
REPEAT
IF(BOLAS_HAY==0);
BOLA(TAM_TABLERO[0]/2,80);
END
TX4=ITOA(FPS)+":FPS|TEST:"+ITOA(NUM_TEST);
FRAME;
UNTIL(KEY(_SPACE));GAT=1;
NUM_TEST++;IF(NUM_TEST==2);NUM_TEST=0;END
SIGNAL(TYPE BOLA,S_KILL);
DELETE_DRAW(ALL_DRAWING);CLEAR_SCREEN();
BOLAS_HAY=COL0_Y=COL1_Y=COL2_Y=0;TX3="";
END
END
FUNCTION TESTS();
BEGIN
X=TAM_TABLERO[0]/2;Y=TAM_TABLERO[1]-70;
PIEZA_OYO(X,80);
SWITCH(NUM_TEST);
CASE 0:PIEZA_PARED(X-100,Y,X+100,Y);END
CASE 1:PIEZA_PARED(X-150,Y-100,X+50,Y+100);END
END
END
FUNCTION PIEZA_OYO(X,Y);
BEGIN
PUT_CIRCLE(x,y,20,RGB(255,0,255),FALSE);
END
FUNCTION PIEZA_PARED(X,Y,x2,y2);
BEGIN
PUT_LINE(X,Y,X2,Y2,COLOR_PARED);
END
PROCESS BOLA(X,Y);
PRIVATE
ID_DRAW;
BEGIN
VISIBLE=0;
BOLAS_HAY++;
XF=X;YF=Y;
ID_DRAW=DRAW(4,0,0,0,0,0,0,0);
REPEAT
IF(YSP>-1 AND KEY(_J));YSP=-5;END;//PRUEBA SALTO
IF(YSP>0 AND KEY(_N));YSP=20;END;//PRUEBA CAIDA
IF(YSP>0 AND KEY(_M));YSP=40;END;//PRUEBA CAIDA
YSP+=PESO_BOLA;
YF+=YSP;//calculamos la velocidad Y
FIX_COLL_Y();//FUNCION PARA FIX DE PAREDES Y DESPLAZAMIENTO...
MOVE_DRAW(ID_DRAW,COLOR_BOLA,255,x-8,y-8,x+8,y+8);
TX1="Y(INT/P):"+itoa(Y)+" |SCY:"+ITOA(COL0_Y)+">"+ITOA(COL1_Y)+">"+ITOA(COL2_Y);
TX2="Y(FLOAT):"+FTOA(YF);
TX3="Y(Speed):"+FTOA(YSP);
FRAME;
UNTIL(Y>TAM_TABLERO[1]+8);// XOR Y<-8);
DELETE_DRAW(ID_DRAW);
BOLAS_HAY--;COL0_Y=COL1_Y=COL2_Y=0;
END
FUNCTION FIX_COLL_Y();
private
COLOR;
BEGIN
Y=FATHER.YF;//CONVIERTE Y COPIA LAS CORDENADAS FLOAT A INT PIXEL
REPEAT
IF(Y>FATHER.Y);FATHER.Y++;Z=8;END
IF(Y<FATHER.Y);FATHER.Y--;Z=-8;END
COLOR=GET_PIXEL(FATHER.X,FATHER.Y+Z);
IF(COLOR==COLOR_PARED);
COL0_Y=FATHER.YF+Z;
COL1_Y=FATHER.Y+Z;
REPEAT
IF(FATHER.YSP=>0);
FATHER.Y--;Z=8;
ELSE
FATHER.Y++;Z=-8;
END
COLOR=GET_PIXEL(FATHER.X,FATHER.Y+Z);
UNTIL(COLOR<>COLOR_PARED);
FATHER.YF=FATHER.Y;
COL2_Y=FATHER.Y+Z;
IF(FATHER.YSP=>1 OR FATHER.YSP<=-1);
FATHER.YSP=get_pixl_dat(invert(FATHER.YSP),65);//REBOTE VERTICAL
ELSE
FATHER.YSP=0;//EN SUELO VERTICAL
END
BREAK;
END
UNTIL(Y==FATHER.Y);
END
function FLOAT invert(FLOAT value);
BEGIN
return(-value);
end
function FLOAT get_pixl_dat(FLOAT VALUE,size);
begin
return((VALUE * size)/ 100);
end[/Codebox]
Aqui no se puede mover el suelo de abajo, es pintado como fondo de pantalla.
Pero de momento hay 2 pruebas, pulsen Espacio para probar con la pared diagonal y otra la recta.
Esto es simplemente para comprobar la colision y que no la traspase aun que valla la bola a mucha velocidad, jamas se la traspasará
[Codebox=gemix file=Untitled.gemix]PROGRAM PYP_ProYect_Pinball;
CONST
PESO_BOLA=0.1F;//PESO DE LA BOLA
GLOBAL
STRING TX1,TX2,TX3,TX4;
word TAM_TABLERO[1]=500,700;//TAMAÑO DEL TABLERO
BOLAS_HAY;
COL0_Y,COL1_Y,COL2_Y;
COLOR_PARED;
COLOR_BOLA;
NUM_TEST;
LOCAL
FLOAT XF,YF,XSP,YSP;
Private
GAT=1;
BEGIN
VISIBLE=0;
SET_MODE(TAM_TABLERO[0],TAM_TABLERO[1],32,0,0,0);SET_FPS(60,0);
COLOR_BOLA=RGB(0,255,0);
COLOR_PARED=RGB(0,255,255);
text_size_x=text_size_y=200;
WRITE(0,TAM_TABLERO[0],TAM_TABLERO[1],8,TX4);
WRITE(0,0,0,0,TX1);
WRITE(0,0,20,0,TX2);
WRITE(0,0,40,0,TX3);
LOOP
TX1="Pulsa Enter para Lanzar la Bola!";
TX2="Pulsa Espacio para Probar otro Test!";
TESTS();
REPEAT
TX4=ITOA(FPS)+":FPS|TEST:"+ITOA(NUM_TEST);
if(gat and not key(_space));gat=0;end
FRAME;UNTIL(KEY(_ENTER)or(key(_Space)and not gat));
//JEFE MAIN
REPEAT
IF(BOLAS_HAY==0);
BOLA(TAM_TABLERO[0]/2,80);
END
TX4=ITOA(FPS)+":FPS|TEST:"+ITOA(NUM_TEST);
FRAME;
UNTIL(KEY(_SPACE));GAT=1;
NUM_TEST++;IF(NUM_TEST==2);NUM_TEST=0;END
SIGNAL(TYPE BOLA,S_KILL);
DELETE_DRAW(ALL_DRAWING);CLEAR_SCREEN();
BOLAS_HAY=COL0_Y=COL1_Y=COL2_Y=0;TX3="";
END
END
FUNCTION TESTS();
BEGIN
X=TAM_TABLERO[0]/2;Y=TAM_TABLERO[1]-70;
PIEZA_OYO(X,80);
SWITCH(NUM_TEST);
CASE 0:PIEZA_PARED(X-100,Y,X+100,Y);END
CASE 1:PIEZA_PARED(X-150,Y-100,X+50,Y+100);END
END
END
FUNCTION PIEZA_OYO(X,Y);
BEGIN
PUT_CIRCLE(x,y,20,RGB(255,0,255),FALSE);
END
FUNCTION PIEZA_PARED(X,Y,x2,y2);
BEGIN
PUT_LINE(X,Y,X2,Y2,COLOR_PARED);
END
PROCESS BOLA(X,Y);
PRIVATE
ID_DRAW;
BEGIN
VISIBLE=0;
BOLAS_HAY++;
XF=X;YF=Y;
ID_DRAW=DRAW(4,0,0,0,0,0,0,0);
REPEAT
IF(YSP>-1 AND KEY(_J));YSP=-5;END;//PRUEBA SALTO
IF(YSP>0 AND KEY(_N));YSP=20;END;//PRUEBA CAIDA
IF(YSP>0 AND KEY(_M));YSP=40;END;//PRUEBA CAIDA
YSP+=PESO_BOLA;
YF+=YSP;//calculamos la velocidad Y
FIX_COLL_Y();//FUNCION PARA FIX DE PAREDES Y DESPLAZAMIENTO...
MOVE_DRAW(ID_DRAW,COLOR_BOLA,255,x-8,y-8,x+8,y+8);
TX1="Y(INT/P):"+itoa(Y)+" |SCY:"+ITOA(COL0_Y)+">"+ITOA(COL1_Y)+">"+ITOA(COL2_Y);
TX2="Y(FLOAT):"+FTOA(YF);
TX3="Y(Speed):"+FTOA(YSP);
FRAME;
UNTIL(Y>TAM_TABLERO[1]+8);// XOR Y<-8);
DELETE_DRAW(ID_DRAW);
BOLAS_HAY--;COL0_Y=COL1_Y=COL2_Y=0;
END
FUNCTION FIX_COLL_Y();
private
COLOR;
BEGIN
Y=FATHER.YF;//CONVIERTE Y COPIA LAS CORDENADAS FLOAT A INT PIXEL
REPEAT
IF(Y>FATHER.Y);FATHER.Y++;Z=8;END
IF(Y<FATHER.Y);FATHER.Y--;Z=-8;END
COLOR=GET_PIXEL(FATHER.X,FATHER.Y+Z);
IF(COLOR==COLOR_PARED);
COL0_Y=FATHER.YF+Z;
COL1_Y=FATHER.Y+Z;
REPEAT
IF(FATHER.YSP=>0);
FATHER.Y--;Z=8;
ELSE
FATHER.Y++;Z=-8;
END
COLOR=GET_PIXEL(FATHER.X,FATHER.Y+Z);
UNTIL(COLOR<>COLOR_PARED);
FATHER.YF=FATHER.Y;
COL2_Y=FATHER.Y+Z;
IF(FATHER.YSP=>1 OR FATHER.YSP<=-1);
FATHER.YSP=get_pixl_dat(invert(FATHER.YSP),65);//REBOTE VERTICAL
ELSE
FATHER.YSP=0;//EN SUELO VERTICAL
END
BREAK;
END
UNTIL(Y==FATHER.Y);
END
function FLOAT invert(FLOAT value);
BEGIN
return(-value);
end
function FLOAT get_pixl_dat(FLOAT VALUE,size);
begin
return((VALUE * size)/ 100);
end[/Codebox]
![[RETO]: [MINI CONCURSO] Winter GAMES 2011 [JUEGO]: Rosie ~ The Rascal [RETO]: [MINI CONCURSO] Winter GAMES 2011 [JUEGO]: Rosie ~ The Rascal](../space/silver_medal.png)