https://www.segasaturno.com/portal/viewtopic.php?f=33&t=4036&p=27585#p27585
-----------------------------------
FacundoARG
28 Agosto 2009, 05:14 AM

Re: Por Favor Miren El Codigo O Me Suicido...
-----------------------------------
Hola, [b]Jean[/b]. Priemo felicitaciones, esta muy bueno el proyecto 8). 
 Ultimamente estoy enquilombado (liado para uds), con trabajo, tesis, estudio, etc. Ya tengo casi listos los tutos que faltan, pero como simepre me queda algun detalle por cerrar.  :x 

No desesperes, yo estuve 1 Mes y medio para aprender el Sistema de coalisiones (es lo que vos tratas de hacer) y ademas tenía en ese entonces 3 años de Desarrollo en C/C++, Pascal, Basic, Java, Assambler y PHP. Pero todo esto no es necesario  :D  . También va para [b]dmc[/b], todos los lenguajes son en un 50% iguales, lo que ustedes deben aprender es a Programar, no con un solo lenguaje sino entender los metodos de la programación. Es simple y pero nada que lleve poco tiempo, luego de que logren este objetivo va a apreder a usar cualquier lenguaje en muy poco tiempo. Espero comprendan la idea.

Volviendo a lo tuyo y darte una posible solución. El error yo lo veo aca
[b]
   if(pos[Y]>limneg[Y])pos[Y]=limneg[Y];
    if(pos[Y]<limpos[Y])pos[Y]=limpos[Y]; [/b]

Estas lineas controlan supuestamente la posicion en Y de tu muñeco. El problema es el siguente, más justamente en la segunda linea.

Más arriba (en el código) declaraste, que [b]limpos[Y]=90[/b]. Bien. Luego si apretas [b]"A"[/b], se pone en [b]0[/b]. Pero......
Cuando vuelve el bucle al inicio. Pregunta el siguente [b]if [/b]que escribiste

    [b] if(pos[Y]<limpos[Y])pos[Y]=limpos[Y]; [/b]

Si lo reemplazas por los valores en ese instante sería lo siguiente:

   [b] si (0<90)  entonces    pos[Y]=90;[/b]

Comprendes, lo que estoy poniendo. Osea, luego de esta linea (arriba), pos[Y] vale 90, y es por eso que justamente cuando suletas la [b]A[/b], se vuelve al fondo de la pantalla. Lo que lograras con esto si comentas la linea ( // ) sera poner el muñeco en la posicion 0 en Y. Pero lo que vos queres es [b]gravedad[/b], entonces debes incrementar en cada ciclo, la variable Y. De esta forma
[b]pos[Y]=pos[Y] + FIXED(1.0);[/b]

Esto irá incrementando en un pixel, la posicion en Y, lo que te va a dar la sensacion de que se esta cayendo  :D  .
Luego faltaría (te lo dejo a vos) que controles, que no se te escape de la pantalla, en un pozo infinito. 

Lo que tenes que hacer, para la próxima es: 

1 - Siempre los calculos se hacen antes de pintar, por ende; tenes que poner las linas de [b]slPutDisp[/b] justo antes del [b]slSynch()[/b] 

2 - Estas aplicaciones son chicas, entonces tenes que subir el proyecto zipeado, debe pesar 200kb, o enviarmelo por MP.

3 - Tenes que escribir comentario (usando // ) , como suelo hacer yo en los tutoriales; asi comprendemos mejor el código.


PD - Yo tampoco nací sabiendo, se aprende de muchisimos errores; y hasta a veces es bueno comenzar desde cero   :wink: . Y también faltan muchas cosas por aprender, por ejemplo el control de los frames en Saturn.


