Oheinen ohjelma demoaa ruutu-paperilta näyttävän peliruudukon tekoa. Itse peliohjelma ei ole mukana.
Grafiikka piirretään ensin bitmappiin ja sijoitetan lopuksi 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 SubNätti on.
Oisko pelin koodia?
Tee itse? ei ole vaikeaa koodata ristinollaa :P
Tekoäly on taas toinen asia...
No arpoo vain minne se pistää sen :).
tälläsiä lisää :)
Ei se (hyvänkään) tekoälyn tekeminen oikeasti kovin vaikeaa ole, käy vain läpi koko taulukon, joka sisältää tiedot siitä mihin pelaaja tai tietokone on laittanut. Sitten vain samaan tyyliin kuin shakki-pelissä, eli eri paikkoihin pistämällä annetaan eri määrä pisteitä sille tietylle laitolle.
Eli "simuloidaan" peliä eteenpäin :)
Niin, eihän se vaikeaa ole, mutta kun niitä iffejä tulee satoja, niin sitten menee jo itsekin sekaisin mitä taktiikoita on tehty ja mitä ei, ja täten myös bugeja alkaa löytyä vino pino :)
http://mbnet.fi/winuus/ristinolla.php
Tossakin on muutama kymmentä if-lausetta... :D
Jos tehtäisiin ristinolla jossa voittaa viidellä suoralla, niin eri taktiikoiden laskemiseen menee jo vähän enemmän iffejä sun muita lauseita
Valmiin vb.net "Reversi" pelin voi ladata tästä sourcena, myös exe löytyy paketista. Travitsee tietysti .net Frameworking.
öö...oonkos mää nyt ihan tavi kun en tuotakaan saanut toimimaan?
Tässä jätkänshakki, sisältää vb.net sorsat. Tarvitset tietysti .net Framework'n.
Aihe on jo aika vanha, joten et voi enää vastata siihen.