Karoshi MSX Community
05 de Julio de 2021, 03:58:19 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]
  Imprimir  
Autor Tema: Posicion de un sprite en relacion al fondo  (Leído 5118 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Tragamanzanas
Karoshi Fan
**
Mensajes: 71


« : 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.
En línea
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #1 : 16 de Abril de 2009, 02:20:58 pm »

Bienvenido, Tragamanzanas! Wink, si te pica el gusanillo del desarrollo para MSX, me da que este es tu foro Cheesy

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 Wink


En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« Respuesta #2 : 16 de Abril de 2009, 05:01:31 pm »

Código chapu en 5 minutos Tongue

espero que sea de ayuda Smiley
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
« Última modificación: 16 de Abril de 2009, 07:18:35 pm por gobblin » En línea
Tragamanzanas
Karoshi Fan
**
Mensajes: 71


« Respuesta #3 : 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?
En línea
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« Respuesta #4 : 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 Smiley

En línea
Tragamanzanas
Karoshi Fan
**
Mensajes: 71


« Respuesta #5 : 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.
En línea
OKI09
Karoshi Maniac
****
Mensajes: 275



WWW Email
« Respuesta #6 : 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.
En línea

La derrota no es una opción y no hay excusas.
"Parasiempre"
Tragamanzanas
Karoshi Fan
**
Mensajes: 71


« Respuesta #7 : 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.
En línea
OKI09
Karoshi Maniac
****
Mensajes: 275



WWW Email
« Respuesta #8 : 08 de Mayo de 2009, 10:31:48 pm »

Vale, mandame un mail y te lo envio en la respuesta. Wink
En línea

La derrota no es una opción y no hay excusas.
"Parasiempre"
Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!