PROGRAMACIÓ D'APLICACIONS EDUCATIVES AMB VISUAL BASICMÒDUL 6ENRERA
PRÀCTICA 1 2 (pràctica optativa) 3 (pràctica optativa) 4 5 6 8 8
 
Executar el programa m6p6.exe per conèixer el seu comportament.

Veure el llistat del codi del programa, m6p6.

Executar Visual Basic per editar el projecte (acabat): m6p6.vbp.


Una petita animació

Creareu una petita animació d'una pilota a sobre d'una línia. Per fer moure la pilota heu de fer els següents passos repetitivament les vegades oportunes per tal de completar el moviment:

    1. Dibuixar la imatge de la pilota.

    2. Esperar un cert temps depenent de la velocitat amb què voleu que es mogui la pilota.

    3. Dibuixar la imatge en la nova posició.




Aquest projecte el desareu a C:\VBCurs\VBActivi\m6\p6 amb el nom m6p6.

Fareu un formulari com el de la figura. En ell definireu un procediment que anomenareu DibuixaFuncioSinus de manera que en carregar el formulari s'executin les instruccions PosaEscala i DibuixaFuncioSinus. Aquesta funció dibuixarà una línia a sobre de la qual rodarà la pilota.


Fase de disseny de la interfície d’usuari

Els objectes que intervenen en aquesta activitat, com a les anteriors, són: el formulari principal (frmAnima) amb valor "Una funció i una pilota" per a la propietat Caption i el quadre de dibuix (picDibuix).


Fase de programació de respostes a events

Afegiu les variables definides a l'activitat anterior, els procediments PosaEscala i Form_Load. Aquest últim canvia una mica el seu codi:
    Sub Form_Load
      PosaEscala
      DibuixaFuncioSinus
    End Sub

El procediment DibuixaFuncioSinus està definit a continuació.

Procediments d'àmbit tot el formulari

Procediment que dibuixa la funció Sinus:
    Sub DibuixaFuncioSinus ()
      Dim x As Single, Retar As Double
    
      picDibuix.AutoRedraw = True
      picDibuix.CurrentX = VertexAX
      picDibuix.CurrentY = Sin(VertexAX)
      For x = VèrtexAX To VèrtexBX + .1 Step .1
        picDibuix.Line -(x, Sin(x))
      Next
    End Sub

Aquest procediment és el que dibuixa la gràfica del sinus de manera semblant a l'activitat anterior.

Procediment que simula el moviment de la pilota:
    Sub picDibuix_Click ()
      Dim Radi  As Single
      Dim x As Single, Retar As Double
    
      picDibuix.AutoRedraw = False
      'Radi de la pilota
      Radi = .25
      'Color sòlid
      picDibuix.FillStyle = 0
      'Color assignat a la pilota
      picDibuix.FillColor = RGB(0, 0, 255)
      'Not Xor: 
      picDibuix.DrawMode = 10
      'Iteració que simula el moviment de la pilota
      For x = VèrtexAX To VèrtexBX Step .5
        'Dibuixar la pilota
        picDibuix.Circle (x, Sin(x) + Radi), Radi
        'El número d'iteracions varia en funció de la velocitat de l'ordinador.
        For Retar = 0 To 50000: Next 			
        'Esborra la pilota
        picDibuix.Circle (x, Sin(x) + Radi), Radi
      Next x
    End Sub

El valor de la propietat DrawMode és el causant de que en el moviment de la pilota no canvïi el color del fons. Podeu observar el seu efecte, quan executeu el programa, assignant el valor 5, per exemple, per a aquesta propietat.

Tema: Draw Mode Subtema: DrawMode Property

Aquest procediment dibuixa la pilota amb centre en el punt (x,sin(x)+Radi) fent que la pilota es desplaci horitzontalment des de VertexAX fins a VertexBX. Per simular el moviment es dibuixa la pilota en un punt, es fa una petita espera i s'esborra la mateixa pilota. Tot seguit, es dibuixa en un punt proper i es torna a fer el mateix procés. Aquestes accions són les indicades en el bloc repetitiu: For....



Exercicis

Per enviar al professor tutor. (Directori C:\VBCurs\VBExerci\m6\p6 )

E1. A partir del projecte realitzat en aquesta pràctica a fegiu-hi el dibuix de la funció y=cos(x). Feu que una segona pilota de color vermell passi per damunt de la segona gràfica un cop la primera pilota, la de color blau hagi fet el seu recorregut.

El dibuix de la finestra principal quan estigui passant la segona pilota ha de ser semblant a:




Cal enviar els següents fitxers:
    Fitxer projecte m6p6e1.vbp
    Fitxer formulari m6p6e1.frm
    Fitxer executable m6p6e1.exe