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 Sub
Koodin 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.