Programovanie makier v LibreOffice: Funkcia Rnd (2) – vlastná tipovacia hra LOTO

LibreOffice 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.  

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

1.tip od užívateľa 1.tip od užívateľa

2.tip od užívateľa a tak to pokračuje ďalej 2.tip od užívateľa a tak to pokračuje ďalej

Výsledok činností makra Výsledok činností makra

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é.



(Jako ve škole) Průměr: 1.00 | Hodnotilo: 3
 

Přidat názor

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
 
 
woo jaw demo hz