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
Aihe on jo aika vanha, joten et voi enää vastata siihen.