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é.
Pokračujeme v práci s funkciou Rnd. Čaká nás lotéria v podaní funkcie Rnd. Vytvoríme si vlastnú tipovaciu súťaž LOTO
na základe reálnej predlohy.












