Crearea Unui Joc de Blackjack In Labview

Labview: Blackjack

Pentru a crea un joc de blackjack in Labview s-au facut urmatoarele ajustari ale regulilor oficiale:

cartiile se vor alege la intamplare de la 1 la 11

jucatorul nu poate sa decida daca valoarea cartii AS este 1 sau 11

nu exista optiuni de split sau double

in caz de caștig valoarea pariului este returnata de doua ori

dealer-ul nu isi va afisa prima carte

jocul este destinat pentru un singur jucator

Avand stabilite aceste lucruri se începe construcția jocului prin crearea panoul frontal. Pentru acesta s-au folosit:

1 x Flat Box (aflat sub “Decorations”)

2 x File Path Control (“Express -> Text Controls” )

5 x Numeric Indicator (“Numeric”)

2 x Numeric Control (“Numeric”)

1 x 2D Picture (“Classic ->Classic Graph->Controls”)

1 x Horizontal Pointer Slide (“Numeric”)

1 x Push Button (“Boolean”)

4 x OK Button (“Boolean”)

2 x String Indicator (“String”)

1 x Round LED (“Boolean”)

1 x Horizontal Graduated Bar (“Numeric”)

*optional* 1 x Label (“Decorations”)

*optional* 1 x Free Frame (“Decorations”)

*optional* – utilizat doar pentru a oferi un aspect mai frumos

Rolul Flat Box-ului este de a mentine pozitia butoanelor si a celorlalte controalelor chiar si dupa inchiderea programului, astfel toate celelalte controale vor fi pozitionate in interiorul acesteia. Pentru a redimensiona Flat Box-ul se va face clic pe patratelul albastru din colt care apare odata ce se amplaseaza cursorul deasupra acestuia.

f

Fig 1.0 <Redimensionare Flat Box>

In cazul <File Path Control> singura modificare a fost modificarea etichetei (“Label”) care se face prin dublu clic pe aceasta. Acelasi lucru se va face si pentru cele 5 Numeric Indicator. (Pentru numele conferite verificati fig 1.9)

Fig 1.1 <Redenumire Label>

Pentru <Numeric Control> pe langa redenumirea etichetei se va seta si tipul de date utilizat precum si limitele admise. Pentru asta se face clic dreapta pe unul dintre Numeric Control -> Representation -> U64 (Unsigned Quad) iar pentru cel de al doilea se va alege U32 (Unsigned Long). Pentru a seta limitele de introducere a datelor se va face clic dreapta din nou -> Properties -> Data Entry dupa care se vor seta minimul,maximul si valoare cu care se face incrementarea. Pentru acest exemplu sau utilizat, pentru vi-ul cu U32: 17,21,1, iar pentru cel cu U64: 500,15000,50.

Fig 1.2 & 1.3 <Setarea tipului de date si a limitelor de introducere a datelor>

Pentru <2d Picture> nu sunt necesare modificari (dimensiunea acestuia poate fi modificata deoarece se va asigura redimensionarea imaginii in cadrul diagramei bloc) insa pentru un aspect frumos am ascuns eticheta (“Label”) facand: clic dreapta -> Properties->Appearance ->sub “Label” exista un buton visible pe care l-am debifat. Pentru<Horizontal Pointer Slide> pe langa nume va trebui setat si limitele de selectie prin dublu clic pe valoarea care doriti sa o modificati (nota: nu trebuie modificate decat valorile din capete, Labview ajustand mai apoi valorile intermediare).Mai trebuie setat si tipul de date utilizat pe U8 (Unsigned Byte <vezi fig 1.2>). Se seteaza si U16 petru <Horizontal Graduated Bar>.Tot aici Properties->Scale->Scale Range(min: 50 max:500).

Fig 1.4 & 1.5 & 1.6 <Ascundere Label,setare date selectie pentru er si setare Scale Range>

La <Push Button> este necesara modificarea “Mechanical Action” (Modului de functionare a butonului) astfel incat acesta sa fie “Switch when Pressed”. Pentru aceasta: clic dreapta pe buton-> Mechanical Action. Acelasi lucru va fi realizat si pentru cele 4 x <Ok button> cu mentiunea ca aici se va selecta “Latch when released”.

Fig 1.7 <Alegerea modului de actionare>

O ultima modificare consta din setarea textului afisat pe butoane. Se va face clic dreapta -> Properties -> Appearance sub Show Boolean Text. Acesta modificare se va realiza pentru cele 4 <OK button>, optional modificand din acelasi meniu culoarea textului pentru unul dintre butoane (care serveste ca si buton Quit).

Fig 1.8 <Setare text butoane>

Aspectul final si numele toturor controlelor este (dreptughiurile rosii sunt folosite pentru cenzura):

Fig 1.9 <Aspect panou frontal>

Pentru a incepe sa cream diagram block se va face clic pe meniul Window-> Show Block Diagram sau se va apasa tastele Ctrl+E. Controalele din front panel vor aparea si aici. Pentru moment amplasatile undeva unde sa nu va incomodeze si ignoratile. In total vor exista 4 sectiuni. Testarea pe parcurs nu este recomandata.

Pentru prima sectiune se vor insera:

1 x numeric Constant (“Numeric”)

2 x String Constant (“String”)

1 x Empty string Constant (“String”)

1 x Play Sound File (“Programming->Graphics&Sound->Sound->Output”)

11 x Property Node (“Programming->Aplication Control”)

2 x Unboundle by Name (“Programming->Cluster,Class&Variant”)

1 x False si 1 x True Constant (“Boolean”)

2 x Divide (“Numeric”)

1 x Search and Replace String (“String”)

Path-ul de la Background Music (cel din Front Panel)

1 x String Concatenation (“String”)

1 x Min & Max (“Comparation”)

1 x Path to String (“Programming->File I/O->Advance File Functions”)

1 x String to Path (“Programming->File I/O->Advance File Functions”)

1 x read PNG File (“Programming->Graphics&Sound->Graphic Formats”)

1 x Draw Flattened Pixmap (“Programming->Graphics&Sound->Picture functions”)

Pentru a conecta <Property Node> se face clic dreapta pe ele ->link to->pane->se alege controlul dorit. Propietatea dorita se alege din: clic dreapta->Select Property, iar pentru a seta intre modul read/write se face clic dreapta->Change All to Read/Write Mode (in funtie de modul in care va aflati).

Fig 2.1 & 2.2 <Schimbare mode pentru property node si link Property Node>

Fig 2.3 <Selectare propietate>

In cazul <Unboundle by Name> pentru a selecta ce urmeaza sa fie unboundle: dupa conectarea modulului se va face clic stanga pe propietate. Pentru a mai adauga un camp sa va trage de dreptunghiul din mijloc.

Fig 2.4 & 2.5 <Selectare date Unboundle by Name si adaugare de campuri>

Fig 2.6 <Conexiuni

prima sextiune>

Conectat

la sectiunea 4

Pentru cea de-a doua sectiune se vor folosi

3 x Case Structure (“Structures”)

1 x While/Event Structure (“Structures”)

Property Node (“Programming->Aplication Control”)

Multiply/Random Number/Round Towards +Infinity (“Numeric”)

Add/Devide (“Numeric”)

Less or equal/Equal/Greater (“Comparation”)

And/Or/Not (“Boolean”)

True Constant/Boolean to (0,1) (“Boolean”)

1 x Search and Replace String (“String”)

Current Card/Total/Hit Button (din Front Panel)

1 x Concatenate Strings (“String”)

1 x Min & Max (“Comparation”)

1 x Path to String (“Programming->File I/O->Advance File Functions”)

1 x String to Path (“Programming->File I/O->Advance File Functions”)

1 x read PNG File (“Programming->Graphics&Sound->Graphic Formats”)

1 x Draw Flattened Pixmap (“Programming->Graphics&Sound->Picture functions”)

String/Empty String/Numeric Constant (“Numeric/String”)

Aceasta sectiune contine o bucla cu registry de deplasare. Pentru a crea o astfel de bucla se conecteaza o constanta la o bucla while dupa care clic dreapta pe punctul de conexiune si “Replace with Shift Register”.

In cazul structurii cu evenimente pentru a alege evenimentul dorit: clic dreapta pe event si apoi “Edit Event Handled by this case…”

Fig 2.7 si 2.8<Creare bucla cu registry de deplasare si editare eveniment>

Conexiunile acestei sectiuni sunt:

*nota: vi-urile incercuite sunt amplasate aici pentru a nu le pierde.Ele nu sunt conectate*

Fig 2.9.1 <Conexiuni sectiune 2>

Fig 2.9.2 <Conexiuni sectiune 2>

Doar 2 dintre structurile case au ambele cazuri si anume cele 2 puse una in alta:

Fig 2.9.3 <Conexiuni section 2>

Fig 2.9.4 <Conexiuni section 2>

fdsdfg

A treia sectiune contine:

Property Node (“Programming->Aplication Control”)

False/True Constant (“Boolean”)

Bucla cu registry de deplasare

Add/Substract (“Numeric”)

Case/Event Structure (“Structure”)

Greater (“Comparation”)

Conexiunile acesteia sunt:

Fig 2.10.1 <Conexiuni sectiune 3>

Cazul False pentru structura case este:

Fig 2.10.2 <Conexiuni sectiune 3>

Cea de-a patra sectiune si ultima are o legatura cu sectiunea 1 si contine toate vi-urile mentionate mai sus la care se mai adauga:

Stop (“Programming->Aplication Control”)

Wait(ms) (“Timing”)

Modul de realizare a acestei sectiuni este:

Fig 2.11.1 <Conexiuni sectiune 4>

Fig 2.11.2 <Conexiuni sectiune 4>

Are 2 cazuri

Doar structura case marcata are 2 cazuri iar cazul True este:

Fig 2.11.3 <Conexiuni sectiune 4>

Fig 2.11.4 <Conexiuni sectiune 4>

2 cazuri

Fig 2.11.5 <Conexiuni sectiune 4>

Desi este lung programul nu este neaparat complicat. Multitudinea de componente face insa ca defectele sa fie mai greu de identificat; drept pentru care recomand utilizarea de probe pentru a elimina bug-urile din program.

Pentru a functiona inaintea simularii se va alege muzica de fundal (fisier .wav) si din cadrul unui fiser de imagini predefinit (numele sunt : 2 pana la 4 cifre + ref.png si empty.png) o imagine denumita ref.png.Denumirea imaginilor se face dupa logica: culoare,valoare carte + cifra de la 1 la 4 pentru carte 10 (10,J,Q,K au toate valoarea 10).Cartea AS va aparea de 2 ori ca si 1 dar si ca si 11. Empty.png si ref.png sunt spatele unei carti de joc respectiv o poza oarecare. Poza cu spatele unei carti va fi duplicata si pentru: 10,20,30 si 40.Toate poze au format png.

Similar Posts