Vlastné LOTO
Každý by mal poznať lotériu s názvom LOTO. Pre zopakovanie, máme uhádnuť 6 čísel. Ako bonus máme ešte jedno dodatkové číslo, Pre dôveryhodnosť, zoberieme si niektoré informácie z tejto stránky, aby to bolo aspoň trošku uveriteľné. Interval hádaných čísel je od 1 do 49. Okrem náhodných čísel potrebujeme pole pre tip čísel od užívateľa a taktiež polia pre vylosované čísla. Rovnako urobíme prvý ťah a druhý ťah. Bude to dosť dobrá fuška niečo také vytvoriť, ale my sa výziev nebojíme
1. príklad: Vlastná hra LOTO
Sub LOTO REM začiatok procedúry Dim tipPole(1 To 6) As Integer REM deklarácie premenných Dim lotoPole1(1 To 6) As Integer Dim lotoDodatkoveCislo1 As Integer Dim lotoPole2(1 To 6) As Integer Dim lotoDodatkoveCislo2 As Integer Dim vstup As String For i = 1 To 6 REM užívateľ zadal svoj tip vstup = InputBox("Zadajte váš " & i & " tip!") If IsNull(vstup) Then MsgBox "Nič si nezadal!" Exit Sub End If If Len(Trim(vstup)) = 0 Then MsgBox "Nič si nezadal!" Exit Sub End If If Int(Trim(vstup)) <= 0 Then MsgBox "Zadal si mimo interval lotérie!" Exit Sub End If If Int(Trim(vstup)) >= 50 Then MsgBox "Zadal si mimo interval lotérie!" Exit Sub End If tipPole(i) = Int(vstup) Next For i = 1 To 6 REM testujeme či užívateľ nezadal rovnaké čísla For j = 1 To 6 If tipPole(i) = tipPole(j) Then If i <> j Then MsgBox "Tipy majú byť rozdielné!" Exit Sub End If End If Next Next vstup = "" Dim boolPremenna As Boolean Dim pocitadlo As Integer boolPremenna = True Do pocitadlo = 0 For i = 1 To 6 REM prvý ťah lotoPole1(i) = Int((49-1)*Rnd+1) Next For i = 1 To 6 REM testujeme či sú čísla rozdielne For j = 1 To 6 If lotoPole1(i) = lotoPole1(j) Then If i <> j Then pocitadlo = pocitadlo + 1 End If End If Next Next If pocitadlo = 0 Then boolPremenna = False End If Loop While boolPremenna = True boolPremenna = True Do pocitadlo = 0 For i = 1 To 6 REM druhý ťah lotoPole2(i) = Int((49-1)*Rnd+1) Next For i = 1 To 6 REM testujeme či sú čísla rozdielne For j = 1 To 6 If lotoPole2(i) = lotoPole2(j) Then If i <> j Then pocitadlo = pocitadlo + 1 End If End If Next Next If pocitadlo = 0 Then boolPremenna = False End If Loop While boolPremenna = True boolPremenna = True Do pocitadlo = 0 lotoDodatkoveCislo1 = Int((49-1)*Rnd+1) REM prvy ťah dodatkového čísla For i = 1 To 6 REM testujeme či sú čísla rozdielne If lotoPole1(i) = lotoDodatkoveCislo1 Then pocitadlo = pocitadlo + 1 End If Next If pocitadlo = 0 Then boolPremenna = False End If Loop While boolPremenna = True boolPremenna = True Do pocitadlo = 0 lotoDodatkoveCislo2 = Int((49-1)*Rnd+1) REM druhý ťah dodatkového čísla For i = 1 To 6 REM testujeme či sú čísla rozdielne If lotoPole2(i) = lotoDodatkoveCislo2 Then pocitadlo = pocitadlo + 1 End If Next If pocitadlo = 0 Then boolPremenna = False End If Loop While boolPremenna = True Dim pocitadlo1 As Integer pocitadlo1 = 0 For i = 1 To 6 REM konečne sme sa dostali k vyhodnocovaniu For j = 1 To 6 If tipPole(i) = lotoPole1(j) Then pocitadlo1 = pocitadlo1 + 1 End If Next Next Dim pocitadlo2 As Integer pocitadlo2 = 0 For i = 1 To 6 For j = 1 To 6 If tipPole(i) = lotoPole2(j) Then pocitadlo2 = pocitadlo2 + 1 End If Next Next Dim pocitadloDod1 As Integer pocitadloDod1 = 0 For i = 1 To 6 If tipPole(i) = lotoDodatkoveCislo1 Then pocitadloDod1 = pocitadloDod1 + 1 End If Next Dim pocitadloDod2 As Integer pocitadloDod2 = 0 For i = 1 To 6 If tipPole(i) = lotoDodatkoveCislo2 Then pocitadloDod2 = pocitadloDod2 + 1 End If Next Dim retazec1 As String retazec1 = "p" If pocitadlo1 = 6 Then If pocitadloDod1 = 0 Then retazec1 = "500 000 €" End If End If If pocitadlo1 = 6 Then If pocitadloDod1 = 1 Then retazec1 = "500 000 €" End If End If If pocitadlo1 = 5 Then If pocitadloDod1 = 1 Then retazec1 = "10 000 €" End If End If If pocitadlo1 = 5 Then If pocitadloDod1 = 0 Then retazec1 = "2770,60 €" End If End If If pocitadlo1 = 4 Then If pocitadloDod1 = 0 Then retazec1 = "29,10 €" End If End If If pocitadlo1 = 4 Then If pocitadloDod1 = 1 Then retazec1 = "29,10 €" End If End If If pocitadlo1 = 3 Then If pocitadloDod1 = 1 Then retazec1 = "17,60 €" End If End If If pocitadlo1 = 2 Then If pocitadloDod1 = 1 Then retazec1 = "5,50 €" End If End If If pocitadlo1 = 3 Then If pocitadloDod1 = 0 Then retazec1 = "4,40 €" End If End If If pocitadlo1 = 2 Then If pocitadloDod1 = 0 Then retazec1 = "0 €" End If End If If pocitadlo1 = 1 Then If pocitadloDod1 = 1 Then retazec1 = "0 €" End If End If If pocitadlo1 = 1 Then If pocitadloDod1 = 0 Then retazec1 = "0 €" End If End If If pocitadlo1 = 0 Then If pocitadloDod1 = 1 Then retazec1 = "0 €" End If End If If pocitadlo1 = 0 Then If pocitadloDod1 = 0 Then retazec1 = "0 €" End If End If Dim retazec2 As String retazec2 = "k" If pocitadlo2 = 6 Then If pocitadloDod2 = 0 Then retazec2 = "500 000 €" End If End If If pocitadlo2 = 6 Then If pocitadloDod2 = 1 Then retazec2 = "500 000 €" End If End If If pocitadlo2 = 5 Then If pocitadloDod2 = 1 Then retazec2 = "5 000 €" End If End If If pocitadlo2 = 5 Then If pocitadloDod2 = 0 Then retazec2 = "250 €" End If End If If pocitadlo2 = 4 Then If pocitadloDod2 = 0 Then retazec2 = "25 €" End If End If If pocitadlo2 = 4 Then If pocitadloDod2 = 1 Then retazec2 = "25 €" End If End If If pocitadlo2 = 3 Then If pocitadloDod2 = 1 Then retazec2 = "10 €" End If End If If pocitadlo2 = 2 Then If pocitadloDod2 = 1 Then retazec2 = "5 €" End If End If If pocitadlo2 = 3 Then If pocitadloDod2 = 0 Then retazec2 = "3 €" End If End If If pocitadlo2 = 2 Then If pocitadloDod2 = 0 Then retazec2 = "0 €" End If End If If pocitadlo2 = 1 Then If pocitadloDod2 = 1 Then retazec2 = "0 €" End If End If If pocitadlo2 = 1 Then If pocitadloDod2 = 0 Then retazec2 = "0 €" End If End If If pocitadlo2 = 0 Then If pocitadloDod2 = 1 Then retazec2 = "0 €" End If End If If pocitadlo2 = 0 Then If pocitadloDod2 = 0 Then retazec2 = "0 €" End If End If REM a nakoniec vyvrcholenie programu MsgBox "Deň žrebovania: 27.08.2017" & Chr(10) & "Váš tip: " & tipPole(1) & " " & tipPole(2) & " " & tipPole(3) & " " & tipPole(4) & " " & tipPole(5) & " " & tipPole(6) & " " & Chr(10) & "1. ťah: " & lotoPole1(1) & " " & lotoPole1(2) & " " & lotoPole1(3) & " " & lotoPole1(4) & " " & lotoPole1(5) & " " & lotoPole1(6) & Chr(10) & "A dodatkové číslo k 1. ťahu: " & lotoDodatkoveCislo1 & Chr(10) & "2. ťah: " & lotoPole2(1) & " " & lotoPole2(2) & " " & lotoPole2(3) & " " & lotoPole2(4) & " " & lotoPole2(5) & " " & lotoPole2(6) & Chr(10) & "A dodatkové číslo k 2. ťahu: " & lotoDodatkoveCislo2 & Chr(10) & Chr(10) & "V 1. ťahu ste uhadli " & pocitadlo1 & " čísla a " & pocitadloDod1 & " dodatkových čísel a vyhrávate " & retazec1 & "!" & Chr(10) & "V 2. ťahu ste uhadli " & pocitadlo2 & " čísla a " & pocitadloDod2 & " dodatkových čísel a vyhrávate " & retazec2 & "!" End Sub REM koniec procedúry
2.tip
od užívateľa a tak to pokračuje ďalej
Rozbor makra:
Nezľaknite sa, že makro je dlhé. Pritom na jeho zvládnutie postačí ovládať dobre polia a vnorené cykly. Keď pri tomto programe sa nenaučíte základy programovania makier, tak asi už nikdy :).
Takže, vytvorili sme si program, ktorý nám manažuje tipovaciu hru LOTO. Mojím cieľom nebolo propagovať hazardné hry, bože chráň :), ale precvičiť funkciu Rnd a zároveň aj programátorskú zručnosť. Tipovacie hry sú stelesnením náhody a matematickej štatistiky, čiže uplatnenie funkcie Rnd je tam viac než vhodné. Samotný program môže mať chybičky, ale základná kostra tipovacej súťaže LOTO by mala fungovať.
Nabudúce si dokončíme príklady s Rnd a sľubujem, už nebudú také dlhé.