Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB.NET: Peliruudukko

tnb [02.02.2004 23:24:05]

#

Oheinen ohjelma demoaa, miten tehdään ruutu-paperilta näyttävä peliruudukko esim risti-nolla pelejä varten. Itse peli on liian iso tähän laitettavaksi.

Grafiikka piirretään ensin bitmappiin ja lopuksi sijoitetaan pictureboxiin.

' --------------------------
' RISTINOLLA-PELIN RUUDUKKO
' --------------------------
Private A(24, 24) As Boolean ' ihmisen pelimerkit
Private B(24, 24) As Boolean ' koneen pelimerkit
Private bmpKuva As New Bitmap(376, 376)
Private grKuva As Graphics = Graphics.FromImage(bmpKuva)
Private koneX As Integer ' koneen viimeisin sijoitus X
Private koneY As Integer ' koneen viimeisin sijoitus Y
Private KoneOnYmpyrä As Boolean = True
Private Sub PiirraTilanne()
    Dim X As Integer
    Dim Y As Integer
    'Putsaa
    grKuva.Clear(Color.White)
    'Piirrä pelimerkit
    Dim redPen As New Pen(Color.Red, 3)
    Dim blackPen As New Pen(Color.Black, 3)
    For Y = 0 To 24
        For X = 0 To 24
            If Y = koneY And X = koneX Then ' koneen viimeisin merkki punaisella
                If B(X, Y) Then KoneenMerkki(redPen, X, Y)
            Else
                If B(X, Y) Then KoneenMerkki(blackPen, X, Y)
            End If
            If A(X, Y) Then IhmisenMerkki(blackPen, X, Y)
        Next
    Next
    'Piirrä ruudukko
    For X = 0 To 25
        grKuva.DrawLine(New Pen(Color.LightBlue), X * 15, 0, X * 15, 375)
        grKuva.DrawLine(New Pen(Color.LightBlue), 0, X * 15, 375, X * 15)
    Next
    'Laita Kuva näkyviin laatikkoon
    PictureBox1.Image = CType(bmpKuva, Bitmap)
End Sub

Private Sub KoneenMerkki(ByVal kynä As Pen, ByVal X1 As Integer, ByVal Y1 As Integer)
    If KoneOnYmpyrä Then
        grKuva.DrawEllipse(kynä, X1 * 15 + 3, Y1 * 15 + 12, +9, -9)
    Else
        grKuva.DrawLine(kynä, X1 * 15 + 3, Y1 * 15 + 3, X1 * 15 + 13, Y1 * 15 + 13)
        grKuva.DrawLine(kynä, X1 * 15 + 3, Y1 * 15 + 12, X1 * 15 + 13, Y1 * 15 + 2)
    End If
End Sub

Private Sub IhmisenMerkki(ByVal kynä As Pen, ByVal X1 As Integer, ByVal Y1 As Integer)
    If Not KoneOnYmpyrä Then
        grKuva.DrawEllipse(kynä, X1 * 15 + 3, Y1 * 15 + 12, +9, -9)
    Else
        grKuva.DrawLine(kynä, X1 * 15 + 3, Y1 * 15 + 3, X1 * 15 + 13, Y1 * 15 + 13)
        grKuva.DrawLine(kynä, X1 * 15 + 3, Y1 * 15 + 12, X1 * 15 + 13, Y1 * 15 + 2)
    End If
End Sub


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    PictureBox1.Height = 376
    PictureBox1.Width = 376
    'vähän pelitilannetta
    A(12, 11) = True
    A(12, 10) = True
    B(11, 9) = True
    B(10, 9) = True
    koneX = 10
    koneY = 9
    PiirraTilanne()
End Sub

Vastaus

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

Tietoa sivustosta