cybernoid
|
|
« Respuesta #45 : 16 de Octubre de 2007, 03:37:16 pm » |
|
hola,
una forma sencilla de saber si el numero es positivo o negativo es asi
if x>0 then positivo else negativo
lo de screen 1 y las colisiones mejor se lo dejo a otro, a mi se me ocurre una cosa(vpeek), pero me parece que no seria la mejor solucion para un juego tipo pong
|
|
|
En línea
|
|
|
|
SapphiRe_MSX
Visitante
|
|
« Respuesta #46 : 16 de Octubre de 2007, 03:50:41 pm » |
|
ademas segun Jlturstan, no se suelen usar el comando line y todo esto, y mi campo esta hecho asi, ademas también la programación de los rebotes del campo, que esta ejecutada con point... asi que,,,
¿como se programaria entonces, si hago las paredes con sprites en vez de con line? Con caracteres redefinidos, no con sprites. Tendrías que mirar cuál es el carácter que hay bajo la pelota y obrar en consecuencia. Es más rápido que una instrucción point gracias a la estructura de la memoria de vídeo de los MSX. Pero olvídalo de momento... termina el pong tal y como lo tienes
|
|
|
En línea
|
|
|
|
SapphiRe_MSX
Visitante
|
|
« Respuesta #47 : 16 de Octubre de 2007, 03:51:21 pm » |
|
lo de screen 1 y las colisiones mejor se lo dejo a otro, a mi se me ocurre una cosa (vpeek), pero me parece que no seria la mejor solucion para un juego tipo pong Es, de hecho, la solución
|
|
|
En línea
|
|
|
|
cybernoid
|
|
« Respuesta #48 : 16 de Octubre de 2007, 03:58:33 pm » |
|
lo de screen 1 y las colisiones mejor se lo dejo a otro, a mi se me ocurre una cosa (vpeek), pero me parece que no seria la mejor solucion para un juego tipo pong Es, de hecho, la solución abs, yo pensaba que habria una solucion mas Pixel a pixel, ya que trabajando con vpeek solo podra comprobar de 8 en 8 pixels ¿nop?
|
|
|
En línea
|
|
|
|
msx dummie
|
|
« Respuesta #49 : 16 de Octubre de 2007, 04:11:28 pm » |
|
bueno, teniendo en cuenta que estoy en screen 2, mantendre este modo de pantalla de momento, a ver si lo puedo acabar aqui...
porque con los vpeek y vpoke ando bastante perdido todavia.
|
|
|
En línea
|
|
|
|
jltursan
|
|
« Respuesta #50 : 16 de Octubre de 2007, 04:27:19 pm » |
|
Si, si, haces bien. En screen 2 de momento es más fácil dibujar el campo con lines y los objetos móviles con sprites. ¿Tienes marcador?, para eso el draw te podría venir bien... Tal como lo tienes las colisiones las tienes que controlar comparando coordenadas o utilizando las colisiones de sprites (aunque creo que no conseguiste hacerlo funcionar así, ¿verdad?).
|
|
|
En línea
|
Doom dee doom dee doom
|
|
|
jltursan
|
|
« Respuesta #51 : 16 de Octubre de 2007, 04:41:40 pm » |
|
abs, yo pensaba que habria una solucion mas Pixel a pixel, ya que trabajando con vpeek solo podra comprobar de 8 en 8 pixels Para chequear las paredes puede venir muy bien en caso de usar screen 1. Con un solo vpeek testeas los muros y así te ahorras 2 comparaciones sobre la Y, de todas formas no se que sería más rapido, hay que tener en cuenta que el vpeek necesitaría calcular la posición de memoria sobre la que se encuentra la bola. Todo es cuestión de probar a ver que es más rápido. proponedme un reto!! pero no os paseis En BASIC quedan fenomenal los puzzles, las aventuras conversacionales, los juegos de estrategia (simple), juegos de mesa y pequeños arcades, como el pong, en los que no se mueven muchos objetos. La cuestión es hacerlo lo mejor que uno pueda, no conformarse con cualquier cosa
|
|
|
En línea
|
Doom dee doom dee doom
|
|
|
msx dummie
|
|
« Respuesta #52 : 16 de Octubre de 2007, 04:55:04 pm » |
|
Claro, claro JL yo quiero hacer un pong, que sea algo mas que eso, de hecho tengo pensadas algunas ideas que creo que podrian estar muy bien, pero tengo que ir poco a poco... quien sabe... a lo mejor me puedo presentar al msxdev 2070 estoy dandole mucha caña, pero fui un renegado por asi decirlo en el colegio y el instituto y las mates sieeeemmpre me quedaban, asi que me cuesta, pero dia a dia avanzo, ya sabes lo que dice uno de los grandes de por aqui: ¿que es lo que has aprendido hoy? (me encanta)
|
|
|
En línea
|
|
|
|
msx dummie
|
|
« Respuesta #53 : 20 de Octubre de 2007, 08:56:41 pm » |
|
saludos de nuevo chicos! a ver, necesito de nuevo que alguien me salve porque me va a estallar la cabeza... he estado probando aplicando las formulas que me daba Sapphire y he montado un caos de escandalo, no me funciona nada bien, tengo varias dudas: lo que sucede es que la bola se sale del campo, como si no respetase el point, tampoco me respeta la programación de los rebotes en la pala, ni aumenta la velocidad ni cambia el angulo de nada... no entiendo lo que pasa, tenemos a M como modulo vector de velocidad, pero que valor inicial tiene? y A?? tampoco tiene ningun valor inicial? ademas no comprendo esta formula: a=pi-a-(2*pi*(a>pi)) como se despeja (a>pi) quiero decir que que significa esta expresión??? también he probado del otro modo, con la variable contador c, haciendo lo de: c=c+1:if c>100 then c=0... y todo esto que me comentabais como primera opcion, y de este modo tampoco me funciona, llega un momento en el que la bola va mas lenta, deja de rebotar y cambia el angulo!!!! no se, debo de ser un tarugo, pero no entiendo nada, os agradeceria mucho que recapitulasemos a ver donde lo estoy haciendo mal... gracias de nuevo gente, un saludo!
|
|
|
En línea
|
|
|
|
pitpan
|
|
« Respuesta #54 : 22 de Octubre de 2007, 07:37:00 am » |
|
Es muy posible que no te funcione el POINT porque te suceda algo así:
- Momento 1: X=99 - Momento 2: si la velocidad es 1.6, entonces X=X+1.6=100.6
Por lo tanto, al hacer un POINT con la X o utilizarla en un IF, X<>100 porque ha pasado directamente de 99 a 101 debido al efecto de usar velocidades no enteras. No sé si te ha quedado claro, pero es un error bastante habitual cuando algo deja de moverse a velocidad 1.
|
|
|
En línea
|
|
|
|
msx dummie
|
|
« Respuesta #55 : 22 de Octubre de 2007, 10:48:07 am » |
|
Gracias Robsy! pero yo solo estoy utilizando enteros...(que yo sepa) x=x+vx cuando vx es siempre igual a 5... entonces... no se, lo de point en un momento dado, podria hurgarlo y ver, pero me interesaba mucho lo de la velocidad y los angulos, y eso es lo que no funciona ni de coña. un saludo!
|
|
|
En línea
|
|
|
|
cybernoid
|
|
« Respuesta #56 : 22 de Octubre de 2007, 11:10:50 am » |
|
Gracias Robsy! pero yo solo estoy utilizando enteros...(que yo sepa) x=x+vx cuando vx es siempre igual a 5... entonces... no se, lo de point en un momento dado, podria hurgarlo y ver, pero me interesaba mucho lo de la velocidad y los angulos, y eso es lo que no funciona ni de coña. un saludo!
sin ver el código fuente creo que poco se puede hacer por el tema de la velocidad y los ángulos... veo que al final te has decantado por el sistema "complejo" es una buena elección, pero te costara mas sacarlo.
|
|
|
En línea
|
|
|
|
msx dummie
|
|
« Respuesta #57 : 22 de Octubre de 2007, 11:13:09 am » |
|
bueno, basicamente me he decantado por cualquiera que funcione, pero es que ninguno lo hace... probe a utilizar una variable contador y que cuando llegase a cierto punto aumentase la velocidad, pero como ya escribí no me funciona tampoco.
|
|
|
En línea
|
|
|
|
cybernoid
|
|
« Respuesta #58 : 22 de Octubre de 2007, 11:56:35 am » |
|
bueno, basicamente me he decantado por cualquiera que funcione, pero es que ninguno lo hace... probe a utilizar una variable contador y que cuando llegase a cierto punto aumentase la velocidad, pero como ya escribí no me funciona tampoco.
pues lo de la variable contador te tiene de chutar por narices! INICIALIZO VARIABLES (C=0) EMPIEZA EL JUEGO MUEVO PELOTA ACTUALIZO CONTADOR (C=C+1) SI C>10 ENTONCES VX=VX+1:VY=VY+1:C=0 GOTO MUEVO PELOTA tienes aun el codigo donde hiciste lo del contador? postealo y te hecho un cable.
|
|
|
En línea
|
|
|
|
cybernoid
|
|
« Respuesta #59 : 22 de Octubre de 2007, 12:01:18 pm » |
|
Hola otra vez, mira, te he actualizado el código de programa "rebotes" añadiendole el tema del contador (varible C) 5 REM REBOTES 10 SCREEN 2 20 LINE (0,0)-(208,178),1,B 30 X=100:Y=100:C=0 40 VX=1:VY=-1 50 FOR N=BASE(14) TO BASE(14)+7:READ A:VPOKE N,A:NEXT N 60 PUT SPRITE 0,(X,Y),15,0 70 X=X+VX 80 Y=Y+VY 81 C=C+1 82 IF C>100 THEN C=0: VX=VX+1:VY=VY+1 85 REM CONTROL DE REBOTES 90 IF X<1 OR X>200 THEN VX=-VX 100 IF Y<1 OR Y>170 THEN VY=-VY 110 GOTO 60 120 DATA &H18,&H24,&H42,&H81,&H81,&H42,&H24,&H18
no lo he probado por que estoy en el curro, pero supongo que funcionara sin problemas, los cambios son pequeños (minusculos)
|
|
|
En línea
|
|
|
|
|