Quanto ao movimento, ha varios modos de faze-lo com perfeicao.

        1. Usando o PCOPY
        2. Usando bordas da cor-de-fundo nas figuras capturadas com GET
        3. Usando o metodo de apagar e desenhar



Metodo 3:

Voce deve apagar a figura anterior e por a figura nova, e assim por diante.
Esse metodo e' o mais ineficiente, pois `AS VEZES (depende do caso) pode
"piscar". 
        ---- Programa -----
No final do e-mail eu estou mandando um programa, que faz uma animacao 
usando esse metodo, e explicando sua logica.



Metodo 2:

Na hora de capturar suas figuras com o GET, procure deixar uma borda da cor 
do fundo (geralmente preta). Se voce deixar uma borda de 3 pixels, entao a 
sua figura podera se mover no maximo de 3 em 3 pixels. Se usar 5, pixels, 
de cinco em cinco, e assim por diante
        ---- Programa -----
Eu acabei de fazer um programa com esse metodo, especialmente para voce ver 
como funciona.


Metodo 1:

Nao sao todos os modos de tela (SCREEN) que suportam o PCOPY. Para saber 
quais sao os modos de tela que aceitam o comando, consulte "Modos de Tela", 
no help do Qbasic. Um exemplo de modo de tela grafica que permite o uso do 
PCOPY e' o 7 (320x200, 16 cores, paginas de memoria 0-7).


Vou explicar como se usa o PCOPY





Aula de PCOPY
=============


O PCOPY serve para copiar as pagina de memoria de video. Antes, precisamos 
saber o que e' isso.

        Paginas de memoria de video
        ===========================
        
        Alguns modos de tela, suportam que voce use varias telas ao mesmo 
tempo. Essas telas sao as paginas de memoria de video. Voce, provavelmente,
so usou a pagina de memoria 0 (zero), que esta' presente em todos os modos 
de tela. Mas voce pode, ao mesmo tempo, desenhar em uma pagina enquanto 
visualiza outra. Este recurso e' muito importante quando voce quer obter 
uma animacao.

De uma olhadinha logo abaixo:


SCREEN 7, 0, 1, 0
             |  |
             |  |
             |  +--- Pagina que voce esta vendo
             |
             +------ Pagina onde voce esta desenhando

Se voce comecar um programa com SCREEN 7, 0, 1, 0 e tentar desenhar alguma 
coisa, voce nao vera nada, pois voce esta desenhando na pagina 1, mas esta 
vendo o que esta acontecendo na pagina 0.
Mas, se voce quiser copiar o conteudo da pagina 1 para a pagina 0, ai' voce 
vera o desenho. Para isso, voce deve usar:

PCOPY 1, 0
      |  |
      |  |
      |  +--- Pagina de destino: para onde voce quer copiar
      |
      +------ Pagina de origem: a que voce quer copiar


So para voce se localizar, abaixo vem um exemplo:



'Inicio do programa

SCREEN 7,0,1,0

LINE (100,100)-(120,120),14,BF     'E' um quadrado amarelo
GET  (100,100)-(120,120), quadrado 'Captura o quadrado

'OBS.: Voce nao esta vendo o quadrado, pois ele esta desenhado na pagina 1, 
'enquanto voce esta vendo o que esta na pagina 0. Se usar PCOPY 1,0, entao 
voce 'estara copiando a pagina 1 para a pagina 0, entao vera o quadrado.

CLS                    'Limpa a tela da pagina 1, para eliminar o quadrado

FOR x = 1 to 180 STEP 3'O quadrado vai do ponto 1 ate o 180 de 3 em 3
PUT (x, 100), quadrado 'Poe-se o quadrado na posicao indicada, mas voce
                       'ainda nao esta vendo-o.
PCOPY 1,0              'Agora voce esta vendo o quadrado, pois copiou o
                       'quadradinho para a tela que voce esta vendo (0)
CLS                    'Agora limpamos a tela 1. Atencao nisso! Voce conti-
                       'nua vendo o quadrado, pois voce limpou a pagina 1.
NEXT x

'Fim do programa




Exemplo do Metodo 3
           ========


DECLARE SUB pista ()
SCREEN 13
pista

FOR raio = 160 TO 1 STEP -1
CIRCLE (160, 100), raio + 1, 0
CIRCLE (160, 100), raio, 31
pista
FOR t = 1 TO 1000: NEXT
NEXT



' Para fazer este programa eu usei a seguinte logica:
'
' Eu desenho a pista
' Eu defino que o raio do circulo vai ficando cada vez menor (o circulo diminui)
' Entao eu faco um circulo preto (cor de fundo) um ponto maior que o definido
' ! Em outras palavras, eu faco um circulo preto em lugar do circulo
'-! branco que havia antes.
' Ai fica um buraco na pista... Mas e'‚ so desenha-la de novo!
' E ai voce da' um tempinho pequeno ate' ele desenhar outro circulo, menor
' E tudo se repete!

SUB pista
LINE (160, 100)-(250, 200), 25
LINE (160, 100)-(200, 200), 26
LINE (160, 100)-(150, 200), 26
LINE (160, 100)-(100, 200), 25
END SUB



Exemplo do Metodo 2


SCREEN 13

tamanho = 10: borda = 3
DIM Caixa(121)
LINE (100, 100)-(110, 110), 14, BF
GET (100 - borda, 100 - borda)-(110 + borda, 110 + borda), Caixa
CLS

FOR x = 1 TO 300
PUT (x, 100), Caixa, PSET    'Coloca a caixa
FOR t = 1 TO 1000: NEXT t    'Da um tempinho
NEXT x

1