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.