Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Ristinolla

zigilii [25.11.2004 15:58:28]

#

Tässä ois ristinolla (10x10).
Todella sekavaa koodia mutta toimii (ainaskin mulla).

Formille pitää laittaa vain seuraavat asiat:
Form1.ScaleMode = 3
Form1.ScaleHeight = 400
Form1.ScaleWidth = 400

ainii, Tässä ei oo tasapeli mahdollisuutta (mutta sen varmaan näkee jos kaikki ruudut on täynnä), eikä tietokone vastustajaa

"Tarkistus" kohdassa mukana foorumilla oli myös hunajavohveli ja sqwiik. Kiitos heille.

'Ristinolla by zigilii

Dim xkohta, ykohta
Dim lukux, lukuo
Dim vuoro As Boolean

Dim merkkio(-1 To 10, -1 To 10)
Dim merkki(-1 To 10, -1 To 10) As String
Dim ohi As Boolean

Private Sub Form_Activate()

alku 'alku tilanne

End Sub

Private Sub Form_Click()

If ohi = True Then Exit Sub 'jos peli on ohi , lopetetaan
For i = 0 To 9
    For a = 0 To 9 'katotaan onko painetussa ruudussa merkkiä
        If merkkio(xkohta, ykohta) = True And merkkio(xkohta, ykohta) = merkkio(a, i) Then Exit Sub
    Next 'jos on lopetetaan
Next

merkkio(xkohta, ykohta) = True 'tallennetaan kohta mihin merkki laitetaan

If vuoro = True Then 'jos on X:n vuoro

    merkki(xkohta, ykohta) = "X" 'laitetaan X
    'piirretään X
    Line (xkohta * 40, ykohta * 40)-(xkohta * 40 + 40, ykohta * 40 + 40)
    Line (xkohta * 40, ykohta * 40 + 40)-(xkohta * 40 + 40, ykohta * 40)
    'O:n vuoro
    vuoro = False

ElseIf vuoro = False Then 'jos O:n vuoro

    merkki(xkohta, ykohta) = "O" 'laitetaan O
    'piirretään O
    Circle (xkohta * 40 + 20, ykohta * 40 + 20), 20
    'X:n vuoro
    vuoro = True
End If
'tarkisetaan onko viiden suoria
tarkistus
End Sub



Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

        xkohta = Int(X / 40) 'missä hiiri liikkuu
        ykohta = Int(Y / 40)

End Sub



Sub loppu()
MsgBox "Peli loppui!" & Chr(13) & "Aloitetaan uusi peli!", , "Ristinolla"
alku

End Sub




Sub alku()

ohi = False 'peli ei ole ohi
vuoro = True 'x:n vuoro

For i = 0 To 9
    For a = 0 To 9 'tyhjätään merkit
        merkki(a, i) = " "
    Next
Next

Cls 'pyyhitään pelilauta

For a = 0 To 10
    For i = 0 To 10 'piirretään ruudukko
        Line (0, a * 40)-(400, a * 40), RGB(0, 0, 255) '(sinisellä)
        Line (i * 40, 0)-(i * 40, 400), RGB(0, 0, 255)
    Next
Next

For i = 0 To 9
    For a = 0 To 9
        merkkio(a, i) = False
    Next
Next

End Sub
'tarkistus by zigilii & hunajavohveli & sqwiik

Sub tarkistus()

'X
'vaaka
lukux = 0

For i = 0 To 9
    For a = 0 To 9
        If merkki(a, i) = "X" Then 'jos löytyy X
            lukux = lukux + 1 'aletaan laskea
        Else
            lukux = 0 'nolla x:ää peräkkäin
        End If

        If lukux = 5 Then 'jos viiden suora
            MsgBox "Pelaaja X voitti!", , "Ristinolla"
            ohi = True: loppu 'x voitti, peli on ohi
            Exit Sub
        End If
    Next
Next

'pysty
lukux = 0

For a = 0 To 9
    For i = 0 To 9
        If merkki(a, i) = "X" Then 'jos löytyy X
            lukux = lukux + 1 'aletaan laskea
        Else
            lukux = 0 'nolla x:ää peräkkäin
        End If

        If lukux = 5 Then 'jos viiden suora
            MsgBox "Pelaaja X voitti!", , "Ristinolla"
            ohi = True: loppu 'x voitti, peli on ohi
            Exit Sub
        End If
    Next
Next

'vino (luode-kaakko)
lukux = 0

For i = 0 To 9
    For a = 0 To 9
        If merkki(a, i) = "X" Then 'jos löytyy X
            lukux = lukux + 1 'aletaan laskea
            i = i + 1 'ja lisätään y:tä
        Else
            lukux = 0 'nolla x:ää peräkkäin
        End If

        If lukux = 5 Then 'jos viiden suora
            MsgBox "Pelaaja X voitti!", , "Ristinolla"
            ohi = True: loppu 'x voitti, peli on ohi
            Exit Sub
        End If
    Next
Next

'vino(koillinen-lounas)
lukux = 0

For i = 9 To 0 Step -1 'mennään y:tä takaperin
    For a = 0 To 9
        If merkki(a, i) = "X" Then 'jos löytyy X
            lukux = lukux + 1 'aletaan laskea
            i = i - 1 'vähennetään y:tä
        Else
            lukux = 0 'nolla x:ää peräkkäin
        End If

        If lukux = 5 Then 'jos viiden suora
            MsgBox "Pelaaja X voitti!", , "Ristinolla"
            ohi = True: loppu 'x voitti, peli on ohi
            Exit Sub
        End If
    Next
Next





'en jaksa kommentoida koska on samat kommentit paitsi X=O

'O
'vaaka
lukuo = 0

For i = 0 To 9
    For a = 0 To 9
        If merkki(a, i) = "O" Then
            lukuo = lukuo + 1
        Else
            lukuo = 0
        End If

        If lukuo = 5 Then
            MsgBox "Pelaaja O voitti!", , "Ristinolla"
            ohi = True: loppu
            Exit Sub
        End If
    Next
Next

'pysty
lukuo = 0

For a = 0 To 9
    For i = 0 To 9
        If merkki(a, i) = "O" Then
            lukuo = lukuo + 1
        Else
            lukuo = 0
        End If

        If lukuo = 5 Then
            MsgBox "Pelaaja O voitti!", , "Ristinolla"
            ohi = True: loppu
            Exit Sub
        End If
    Next
Next

'vino(kaakko-luode)
lukuo = 0

For i = 0 To 9
    For a = 0 To 9
        If merkki(a, i) = "O" Then
            lukuo = lukuo + 1
            i = i + 1
        Else
            lukuo = 0
        End If

        If lukuo = 5 Then
            MsgBox "Pelaaja O voitti!", , "Ristinolla"
            ohi = True: loppu
            Exit Sub
        End If
    Next
Next

'vino(koillinen-luonas)
lukuo = 0

For i = 9 To 0 Step -1
    For a = 0 To 9 Step 1
        If merkki(a, i) = "O" Then
            lukuo = lukuo + 1
            i = i - 1
        Else
            lukuo = 0
        End If

        If lukuo = 5 Then
            MsgBox "Pelaaja O voitti!", , "Ristinolla"
            ohi = True: loppu
            Exit Sub
        End If
    Next
Next
End Sub

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta