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 Sub
Nä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.