Manejando caracteres
Re: problema con basic
Aquí tienes un ejemplo completo usando el modo XOR:
- Adjuntos
-
- trans.dsk
- (190.21 KiB) Descargado 85 veces
-
- Lechoncillo
- Mensajes: 17
- Registrado: Mar 26 Jun , 2012 3:34 pm
Re: problema con basic
Ok , funciona¡¡¡¡
Una ultima cosa, como borro el rastro de mis movimientos' antes con poner un carácter en blanco ya era suficiente symbol chr(0)+chr(243)+chr(0)
Una ultima cosa, como borro el rastro de mis movimientos' antes con poner un carácter en blanco ya era suficiente symbol chr(0)+chr(243)+chr(0)
- ronaldo
- Forum Addict
- Mensajes: 358
- Registrado: Sab 14 Sep , 2013 9:31 pm
- Ubicación: Alicante
- Contactar:
Re: problema con basic
Tienes 2 opciones:
- En el ejemplo de @abalore, si pintas un carácter en modo XOR (el modo transparente CHR$(22)+CHR$(1)), volver a pintar el mismo carácter en el mismo sitio restaura el fondo. Esto es válido si sólo pintas 1 carácter: si pintas varios en el mismo sitio mezclando colores ya no sirve.
- Desactiva el modo XOR (con PRINT CHR$(22)+CHR$(0)) y luego pinta el espacio en blanco o el fondo en el lugar donde está el carácter que quieres borrar.
-
- Lechoncillo
- Mensajes: 17
- Registrado: Mar 26 Jun , 2012 3:34 pm
Re: problema con basic
Hola ,despues de un año
Pues sigo con el mismo problema
En el bloc explica muy bien como definir sprites
Pero el problema biene cuando mueves el sprite, si ya tienes el fondo echo. si activo modo transparente
Ejem.hombre$=chr$240+chr$ 248+chr$240
Chr$240 esta definido como cero
Symbol 240,0,0,0,0,0,0,0,0
Pues sucede que si activó este modo cada vez. Que mueves el sprite de derecha a izquierda. No se borra el anterior. Movimientos
Pues sigo con el mismo problema
En el bloc explica muy bien como definir sprites
Pero el problema biene cuando mueves el sprite, si ya tienes el fondo echo. si activo modo transparente
Ejem.hombre$=chr$240+chr$ 248+chr$240
Chr$240 esta definido como cero
Symbol 240,0,0,0,0,0,0,0,0
Pues sucede que si activó este modo cada vez. Que mueves el sprite de derecha a izquierda. No se borra el anterior. Movimientos
- ronaldo
- Forum Addict
- Mensajes: 358
- Registrado: Sab 14 Sep , 2013 9:31 pm
- Ubicación: Alicante
- Contactar:
Re: problema con basic
Hola @carrasco79,
No necesitas definirte un carácter como todo 0's porque ya lo tienes: el carácter espacio (PRINT " ").
Si no se te borra un carácter en la pantalla sólo puede ser por 2 motivos:
El ejemplo mezcla los caracteres 240, 241 y 242 en colores amarillo (1), cian (2) y rojo (3). No los he definido, por lo que los 3 caracteres son los de la ROM sin modificar, pero no importa porque sólo es para que lo veas como ejemplo.
La subrutina en 1000 dibuja el sprite del personaje mezclando los 3 caracteres, activando el modo transparente justo antes de dibujar, y desactivándolo después. La subrutina en 1100 borra el sprite pintando un espacio encima, asumiendo que el modo transparente está desactivado (si no lo estuviera, habría que desactivarlo primero).
Espero que el ejemplo te sirva de ayuda.
No necesitas definirte un carácter como todo 0's porque ya lo tienes: el carácter espacio (PRINT " ").
Si no se te borra un carácter en la pantalla sólo puede ser por 2 motivos:
- Porque tienes activado el modo transparente (lo que haría que los píxeles color fondo no se pinten, impidiéndote borrar con ellos otros píxeles).
- Porque no estás pintando el carácter de borrado (espacio, o tu carácter 240) en la posición adecuada.
Código: Seleccionar todo
'
' Inicializacion y definicion de variables
' T$: Activar modo transparente
' TN$: Desactivar modo transparente
'
10 DEFINT A-Z:MODE 0
20 T$=CHR$(22)+CHR$(1)
30 TN$=CHR$(22)+CHR$(0)
' El personaje estara en x,y. Lo dibujamos la primera vez
40 x=1:y=10:GOSUB 1000
' Bucle principal
' Mueve personaje a izquierda y derecha al pulsar
' las teclas del cursor
50 if NOT INKEY(8) THEN if x>1 THEN GOSUB 1100:x=x-1:GOSUB 1000
60 if NOT INKEY(1) THEN if x<20 THEN GOSUB 1100:x=x+1:GOSUB 1000
70 GOTO 50
'===============================
' Dibujar al personaje
'===============================
' Activa modo transparente y pon cursor en x,y
1000 PRINT T$;:LOCATE x,y
' Dibuja al personaje
1010 PRINT CHR$(15);CHR$(1);CHR$(240);CHR$(15);CHR$(2);CHR$(8);CHR$(241);CHR$(15);CHR$(3);CHR$(8);CHR$(242);
' Desactiva modo transparente
1020 PRINT TN$;
1030 RETURN
'===============================
' Borrar al personaje
'===============================
' Asumimos que no el modo transparente no esta activo
' y pintamos un espacio en la posicion del personaje
1100 LOCATE x,y:PRINT " ";
1110 RETURN
La subrutina en 1000 dibuja el sprite del personaje mezclando los 3 caracteres, activando el modo transparente justo antes de dibujar, y desactivándolo después. La subrutina en 1100 borra el sprite pintando un espacio encima, asumiendo que el modo transparente está desactivado (si no lo estuviera, habría que desactivarlo primero).
Espero que el ejemplo te sirva de ayuda.
-
- Lechoncillo
- Mensajes: 17
- Registrado: Mar 26 Jun , 2012 3:34 pm
Re: problema con basic
Gracias , hoy. Probare aver que tal
Pero ya veo donde fallaba yo
Pero ya veo donde fallaba yo
-
- Lechoncillo
- Mensajes: 17
- Registrado: Mar 26 Jun , 2012 3:34 pm
Re: problema con basic
Funciona. Pero el efecto es muy molesto y parpadeante
Otra cosa cuando el sprite se mueve de arriba,abajo?
Como borro el residuo? Con un espacio en blanco o defino un sprite
Saludos .
Otra cosa cuando el sprite se mueve de arriba,abajo?
Como borro el residuo? Con un espacio en blanco o defino un sprite
Saludos .
- ronaldo
- Forum Addict
- Mensajes: 358
- Registrado: Sab 14 Sep , 2013 9:31 pm
- Ubicación: Alicante
- Contactar:
Re: problema con basic
Sí, en BASIC es normal que los redibujados te parpadeen haciendo pintados como este, porque no es suficientemente rápido y te pilla el retrazado del monitor a medio dibujar.
No sé a lo que te refieres exactamente con el residuo al mover en vertical (supongo que será el anterior dibujado). En el código que te he pasado sólo tienes que cambiar las dos líneas donde se comprueba el teclado para que actualicen la Y en lugar de la X y podrás mover el objeto en vertical. El borrado es exactamente igual: pintas un espacio encima del objeto. De hecho, puedes probar a añadir un par de líneas al código que te he pasado, justo después de las líneas que comprueban el teclado, y en ellas comprobar las teclas de arriba y abajo y actualizar la Y. Te debe funcionar igual, sin tocar nada más del código.
No sé a lo que te refieres exactamente con el residuo al mover en vertical (supongo que será el anterior dibujado). En el código que te he pasado sólo tienes que cambiar las dos líneas donde se comprueba el teclado para que actualicen la Y en lugar de la X y podrás mover el objeto en vertical. El borrado es exactamente igual: pintas un espacio encima del objeto. De hecho, puedes probar a añadir un par de líneas al código que te he pasado, justo después de las líneas que comprueban el teclado, y en ellas comprobar las teclas de arriba y abajo y actualizar la Y. Te debe funcionar igual, sin tocar nada más del código.
-
- Lechoncillo
- Mensajes: 17
- Registrado: Mar 26 Jun , 2012 3:34 pm
Re: problema con basic
Muy buenas compañeros ,pues como cada año aquí estoy con mi hobby veraniego ,intentar programar con basic jejeje
Pues nada que esta semana me pondré manos a la obra y muchísimas gracias a todos por vuestra ayuda ya expondré mis dudas un saludo
Pues nada que esta semana me pondré manos a la obra y muchísimas gracias a todos por vuestra ayuda ya expondré mis dudas un saludo
-
- Lechoncillo
- Mensajes: 17
- Registrado: Mar 26 Jun , 2012 3:34 pm
Re: problema con basic
Este es el caso tengo un fondo de pantalla dibujado y el sprite lo borra
Se puede guardar de algún modo?
Se puede guardar de algún modo?
Re: problema con basic
[*] En el ejemplo de @abalore, si pintas un carácter en modo XOR (el modo transparente CHR$(22)+CHR$(1)), volver a pintar el mismo carácter en el mismo sitio restaura el fondo. Esto es válido si sólo pintas 1 carácter: si pintas varios en el mismo sitio mezclando colores ya no sirve.
En los enlaces que te he puesto en los anteriores posts hay explicaciones detalladas de todo esto y más cosas sobre como utilizar el modo transparente y crear sprites con caracteres.
-
- Lechoncillo
- Mensajes: 17
- Registrado: Mar 26 Jun , 2012 3:34 pm
Re: problema con basic
Que sigo intentándolo de vez en cuando
Lo de no borrar el fondo al final lo conseguí
Lo de no borrar el fondo al final lo conseguí
¿Quién está conectado?
Usuarios navegando por este Foro: Google [Bot]
La Comunidad Española |