Título: Posicion de un sprite en relacion al fondo Publicado por: Tragamanzanas en 16 de Abril de 2009, 01:23:43 pm Hola a todos,
Soy nuevo en este foro y esta Semana Santa gracias a sitios como este, me ha vuelto a entrar el gusanillo de la programación. Hace mucho tiempo que aparqué el MSX. En aquella epoca me dedicaba al Basic, e imaginaba que el ensamblador era inalcanzable, pero ahora que he tenido tiempo, estoy mirando algunos libros en pdf y tengo ganas de intentarlo. Una de las muchas dudas que tengo, es como saber que un sprite ha tocado una pared o cualquier cosa. Supongo que una manera facil es ver el color del fondo, pero no se como saberlo. Gracias. Título: Re: Posicion de un sprite en relacion al fondo Publicado por: Jon_Cortazar en 16 de Abril de 2009, 02:20:58 pm Bienvenido, Tragamanzanas! ;), si te pica el gusanillo del desarrollo para MSX, me da que este es tu foro :D
En cuanto a comprobar colisiones de sprites versus fondo depende un poco de como quieras hacerlo, al pixel o por patrones (caracteres). Hacerlo al pixel es mucho más laborioso y, si tu fondo es un gráfico basado en patrones (que es la mejor opción), lo tienes tan fácil como chequear que hay en la tabla de nombres en la posición en la que se encuentra el sprite. Así, en bruto, te diré que la posición de tu sprite es al pixel, y la de un caracter, cada 8 pixels. De esta forma, la posición de el caracter donde se encuentra tu sprite será: caracter_x=int(sprite_x/8) caracter_y=int(sprite_y/8) De esta forma, sabiendo dónde está la tabla de nombres y las coordenadas de tu sprite, te será fácil hacer la comprobación. Lógicamente, si tu sprite es de 16x16 tendrás que cotejar más de una posición en la tabla de nombres. Una muestra en BASIC de esto sería muy ilustrativa, luego habría que adaptarlo a ensamblador ;) Título: Re: Posicion de un sprite en relacion al fondo Publicado por: cybernoid en 16 de Abril de 2009, 05:01:31 pm Código chapu en 5 minutos :P
espero que sea de ayuda :) Código: 10 REM BASE(5) = DIRECCION DE LA PANTALLA 20 X=100:Y=80:REM POSICION SPRITE 30 SCREEN 1 40 REM defino el caracter a como un bloque negro 50 FOR N=BASE(0)+65*8 TO BASE(0)+(65*8)+8 60 VPOKE N,255 70 NEXT 80 REM imprimo el caracter a 90 LOCATE 5,10:PRINT "A A" 100 REM defino el sprite como un bloque 110 SPRITE$(0)="FFFFFFFF" 120 REM muestro el sprite 130 PUT SPRITE 0,(X,Y),15,0 140 REM leo el stick 0 150 S=STICK(0) 160 REM cALCULO LA DIRECCION DE PANTALLA DONDE ESTA MI SPRITE 170 DIR=BASE(5)+((Y/8)*32)+(X/8) 180 REM MUEVO EL SPRITE SI NO CHOCA CON LA A 190 X=X+(S=3 AND VPEEK(DIR+1)<>65 )-(S=7 AND VPEEK(DIR-1)<>65) 200 REM vuelta a empezar :) 210 GOTO 130 Edit: el código es un sprite que se mueve entre dos bloques(caracteres), solo se mueve de derecha a izquierda Título: Re: Posicion de un sprite en relacion al fondo Publicado por: Tragamanzanas en 17 de Abril de 2009, 02:09:26 pm Gracias, ya entiendo la relación entre el sprite y el fondo. Ahora voy a intentar hacerlo en ensamblador guiandome por el ejemplo que ha puesto gobblin, que para empezar es sencillo, aunque no entiendo por qué se mueve al contrario de la tecla que pulsas, izquierda-derecha.
190 X=X+(S=3 AND VPEEK(DIR+1)<>65 )-(S=7 AND VPEEK(DIR-1)<>65) ;esto lo entiendo pero hace justo lo contrario de lo que se supone que debe hacer Otra pregunta, he usado varios emuladores de MSX pero todos tienen el teclado Ingles ( ó distinto al Español ) y es un fatidio porque fuera de las letras y números, la mayoria de signos estan cambiados de posición según mi teclado. ¿Como puedo hacer para que se parezca al Español? Título: Re: Posicion de un sprite en relacion al fondo Publicado por: cybernoid en 17 de Abril de 2009, 02:20:50 pm Hola Tragamanzanas,
Cuando una comprobación es cierta el MSXBasic retorna -1 por eso en la linea 190 parece que hace el contrario de lo que debería. Para programar con el emulador te recomiendo el openMSX que mapea el teclado de coña :) Título: Re: Posicion de un sprite en relacion al fondo Publicado por: Tragamanzanas en 08 de Mayo de 2009, 03:12:13 pm Gracias por las respuestas. Ya voy haciendo algunas cosillas, mover sprites por pantalla, detectar sobre que me estoy moviendo, poner fondo con la redefinición de los patrones, bastante cutres por cierto, (imagino que para vosotros esto es bastante básico, pero para mi es todo un logro). Bueno, ahora las preguntas. Por lo que he leido, me ha parecido entender que para diseñar fondos hay algunos programas que te ayudan, me gustaria uno que no sea demasiado complicado, tampoco quiero nada espectacular. Por otro lado, he visto la sección de Snippets y está muy bien para aprender, pero no hay demasiados. ¿Donde puedo encontrar listados y a ser posible con comentarios? Bueno, ya está bien por ahora. Título: Re: Posicion de un sprite en relacion al fondo Publicado por: OKI09 en 08 de Mayo de 2009, 06:21:18 pm Bueno existen varios, esta el ICVGM303, el nmsxtiles o tambien el Polka, yo personalmente me quedo con el primero.
En cuanto a listados yo te podria mandar el juego que hice El Bola, es muy modesto y basico, pero a lo mejor te sirve de ayuda. Si le quieres me lo dices. Título: Re: Posicion de un sprite en relacion al fondo Publicado por: Tragamanzanas en 08 de Mayo de 2009, 08:20:21 pm OKI2007, ya tengo el programa que me recomiendas y este fin de semana lo trastearé un poco.
Si que me interesaría ese listado de El Bola, ya que "modesto y basico" suena bien para tratar de entenderlo. Título: Re: Posicion de un sprite en relacion al fondo Publicado por: OKI09 en 08 de Mayo de 2009, 10:31:48 pm Vale, mandame un mail y te lo envio en la respuesta. ;)
|