Kokeiles tällä. En jaksa kokeilla kaikkia variaatioita, mutta pitäisi toimia.
Erona: Laitoin voittorivin ettimisen omaan funktioon ja voittaja tutkitaan jo klikkauksen jälkeen.
Code: Select all
riveja=2
Dim kentta(riveja,riveja,3)
'kuva
'x
'y
'vapaako
ClsColor 56,30,30
kentta(0,0,1)=50
kentta(1,0,1)=80
kentta(2,0,1)=110
kentta(0,1,1)=50
kentta(1,1,1)=80
kentta(2,1,1)=110
kentta(0,2,1)=50
kentta(1,2,1)=80
kentta(2,2,1)=110
kentta(0,0,2)=50
kentta(1,0,2)=50
kentta(2,0,2)=50
kentta(0,1,2)=80
kentta(1,1,2)=80
kentta(2,1,2)=80
kentta(0,2,2)=110
kentta(1,2,2)=110
kentta(2,2,2)=110
DefaultMask ON,cbmagenta
'tyhja=LoadImage("media\tyhja.png")
'risti=LoadImage("media\risti.png")
'nolla=LoadImage("media\nolla.png")
tyhja=MakeImage(10,10)
risti=MakeImage(10,10)
nolla=MakeImage(10,10)
DrawToImage risti
Text 0,0,"X"
DrawToImage nolla
Text 0,0,"0"
DrawToScreen
For s=0 To riveja
For g=0 To riveja
kentta(s,g,0)=tyhja
Next g
Next s
vuoro=1
hiiri=MakeImage(1,1)
Repeat
For s=0 To 2
For g=0 To 2
If kentta(s,g,3)=1 Then kentta(s,g,0)=risti
If kentta(s,g,3)=2 Then kentta(s,g,0)=nolla
DrawImage kentta(s,g,0),kentta(s,g,1),kentta(s,g,2)
If ImagesOverlap(hiiri,MouseX(),MouseY(),kentta(s,g,0),kentta(s,g,1),kentta(s,g,2)) And MouseHit(1) Then
kentta(s,g,3)=vuoro
voittaja=voittorivi(vuoro)
siirrot+1
If vuoro=1 Then
vuoro=2
Else
vuoro=1
EndIf
ClearMouse
EndIf
Next g
Next s
Text 0,0,siirrot
DrawScreen
If voittaja>0 Or siirrot=9 Then Exit
Forever
Repeat
If voittaja>0
Text 0,0,"Voittaja pelaaja "+voittaja
Else
Text 0,0,"Tasapeli"
EndIf
DrawScreen
Until EscapeKey()
Function voittorivi(vuoro)
voittaja=0
For p=0 To 2
If kentta(0,p,3)=vuoro And kentta(1,p,3)=vuoro And kentta(2,p,3)=vuoro Then voittaja=vuoro 'vaaka
If kentta(p,0,3)=vuoro And kentta(p,1,3)=vuoro And kentta(p,2,3)=vuoro Then voittaja=vuoro 'pysty
Next p
If kentta(0,0,3)=vuoro And kentta(1,1,3)=vuoro And kentta(2,2,3)=vuoro Then voittaja=vuoro 'vino1
If kentta(0,2,3)=vuoro And kentta(1,1,3)=vuoro And kentta(2,0,3)=vuoro Then voittaja=vuoro 'vino2
Return voittaja
End Function
EDT: Niinno.. Toi suoraviivasesti tohon 3-riviseen. Jos teet useampi rivisen, sun on improvisoitava.. =)