Hirsipuu siten miten mä olen sen oppinut. Puuhomma ja muutkin on tehty printillä :D (sen takia kun tein tän vähä aika sitte psionilleni ja porttasin sen suoraan tähän :P), mutta siinä on se hyöty ettei formille tartte mitään controlleja. Hyvä pohja, helppo muokata esim. tota hirsipuun piirtohommelia.
Ainiin ja exe: http://sooda.dy.fi/foo/hirsipuu.exe
Private Sanat(), Arvattava, Arvattu, Väärät, Arvatut, Pelatut, Voitetut
Private Sub Form_Load()
Sanat = Array("sana", "toinensana", "kolmassana") 'vaihda tähän ne sanat mitä voi arvata. Helppoa kuin koodaus.
FontName = "fixedsys" 'print toimii tasalevyisillä fonteilla tässä tapauksessa parhaiten
FontSize = 10 'näkyvä koko
ScaleMode = 3 'pixelit
AutoRedraw = True 'ettei pyyhkiydy turhaan
Randomize 'alustetaan vb:n integroitu lineaarinen satunnaislukugeneraattori
Show
uus 'arvo uusi
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
'kirjainta painettu?
If (KeyAscii >= Asc("Arvattava") And KeyAscii <= Asc("z")) Or KeyAscii = Asc("ö") Or KeyAscii = Asc("ä") Then
t = InStr(Arvattu, Chr(KeyAscii)) 'missä kohtaa se. Arvattu on arvattava sana jossa on arvatuiden merkkien kohdalla väli.
If t Then 'jos löytyy niin irrotetaan
While t 'etitään kaikki
at 2 * t, 1: Print Mid(Arvattu, t, 1) 'kerrotaan se käyttäjälle
Mid(Arvattu, t, 1) = " " 'pyyhitään pois, ei tartte arvata enää
t = InStr(Arvattu, Chr(KeyAscii)) 'ja uusi kohta
Wend
Arvatut = Arvatut & Chr(KeyAscii) 'lisätään arvattu merkki arvatuihin.
at 1, 16: Print "Arvatut: " & Arvatut 'kerrotaan ne käyttäjälle
If Trim(Arvattu) = "" Then 'jos arvattu kaikki jo eli Arvattu-variaapeli on pelkkiä välilyöntejä
MsgBox "Arvasit sanan " & Arvattava
Pelatut = Pelatut + 1
Voitetut = Voitetut + 1
uus 'arvotaan uusi
End If
Else 'arvattiin merkki jota ei ole sanassa
If InStr(Arvatut, Chr(KeyAscii)) = 0 Then 'jos sitä ei ole vielä arvattu
Arvatut = Arvatut & Chr(KeyAscii) 'lisätään arvattu merkki arvatuihin.
at 1, 16: Print "Arvatut: " & Arvatut 'kerrotaan ne käyttäjälle
Väärät = Väärät + 1
vrong 'printataan hirsipuusta osa.
End If
End If
End If
End Sub
Sub uus()
Cls 'vanhat roskat vek
Arvattava = Sanat(Int((UBound(Sanat) + 1) * Rnd))
Arvattu = Arvattava
For i = 1 To Len(Arvattu)
Print " _"; 'printataan _-merkit jotta näkisi millainen sana on. Välejä välissä selkeyden vuoksi
Next
'resetataan pari variaapelia
Väärät = 0
Arvatut = ""
'kerrotaan voittoprosentti ja pelatut pelit
If Pelatut Then at 1, 17: Print "Voitettu " & Voitetut & "/" & Pelatut & " (" & Voitetut / Pelatut * 100 & "%)"
End Sub
Sub vrong() 'väärin arvattu!
'MAHTAVAA merkkigraffaa :)
'tätä voit tietty muuttaa jos haluat peliä helpommaksi/vaikeammaksi.
'muista tunkea viimeiseen häviöhommeli.
Select Case Väärät
Case 1 'maata
at 1, 10
Print " _____ "
Print " / \ "
Print "/ \"
Print "| |"
Case 2 'pystylankku
at 1, 5
Print " |"
Print " |"
Print " |"
Print " |"
Print " |"
Print " |"
Case 3 'tukihommat lankulle
at 4, 10: Print "/"
at 6, 10: Print "\"
Case 4 'vaakalankku...
at 5, 4: Print "--------"
Case 5 'tuki vaakalankkua varten
at 6, 5: Print "/"
Case 6 'naru
at 12, 5: Print "|"
at 12, 6: Print "|"
Case 7 'ukkelin piirto alkaa...
at 11, 7: Print "\o/"
Case 8
at 12, 8: Print "|"
at 12, 9: Print "|"
Case 9
at 12, 10: Print "|"
at 11, 11: Print "/ \"
'häviöhommeli. ei enempää piirrettävää. 9 kertaa saa vastata väärin.
MsgBox "Voi EI!! Hirttäydyit sanalla " & Arvattava & "! Hävisit!"
Pelatut = Pelatut + 1
uus
End Select
End Sub
Sub at(x, y) 'psionin komento jolla siirretään tekstikursori.
CurrentX = TextWidth(" ") * (x - 1)
CurrentY = TextHeight(" ") * (y - 1)
End SubKoodin puolesta näyttää lupaavalta. Harmi vain, ettei VB5:ssa pelaa kaikki ominaisuudet.
Hyvää, selkeää ja yksinkertaista koodia
Voffeli: esim toi array() homma on helppo korvata esim näin:
Private Sanat(3)
Sanat(1)="Moi"
Sanat(2)="Hei"
Sanat(3)="Töh"
Muut kai toimii vb5:ssä.
Joo, hoksasin tuon vähän ajan päästä itsekin. Hienosti toimii.
soot mun idoli <3
Aihe on jo aika vanha, joten et voi enää vastata siihen.