PROGRAMACIÓ D'APLICACIONS EDUCATIVES AMB VISUAL BASICMÒDUL 3ENRERA
PRÀCTICA 1 2 3 4 5
 
Executar el programa m3p2.exe per conèixer el seu comportament.

Veure el llistat del codi del programa, m3p2.

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


Els vectors

En aquesta activitat simulareu un sorteig de sis números, semblant als jocs existents, però els números queden amagats i heu d'endevinar-los. Quan escriviu un número a la caixa de text i premeu la tecla RETORN es mostrarà un missatge indicant si heu encertat o no. També podeu veure els números que han sortit si escriviu el número d'extracció que voleu.

En el formulari hi ha dues etiquetes i cinc caixes de text. Veureu uns números vermells, no estan en el formulari real, els hem posat per identificar a cadascun dels objectes.





Fase de disseny de la interfície d’usuari

Afegiu els objectes següents al formulari principal del projecte m3p2 que desareu al directori C:\VBCurs\VBActivi\m3\p2

Objecte

Propietat

Valor

Formulari (1)

Caption

Loto 6/49

 

(Nombre)

frmLoto6_49

Caixa de text (2)

(Nombre)

txtInfo

 

Multiline

True

 

Enabled

False

 

Text

""

Caixa de text Entrar nº (3)

(Nombre)

txtNumeroEntrat

 

Text

""

Caixa de text Resultat (4)

(Nombre)

txtResultat

 

Enabled

False

 

Text

""

Caixa de text Element a Veure (5)

(Nombre)

txtElementAVeure

 

Text

""

Caixa de text (6)

(Nombre)

txtElement

 

Enabled

False

 

FontSize

24

 

Text

""

Etiqueta (7)

(Nombre)

lblInt

 

Caption

Introdueix un número

Etiqueta (8)

(Nombre)

lblValors

 

Caption

Veure l'element



La propietat Multiline permet que el text d'una caixa de text es presenti en diferents línies. Per defecte, una caixa de text utilitza una sola línia.

Tema: Multiline Subtema: Multiline Property



Fase de programació de respostes a events

Declaracions generals d'àmbit el formulari principal

Com que el vector que tindrà els resultats del sorteig ha de ser una variable accessible a diferents funcions del formulari (àmbit el formulari), ho declarareu a l'apartat general del formulari :
    Dim VectorLoto(6)

Així mateix, i per tal d'obligar a que el vector Loto tingui els elements VectorLoto(1), VectorLoto(2),.., VectorLoto(6) heu d'escriure la instrucció:
    Option Base 1
En cas contrari, Visual Basic agafa per defecte la instrucció Option Base 0 que implica que el vector anterior tindria un altre element: VectorLoto(0)

Tema: Option Base Subtema: Option Base Statement


Mètodes associats a l'event Load

Tal com es va comentar a la unitat anterior, en el moment d'executar el programa es carrega a la memòria el formulari principal. En aquest moment es produeix l'event Load del formulari. La resposta a l'event (el mètode frm_Load) és el procediment següent en el qual s'inicialitzen les variables:
Recordeu que no cal que escriviu aquest codi. Llegiu-lo, per tal de saber per a què serveix i com ho fa. A continuació, el podeu copiar a la carpeta i enganxar-lo en la finestra d'edició de Visual Basic.
    Sub frm_Load () Dim i As Integer, j As Integer Dim NumeroSortejat As Integer Dim Treballar As Integer, HaSortit As Integer txtInfo.Text = "Aquest programa fa un sorteig de sis números entre 1 i " txtInfo.Text = txtInfo.Text + "49. Has d'endevinar un d'aquests números." Randomize For i = 1 To 6 'Fa el sorteig d'un número i comprova si ja ha sortit Treballar = True Do While Treballar ' Fa el sorteig d'un número NumeroSortejat = Int(Rnd * 49) + 1 'Comprova si ja ha sortit HaSortit = False For j = 1 To i - 1 If NumeroSortejat = VectorLoto(j) Then HaSortit = True Next j 'Si no ha sortit l'afegeix al vector If Not HaSortit Then VectorLoto(i) = NumeroSortejat Treballar = False End If Loop Next i End Sub
Aquest procediment, que simula el sorteig, treballa de la forma següent: repeteix sis vegades l'acció de sortejar el número que ocuparà el lloc, comprova si ja ha sortit i, cas que ja hagi sortit, torna a sortejar. En cas contrari es guarda el resultat en el lloc que escaigui de VectorLoto().


Tema: Randomize Subtema: Randomize Statement

Inicialitza el generador de números aleatoris.

Tema: Rnd Subtema: Rnd Function

Dóna un número aleatori.

Tema: Int Subtema: Int Function

Retorna la part entera d'un nombre.


Mètodes associats a l'event Change

En canviar el valor de la caixa de text txtElementAVeure, s'executa el procediment d'event corresponent que consisteix a mostrar-nos en una caixa de text el valor que ha sortit en la posició que indiqueu.
    Sub txtElementAVeure_Change () Dim i As Integer Dim Element As Integer i = Val(txtElementAVeure) If i > 0 And i < 7 Then Element = VectorLoto(i) txtElement = Str(Element) End If End Sub

Mètodes associats a l'event Key_Down

Quan es prem la tecla RETORN, dins de la caixa de text txtNumeroEntrat es comprova si el número introduït està premiat o no.
    Sub txtNumeroEntrat_KeyDown (KeyCode As Integer, Shift As Integer) Dim i As Integer Dim Endevinat As Integer If KeyCode = 13 Then Endevinat = False For i = 1 To 6 If VectorLoto(i) = Val(txtNumeroEntrat) Then Endevinat = True Next i If Endevinat Then txtResultat = "Molt bé" Else txtResultat = "Intenteu-ho altra vegada" End If End If End Sub


Exercicis

Per enviar al professor tutor. (Directori C:\VBCurs\VBExerci\m3\p2 )

E1. Feu un vector de 5 elements per tal de guardar noms de 45 caràcters. Inicialitzeu els valors quan es produeixi l'event load del formulari i, a petició de l'usuari, feu que aparegui el nom corresponent al lloc requerit.

La finestra principal del programa ha de quedar més o menys així:





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