Programovanie makier v LibreOffice: Funkcia Rnd (3)

Vývoj Posledný diel z minicyklu o funkcii Rnd bude v znamení precvičenia látky s pomocou dvoch zaujímavých programov.   

Hod kockou

Začneme typickým problémom náhody, hod kocky.

1. program: Hod kockou

  Sub hodKocky   REM začiatok procedúry 
       
        Dim vstup As String    REM deklarácie premenných
        Dim tip As Integer
        Dim hod As Integer
        Dim kocka As String
        Dim oznamVitaz As String 
                
        vstup = InputBox("Ideme si hodiť kockou! Skús tipnuť, aké číslo dostaneme pri hode kockou? Tipujte štandardne od 1 do 6")
        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 OR Int(Trim(vstup)) >= 7 Then
            MsgBox "Zadal si mimo intervál hodu kocky!"
            Exit Sub        
        End If  
                
                tip = Int(vstup)
                
                hod = Int((6-1+1)*Rnd+1)   REM hadžeme imaginárnou kockou 
                
                If hod = 1 Then
                        kocka = "-----" & Chr(10) & "     " & Chr(10) & "  *  " & Chr(10) & "     " & Chr(10) & "-----"
                End If
                
                If hod = 2 Then
                        kocka = "-----" & Chr(10) & " *   " & Chr(10) & "     " & Chr(10) & "   * " & Chr(10) & "-----"
                End If
                
        If hod = 3 Then
                        kocka = "-----" & Chr(10) & " *   " & Chr(10) & "  *  " & Chr(10) & "   * " & Chr(10) & "-----"
                End If
                
                If hod = 4 Then
                        kocka = "-----" & Chr(10) & " * * " & Chr(10) & "     " & Chr(10) & " * * " & Chr(10) & "-----"
                End If
                
        If hod = 5 Then
                        kocka = "-----" & Chr(10) & " * * " & Chr(10) & "  *  " & Chr(10) & " * * " & Chr(10) & "-----"
                End If
                
                If hod = 6 Then
                        kocka = "-----" & Chr(10) & " *** " & Chr(10) & "     " & Chr(10) & " *** " & Chr(10) & "-----"
                End If                           
                
                If hod = tip Then
                        oznamVitaz = "Uhadol si, blahoželám"
                Else
                        oznamVitaz = "Neuhadol si, smola"
                End If
                        
            MsgBox "Hadžem kockou" & Chr(10) & Chr(10) & kocka & Chr(10) & Chr(10) & oznamVitaz      

End Sub   REM koniec procedúry

Vstup od užívateľa Vstup od užívateľa

Výsledok makra Výsledok makra

Simulácia pohybu hráča

Budeme simulovať náhodný pohyb hráča. Smer aj počet krokov sa určí náhodne. Poďme sa pozrieť na implementáciu.

2. program:

Sub pohyb   REM začiatok procedúry 
       
        Dim pocetKrokov As Integer    REM deklaracie premennych 
        Dim smer As Integer
        Dim nultaPozicia As String
        Dim vykreslenePole As String
        Dim smerSlovom As String
        Dim test As Integer

        pocetKrokov = Int((3-1+1)*Rnd+1)   REM pohyb je zalozeny na nahode
        smer = Int((4-1+1)*Rnd+1)
        
        REM ideme vykreslit pohyb 
        
        nultaPozicia = "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "***+***" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******"
        
        If smer = 1 Then
                If pocetKrokov = 1 Then
                        vykreslenePole =  "*******" & Chr(10) & "*******" & Chr(10) & "***+***" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******"
                End If
        End If

        If smer = 1 Then
                If pocetKrokov = 2 Then
                        vykreslenePole =  "*******" & Chr(10) & "***+***" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******"
                End If
        End If
        
        If smer = 1 Then
                If pocetKrokov = 3 Then
                        vykreslenePole =  "***+***" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******"
                End If
        End If
        
        If smer = 2 Then
                If pocetKrokov = 1 Then
                        vykreslenePole =  "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "****+**" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******"
                End If
        End If  
        
        If smer = 2 Then
                If pocetKrokov = 2 Then
                        vykreslenePole =  "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*****+*" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******"
                End If
        End If
        
        If smer = 2 Then
                If pocetKrokov = 3 Then
                        vykreslenePole =  "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "******+" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******"
                End If
        End If
        
        If smer = 3 Then
                If pocetKrokov = 1 Then
                        vykreslenePole =  "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "***+***" & Chr(10) & "*******" & Chr(10) & "*******"
                End If
        End If
        
        If smer = 3 Then
                If pocetKrokov = 2 Then
                        vykreslenePole =  "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "***+***" & Chr(10) & "*******"
                End If
        End If  
        
        If smer = 3 Then
                If pocetKrokov = 3 Then
                        vykreslenePole =  "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "***+***"
                End If
        End If  
        
        If smer = 4 Then
                If pocetKrokov = 1 Then
                        vykreslenePole =  "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "**+****" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******"
                End If
        End If
        
        If smer = 4 Then
                If pocetKrokov = 2 Then
                        vykreslenePole =  "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*+*****" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******"
                End If
        End If  
                        
        If smer = 4 Then
                If pocetKrokov = 3 Then
                        vykreslenePole =  "*******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "+******" & Chr(10) & "*******" & Chr(10) & "*******" & Chr(10) & "*******"
                End If
        End If          
        
        If smer = 1 Then
                smerSlovom = "sever"
        End If
        
        If smer = 2 Then 
                smerSlovom = "východ"
        End If 
        
        If smer = 3 Then
                smerSlovom = "juh"
        End If
        
        If smer = 4 Then
                smerSlovom = "západ"
        End If
        
        REM a všetko to vypíšeme
        MsgBox "Začiatočná pozícia" & Chr(10) & Chr(10) & nultaPozicia & Chr(10) & Chr(10) & "Smer: " & smerSlovom & Chr(10) & "Počet krokov: " & pocetKrokov & Chr(10) & Chr(10) & vykreslenePole                    

End Sub   REM koniec procedúry

Výsledok makra Výsledok makra



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

 
Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.

 
 
 
woo jaw demo hz