HispaMSX

RE: [hispamsx] RE: MSXdev'05 - mas entradas!

2005-02-19 11:55:12
A ver si un día fuera de concurso explicas cómo haces que los
contrincantes detecten el circuito y conduzcan ellos solitos :) ,que
siempre me he preguntado cómo. Entonces vería la luz el Indy Heat 2
MSX basic puro y duro del cagarse, jejejeje...

Esto requiere un poquitin mas de tiempo para ser explicado, pero ya te pillare, ya...

Y hablando de técnicas programáticas, otra chorrada que siempre me
tuvo en vilo (y no lo pregunto por el concurso) es cómo hacer por
ejemplo que un muñeco salte y tenga un salto "parabólico". Ya de chico
tenía la "ilu" de hacer un jueguecito de tiro parabólico pero ná de
ná, no encontraba cómo hacerlo en ningún lado.

Esto es mas sencillo. En lugar de que el salto venga a ser algo como

IF (STRIG(0)=-1) THEN SALTO=1
IF (SALTO=1) THEN T=T+1 ELSE T=0
IF (SALTO=1) AND (T<20) THEN Y=Y-1
IF (SALTO=1) AND (T>=20) THEN Y=Y+1
IF (T=40) THEN SALTO=0

Por supuesto, esto lo he escrito asi para que quede claro, pero que conste que no seria como lo haria yo en BASIC. Bueno, asi el sprite haria algo asi como una subida lineal de 20 pixels y otra bajada lineal de 20 pixels. Y eso es lo que no quieres.

Hay dos formas: la realista, utilizando ecuaciones de movimiento (aceleracion=k velocidad=velocidad0+aceleration*t posicion=posicion0+velocidad0*t+0.5*aceleracion*t^2) o las multiples alternativas a esto. O bien, usar una tabla de salto, que es lo mas comodo.

Defines una tabla del tipo

DIM SALTO(40)
FOR I=0 TO 39
READ B
SALTO(I)=B
NEXT
DATA -4,-3,-3,-2,-2,-2,-1,-1,-1,-1 etc.
etc.
DATA 1,1,1,1,2,2,2,3,3,4

Y lo que harias seria sumar el valor a la posicion vertical en tanto dure el salto. Asi, conseguirias un salto mas progresivo y menos lineal: al principio del salto subiria muy rapido, para ir ralentizandose hasta alcanzar lo mas alto y, entonces, se aceleraria la caida otra vez. Como ves, es muy sencillo y no necesitas calculos complejos. Eso si, adapta la tabla al tamanyo del salto que quieras obtener.

Venga, si alguien se anima, le contaré el secreto de cómo hacer que el
ordenador, una vez calculado un número aleatorio del uno al diez, te
diga, después de preguntarte que lo adivines, si el número introducido
es mayor o menor que el que ha pensado, e incluso si has acertado.

Pues en ensamblador es siempre interesante XD
De hecho, este fue el primer programa que copie de un libro de BASIC, hace ya casi veinte anyitos. Creo que, mas o menos, todavia me acuerdo de como se hacia ;-)

Un saludo,

Edu R.



<Anterior en la conversación] Conversación actual [Siguiente en la conversación>