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
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
Posledný diel z minicyklu o funkcii Rnd bude v znamení precvičenia látky s pomocou dvoch zaujímavých programov.











