Option Strict On
Imports System.Console
Module Module1
Sub Main()
' Määritellään String-muuttujat. Toteutin vapaina olevien lokeroiden listan stringeillä, joten
' niitä kertyi varsin muhkea määrä:
Dim StrYkkoset, StrKakkoset, StrKolmoset, StrNeloset, StrVitoset, StrKutoset As String
Dim StrPari, StrKaksiparia, StrKolmesamaa, StrNeljasamaa, StrPienisuora, StrSuurisuora As String
Dim StrMokki, StrSattuma, StrYatzy, StrNumeerisuustesti As String
' Seuraavaksi määritellään Integer-muuttujat. Eri lokeroiden pisteiden laskut on tehty eri integereille,
' joten näistäkään muuttujista ei pääse ainakaan pulaa tulemaan. Myös for-laskurit ja taulukot ovat integerejä:
Dim IntYkkoset_pisteet, IntKakkoset_pisteet, IntKolmoset_pisteet, IntNeloset_pisteet, IntVitoset_pisteet As Integer
Dim IntKutoset_pisteet, IntPari_pisteet, IntKaksiparia_pisteet, IntKolmesamaa_pisteet, IntNeljasamaa_pisteet As Integer
Dim IntPienisuora_pisteet, IntSuurisuora_pisteet, IntMokki_pisteet, IntSattuma_pisteet, IntYatzy_pisteet As Integer
Dim laskuri, IntValitselokero, IntSattuma, IntYatzymaara, IntLokerotYhteensa, IntBonuspisteet As Integer
Dim heitto(4), maarat(5), i, a, z As Integer
' Testasin ovatko lokerot jo valittu Boolean-muuttujilla, joten jokaiselle viidelletoista lokerolle
' on omansa:
Dim ykkoset_test, kakkoset_test, kolmoset_test, neloset_test, vitoset_test, kutoset_test As Boolean
Dim pari_test, kaksiparia_test, kolmesamaa_test, neljasamaa_test, pienisuora_test, suurisuora_test As Boolean
Dim mokki_test, sattuma_test, yatzy_test As Boolean
ykkoset_test = True
kakkoset_test = True
kolmoset_test = True
neloset_test = True
vitoset_test = True
kutoset_test = True
pari_test = True
kaksiparia_test = True
kolmesamaa_test = True
neljasamaa_test = True
pienisuora_test = True
suurisuora_test = True
mokki_test = True
sattuma_test = True
yatzy_test = True
For i = 1 To 15
For z = 0 To 4
Randomize()
heitto(z) = CInt(Int(6 * Rnd()) + 1)
Next
WriteLine()
WriteLine("Kierros " & i & ".")
WriteLine("Heitit seuraavat silmäluvut:")
WriteLine()
WriteLine(heitto(0) & ", " & heitto(1) & ", " & heitto(2) & ", " & heitto(3) & " ja " & heitto(4))
WriteLine()
If ykkoset_test = True Then
StrYkkoset = (" 1: Ykköset")
Else : StrYkkoset = ("")
End If
If kakkoset_test = True Then
StrKakkoset = (" 2: Kakkoset")
Else : StrKakkoset = ("")
End If
If kolmoset_test = True Then
StrKolmoset = (" 3: Kolmoset")
Else : StrKolmoset = ("")
End If
If neloset_test = True Then
StrNeloset = (" 4: Neloset")
Else : StrNeloset = ("")
End If
If vitoset_test = True Then
StrVitoset = (" 5: Vitoset")
Else : StrVitoset = ("")
End If
If kutoset_test = True Then
StrKutoset = (" 6: Kutoset")
Else : StrKutoset = ("")
End If
If pari_test = True Then
StrPari = (" 7: Pari")
Else : StrPari = ("")
End If
If kaksiparia_test = True Then
StrKaksiparia = (" 8: Kaksi paria")
Else : StrKaksiparia = ("")
End If
If kolmesamaa_test = True Then
StrKolmesamaa = (" 9: Kolme Samaa")
Else : StrKolmesamaa = ("")
End If
If neljasamaa_test = True Then
StrNeljasamaa = (" 10: Neljä samaa")
Else : StrNeljasamaa = ("")
End If
If pienisuora_test = True Then
StrPienisuora = (" 11: Pieni suora")
Else : StrPienisuora = ("")
End If
If suurisuora_test = True Then
StrSuurisuora = (" 12: Suuri suora")
Else : StrSuurisuora = ("")
End If
If mokki_test = True Then
StrMokki = (" 13: Mökki")
Else : StrMokki = ("")
End If
If sattuma_test = True Then
StrSattuma = (" 14: Sattuma")
Else : StrSattuma = ("")
End If
If yatzy_test = True Then
StrYatzy = (" 15: Yatzy")
Else : StrYatzy = ("")
End If
Do
WriteLine("Valitse vapaa paikka.")
WriteLine("Vapaita paikkoja ovat:")
WriteLine()
WriteLine(StrYkkoset & "" & StrKakkoset & "" & StrKolmoset & "" & StrNeloset & "" & StrVitoset)
WriteLine(StrKutoset & "" & StrPari & "" & StrKaksiparia & "" & StrKolmesamaa & "" & StrNeljasamaa)
WriteLine(StrPienisuora & "" & StrSuurisuora & "" & StrMokki & "" & StrSattuma & "" & StrYatzy)
WriteLine()
Write("Valitse lokero syöttämällä sitä vastaava numero: ")
StrNumeerisuustesti = ReadLine()
If IsNumeric(StrNumeerisuustesti) = True Then
IntValitselokero = CInt(StrNumeerisuustesti)
WriteLine()
End If
If IntValitselokero < 1 Or IntValitselokero > 15 Then
WriteLine()
WriteLine("Lokero on valittava numeroilla 1-15. Yritä uudestaan.")
WriteLine()
End If
' Yllä testataan käyttäjän syötteen numeerisuus
Select Case IntValitselokero
' Katsotaan minkä lokeron käyttäjä on valinnut, ja tarkistetaan kunkin lokeron kohdalla onko käyttäjä
' oikeasti heittänyt lokeroon sopivat silmäluvut:
Case Is = 1
ykkoset_test = False
For a = 0 To 4
If heitto(a) = 1 Then
laskuri = laskuri + 1
End If
Next
If laskuri >= 1 Then
Write("Heitit ykkösiä. Laske saamasi pisteet: ")
Do
StrNumeerisuustesti = ReadLine()
If IsNumeric(StrNumeerisuustesti) = True Then
IntYkkoset_pisteet = CInt(StrNumeerisuustesti)
WriteLine()
Else
WriteLine("Anna pisteet numeerisessa muodossa. Yritä uudestaan:")
End If
Loop Until IsNumeric(StrNumeerisuustesti) = True
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntYkkoset_pisteet = 0
WriteLine()
End If
laskuri = 0
' __________________________________________________
' Ykköset-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 2
kakkoset_test = False
For a = 0 To 4
If heitto(a) = 2 Then
laskuri = laskuri + 1
End If
Next
If laskuri >= 1 Then
Write("Heitit kakkosia. Laske saamasi pisteet: ")
Do
StrNumeerisuustesti = ReadLine()
If IsNumeric(StrNumeerisuustesti) = True Then
IntKakkoset_pisteet = CInt(StrNumeerisuustesti)
WriteLine()
Else
WriteLine("Anna pisteet numeerisessa muodossa. Yritä uudestaan:")
End If
Loop Until IsNumeric(StrNumeerisuustesti) = True
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntKakkoset_pisteet = 0
WriteLine()
End If
laskuri = 0
'___________________________________________________
' Kakkoset-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 3
kolmoset_test = False
For a = 0 To 4
If heitto(a) = 3 Then
laskuri = laskuri + 1
End If
Next
If laskuri >= 1 Then
Write("Heitit kolmosia. Laske saamasi pisteet: ")
Do
StrNumeerisuustesti = ReadLine()
If IsNumeric(StrNumeerisuustesti) = True Then
IntKolmoset_pisteet = CInt(StrNumeerisuustesti)
WriteLine()
Else
WriteLine("Anna pisteet numeerisessa muodossa. Yritä uudestaan:")
End If
Loop Until IsNumeric(StrNumeerisuustesti) = True
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntKolmoset_pisteet = 0
WriteLine()
End If
laskuri = 0
'____________________________________________________
' Kolmoset-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 4
neloset_test = False
For a = 0 To 4
If heitto(a) = 4 Then
laskuri = laskuri + 1
End If
Next
If laskuri >= 1 Then
Write("Heitit nelosia. Laske saamasi pisteet: ")
Do
StrNumeerisuustesti = ReadLine()
If IsNumeric(StrNumeerisuustesti) = True Then
IntNeloset_pisteet = CInt(StrNumeerisuustesti)
WriteLine()
Else
WriteLine("Anna pisteet numeerisessa muodossa. Yritä uudestaan:")
End If
Loop Until IsNumeric(StrNumeerisuustesti) = True
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntNeloset_pisteet = 0
WriteLine()
End If
laskuri = 0
'____________________________________________________
' Neloset-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 5
vitoset_test = False
For a = 0 To 4
If heitto(a) = 5 Then
laskuri = laskuri + 1
End If
Next
If laskuri >= 1 Then
Write("Heitit vitosia. Laske saamasi pisteet: ")
Do
StrNumeerisuustesti = ReadLine()
If IsNumeric(StrNumeerisuustesti) = True Then
IntVitoset_pisteet = CInt(StrNumeerisuustesti)
WriteLine()
Else
WriteLine("Anna pisteet numeerisessa muodossa. Yritä uudestaan:")
End If
Loop Until IsNumeric(StrNumeerisuustesti) = True
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntVitoset_pisteet = 0
WriteLine()
End If
laskuri = 0
'____________________________________________________
' Vitoset-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 6
kutoset_test = False
For a = 0 To 4
If heitto(a) = 6 Then
laskuri = laskuri + 1
End If
Next
If laskuri >= 1 Then
Write("Heitit kutosia. Laske saamasi pisteet: ")
Do
StrNumeerisuustesti = ReadLine()
If IsNumeric(StrNumeerisuustesti) = True Then
IntKutoset_pisteet = CInt(StrNumeerisuustesti)
WriteLine()
Else
WriteLine("Anna pisteet numeerisessa muodossa. Yritä uudestaan:")
End If
Loop Until IsNumeric(StrNumeerisuustesti) = True
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntKutoset_pisteet = 0
WriteLine()
End If
laskuri = 0
'____________________________________________________
' Kutoset-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 7
pari_test = False
For a = 0 To 5
For z = 0 To 4
If heitto(z) = a Then
maarat(a) = maarat(a) + 1
End If
Next
Next
For a = 0 To 5
If maarat(a) >= 2 Then
laskuri = laskuri + 1
End If
Next
If laskuri >= 1 Then
Write("Heitit parin. Laske saamasi pisteet: ")
Do
StrNumeerisuustesti = ReadLine()
If IsNumeric(StrNumeerisuustesti) = True Then
IntPari_pisteet = CInt(StrNumeerisuustesti)
WriteLine()
Else
WriteLine("Anna pisteet numeerisessa muodossa. Yritä uudestaan:")
End If
Loop Until IsNumeric(StrNumeerisuustesti) = True
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntPari_pisteet = 0
WriteLine()
End If
laskuri = 0
maarat(0) = 0
maarat(1) = 0
maarat(2) = 0
maarat(3) = 0
maarat(4) = 0
maarat(5) = 0
'____________________________________________________
' Pari-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 8
kaksiparia_test = False
For a = 0 To 5
For z = 0 To 4
If heitto(z) = a Then
maarat(a) = maarat(a) + 1
End If
Next
Next
For a = 0 To 5
If maarat(a) >= 2 Then
laskuri = laskuri + 1
End If
Next
If laskuri >= 2 Then
Write("Heitit kaksi paria. Laske saamasi pisteet: ")
Do
StrNumeerisuustesti = ReadLine()
If IsNumeric(StrNumeerisuustesti) = True Then
IntKaksiparia_pisteet = CInt(StrNumeerisuustesti)
WriteLine()
Else
WriteLine("Anna pisteet numeerisessa muodossa. Yritä uudestaan:")
End If
Loop Until IsNumeric(StrNumeerisuustesti) = True
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntKaksiparia_pisteet = 0
WriteLine()
End If
laskuri = 0
maarat(0) = 0
maarat(1) = 0
maarat(2) = 0
maarat(3) = 0
maarat(4) = 0
maarat(5) = 0
'____________________________________________________
' Kaksi paria-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 9
kolmesamaa_test = False
For a = 0 To 5
For z = 0 To 4
If heitto(z) = a Then
maarat(a) = maarat(a) + 1
End If
Next
Next
For a = 0 To 5
If maarat(a) >= 3 Then
laskuri = laskuri + 1
End If
Next
If laskuri >= 1 Then
Write("Heitit kolme samaa. Laske saamasi pisteet: ")
Do
StrNumeerisuustesti = ReadLine()
If IsNumeric(StrNumeerisuustesti) = True Then
IntKolmesamaa_pisteet = CInt(StrNumeerisuustesti)
WriteLine()
Else
WriteLine("Anna pisteet numeerisessa muodossa. Yritä uudestaan:")
End If
Loop Until IsNumeric(StrNumeerisuustesti) = True
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntKolmesamaa_pisteet = 0
WriteLine()
End If
laskuri = 0
maarat(0) = 0
maarat(1) = 0
maarat(2) = 0
maarat(3) = 0
maarat(4) = 0
maarat(5) = 0
'____________________________________________________
' Kolme samaa-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 10
neljasamaa_test = False
For a = 0 To 5
For z = 0 To 4
If heitto(z) = a Then
maarat(a) = maarat(a) + 1
End If
Next
Next
For a = 0 To 5
If maarat(a) >= 4 Then
laskuri = laskuri + 1
End If
Next
If laskuri >= 1 Then
Write("Heitit neljä samaa. Laske saamasi pisteet: ")
Do
StrNumeerisuustesti = ReadLine()
If IsNumeric(StrNumeerisuustesti) = True Then
IntNeljasamaa_pisteet = CInt(StrNumeerisuustesti)
WriteLine()
Else
WriteLine("Anna pisteet numeerisessa muodossa. Yritä uudestaan:")
End If
Loop Until IsNumeric(StrNumeerisuustesti) = True
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntNeljasamaa_pisteet = 0
WriteLine()
End If
laskuri = 0
maarat(0) = 0
maarat(1) = 0
maarat(2) = 0
maarat(3) = 0
maarat(4) = 0
maarat(5) = 0
'____________________________________________________
' Neljä samaa-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 11
if PIENISUORA LÖYTYY THEN
Write("Heitit pienen suoran. Pienestä suorasta saa automaattisesti 15 pistettä.")
IntPienisuora_pisteet = 15
WriteLine()
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntPienisuora_pisteet = 0
WriteLine()
End If
laskuri = 0
'____________________________________________________
' Pieni suora-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 12
If SUURISUORA LÖYTYY THEN
Write("Heitit suuren suoran. Suuresta suorasta saa automaattisesti 20 pistettä.")
IntSuurisuora_pisteet = 20
WriteLine()
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntSuurisuora_pisteet = 0
WriteLine()
End If
laskuri = 0
'____________________________________________________
' Suuri suora-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 13
mokki_test = False
For a = 0 To 5
For z = 0 To 4
If heitto(z) = a Then
maarat(a) = maarat(a) + 1
End If
Next
Next
For a = 0 To 5
If maarat(a) = 2 Then
laskuri = laskuri + 1
End If
If maarat(a) = 3 Then
laskuri = laskuri + 1
End If
Next
If laskuri = 2 Then
Write("Heitit mökin. Laske saamasi pisteet: ")
Do
StrNumeerisuustesti = ReadLine()
If IsNumeric(StrNumeerisuustesti) = True Then
IntMokki_pisteet = CInt(StrNumeerisuustesti)
WriteLine()
Else
WriteLine("Anna pisteet numeerisessa muodossa. Yritä uudestaan:")
End If
Loop Until IsNumeric(StrNumeerisuustesti) = True
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntMokki_pisteet = 0
WriteLine()
End If
laskuri = 0
maarat(0) = 0
maarat(1) = 0
maarat(2) = 0
maarat(3) = 0
maarat(4) = 0
maarat(5) = 0
'____________________________________________________
' Mökki-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 14
sattuma_test = False
WriteLine("Sattuma arpoo lokeron pisteiksi yhden heittämistäsi silmäluvuista.")
Randomize()
IntSattuma = CInt(Int(5 * Rnd()))
WriteLine("Sattuma arpoi lokeron pisteiksi silmäluvun " & heitto(IntSattuma))
IntSattuma_pisteet = heitto(IntSattuma)
WriteLine()
'____________________________________________________
' Sattuma-lokero on tarkistettu ja pisteytetty yllä.
Case Is = 15
yatzy_test = False
For a = 0 To 5
For z = 0 To 4
If heitto(z) = a Then
maarat(a) = maarat(a) + 1
End If
Next
Next
For a = 0 To 5
If maarat(a) = 5 Then
laskuri = laskuri + 1
End If
Next
If laskuri = 5 Then
IntYatzymaara = IntYatzymaara + 1
Write("HEITIT YATZYN! Laske saamasi pisteet: ")
Do
StrNumeerisuustesti = ReadLine()
If IsNumeric(StrNumeerisuustesti) = True Then
IntYatzy_pisteet = CInt(StrNumeerisuustesti)
WriteLine()
Else
WriteLine("Anna pisteet numeerisessa muodossa. Yritä uudestaan:")
End If
Loop Until IsNumeric(StrNumeerisuustesti) = True
Else
WriteLine("Et heittänyt lokeroon sopivia silmälukuja. Sait lokeroon 0 pistettä.")
IntYatzy_pisteet = 0
WriteLine()
End If
laskuri = 0
maarat(0) = 0
maarat(1) = 0
maarat(2) = 0
maarat(3) = 0
maarat(4) = 0
maarat(5) = 0
'____________________________________________________
' Yatzy-lokero on tarkistettu ja pisteytetty yllä.
End Select
WriteLine("Keräämäsi pisteet lokeroittain tähän mennessä:")
WriteLine("Ykköset: " & IntYkkoset_pisteet & " Kakkoset: " & IntKakkoset_pisteet & " Kolmoset: " & IntKolmoset_pisteet & " Neloset: " & IntNeloset_pisteet & " Vitoset: " & IntVitoset_pisteet)
WriteLine("Kutoset: " & IntKutoset_pisteet & " Pari: " & IntPari_pisteet & " Kaksi paria: " & IntKaksiparia_pisteet & " Kolme samaa: " & IntKolmesamaa_pisteet & " Neljä samaa: " & IntNeljasamaa_pisteet)
WriteLine("Pieni suora: " & IntPienisuora_pisteet & " Suuri suora: " & IntSuurisuora_pisteet & " Mökki: " & IntMokki_pisteet & " Sattuma: " & IntSattuma_pisteet & " Yatzy: " & IntYatzy_pisteet)
WriteLine()
WriteLine("Paina jotain näppäintä jatkaaksesi")
ReadLine()
Clear()
Loop Until IntValitselokero >= 1 And IntValitselokero <= 15
Next
' Pisteiden, bonuspisteiden ja lopullisen kokonaispistemäärän laskeminen suoritetaan alla:
' Ensin tarkastetaan, saiko pelaaja ensimmäisestä kuudesta lokerosta yli 63 pistettä. Jos sai,
' hän saa 50 pisteen bonuksen:
If (IntYkkoset_pisteet + IntKakkoset_pisteet + IntKolmoset_pisteet + IntNeloset_pisteet + IntVitoset_pisteet + IntKutoset_pisteet) > 63 Then
IntBonuspisteet = IntBonuspisteet + 50
WriteLine("Keräsit ensimmäisestä kuudesta lokerosta yli 63 pistettä, joten sinulle annetaan 50 bonuspistettä!")
End If
' Sen jälkeen tarkastetaan montako Yatzyä pelaaja heitti. Jokaisesta Yatzystä saa 50 pisteen bonuksen:
If IntYatzymaara > 1 Then
WriteLine("Heitit " & IntYatzymaara & " yatzya, joten sinulle annetaan jokaisesta niistä " & IntYatzymaara * 50 & " bonuspistettä!")
IntBonuspisteet = IntBonuspisteet + IntYatzymaara * 50
End If
IntLokerotYhteensa = IntYkkoset_pisteet + IntKakkoset_pisteet + IntKolmoset_pisteet + IntNeloset_pisteet + IntVitoset_pisteet + IntKutoset_pisteet + IntPari_pisteet + IntKaksiparia_pisteet + IntKolmesamaa_pisteet + IntNeljasamaa_pisteet + IntPienisuora_pisteet + IntSuurisuora_pisteet + IntMokki_pisteet + IntSattuma_pisteet + IntYatzy_pisteet
WriteLine("Lokeroidesi yhteispistemäärä: " & IntLokerotYhteensa)
WriteLine("Keräämäsi bonuspisteet: " & IntBonuspisteet)
WriteLine("Yhteispistemääräsi: " & IntLokerotYhteensa + IntBonuspisteet)
ReadLine()
End Sub
End Module