|
Post by Azan on Aug 26, 2005 16:42:36 GMT -5
Jiub perhaps you should make a tutorial on dealing with arrays and grids, maybe a guid through on making a simple connect four game? (i would, but at the moment im not incredibly good with arrays (i miss lists )) or no wait, not connect four, but a simple grid demo which shows how you would detect the things needed in connect four. Well just a suggestion (also to help me a bit too
|
|
|
Post by Azan on Aug 26, 2005 22:07:05 GMT -5
well arrays are easy, still think you should post a tutorial on em for other people though :) Heres a simple Tic-Tac-Toe program I just created, it should be error free. (allthough it couldve been layed out better, and commented but it was just to see if I could use arrays :)) Graphics 300,300,0,2 SetBuffer BackBuffer() Global turn$="X" Global newgame=False Global winner$ Global co Global xc,oc Global gc ;gamecounter Global fnt=LoadFont("Ariel",15,1) SetFont fnt Dim a(2,2) ClsColor 155,155,155 Global z,q For y=0 To 2 For x=0 To 2 a(x,y)=0 Next Next
Type mark Field tu$,x,y End Type
While Not KeyHit(1) Cls grid() arra() Flip Wend End
Function mark(x,y) m.mark=New mark m\tu$=turn$ m\x=x m\y=y End Function
Function updatemark() For m.mark=Each mark If m\tu$="X" Then Color 255,0,0 Line m\x-50,m\y-50,m\x+50,m\y+50 Line m\x+50,m\y-50,m\x-50,m\y+50 ElseIf m\tu$="O" Oval m\x-50,m\y-50,100,100 Color 155,155,155 Oval m\x-49,m\y-49,98,98 Color 255,0,0 EndIf Next End Function Function grid() mx=MouseX() my=MouseY() Line 100,0,100,300 Line 200,0,200,300 Line 0,100,300,100 Line 0,200,300,200 Color 255,0,0
For y2=0 To 200 Step 100 For x2=0 To 200 Step 100 If MouseDown(1) And RectsOverlap(mx,my,1,1,x2,y2,100,100) If a(x2/100,y2/100)=0 And newgame=False Then mark(x2+50,y2+50) gc=gc+1 If turn$="X" Then a(x2/100,y2/100)=1 t$="O" ElseIf turn$="O" a(x2/100,y2/100)=2 t$="X" EndIf If t$="X" Then turn$="X" Else turn$="O" EndIf EndIf EndIf Next Next updatemark() ;draw the markings If newgame=True Then Delay 5000 EndIf check() If newgame=True Then co=co+1 Color 155,155,155 Rect 0,0,300,300 Color 255,0,0 Print "Please wait" Text GraphicsWidth()/2,GraphicsHeight()/2+100,"O has won "+oc+ " time(s)",1,1 Text GraphicsWidth()/2,GraphicsHeight()/2+50,"X has won "+xc+ " time(s)",1,1 Text GraphicsWidth()/2,GraphicsHeight()/2,winner$+" wins",1,1 EndIf If co=2 Then newgame=False co=0 EndIf End Function Function arra() Locate 0,0 Print turn$ End Function
Function check() For x=0 To 2 If a(x,0)=1 Then xp1=xp1+1 EndIf If a(x,1)=1 Then xp2=xp2+1 EndIf If a(x,2)=1 Then xp3=xp3+1 EndIf If a(x,0)=2 Then op1=op1+1 EndIf If a(x,1)=2 Then op2=op2+1 EndIf If a(x,2)=2 Then op3=op3+1 EndIf Next For y=0 To 2 If a(0,y)=1 Then xq1=xq1+1 EndIf If a(1,y)=1 Then xq2=xq2+1 EndIf If a(2,y)=1 Then xq3=xq3+1 EndIf If a(0,y)=2 Then oq1=oq1+1 EndIf If a(1,y)=2 Then oq2=oq2+1 EndIf If a(2,y)=2 Then oq3=oq3+1 EndIf Next xd=False If a(0,0)=1 And a(1,1)=1 And a(2,2)=1 xd=True If a(0,2)=1 And a(1,1)=1 And a(0,2)=1 xd=True If xp1=3 Or xp2=3 Or xp3=3 Or xq1=3 Or xq2=3 Or xq3=3 Or xd=True Then For y=0 To 2 ;reset all to 0 For x=0 To 2 a(x,y)=0 Next Next For m.mark=Each mark m\tu$=0 Next newgame=True winner$="X" xc=xc+1 EndIf od=False If a(0,0)=2 And a(1,1)=2 And a(2,2)=2 od=True If a(0,2)=2 And a(1,1)=2 And a(0,2)=2 od=True If op1=3 Or op2=3 Or op3=3 Or oq1=3 Or oq2=3 Or oq3=3 Or od=True Then For y=0 To 2 ;reset all to 0 For x=0 To 2 a(x,y)=0 Next Next For m.mark=Each mark m\tu$=0 Next newgame=True winner$="O" oc=oc+1 EndIf If gc=9 Then ;catgame For y=0 To 2 ;reset all to 0 For x=0 To 2 a(x,y)=0 Next Next For m.mark=Each mark m\tu$=0 Next newgame=True winner$="No one" gc=0 EndIf End Function
|
|
|
Post by Azan on Aug 27, 2005 11:59:39 GMT -5
DONT USE THE ABOVE ONE Heres a fixed version Graphics 300,300,0,2 SetBuffer BackBuffer() Global turn$="X" Global newgame=False Global winner$ Global co Global xc,oc Global gc ;gamecounter Global fnt=LoadFont("Ariel",15,1) SetFont fnt Dim a(2,2) ClsColor 155,155,155 Global z,q For y=0 To 2 For x=0 To 2 a(x,y)=0 Next Next
Type mark Field tu$,x,y End Type
While Not KeyHit(1) Cls grid() arra() Flip Wend End
Function mark(x,y) m.mark=New mark m\tu$=turn$ m\x=x m\y=y End Function
Function updatemark() For m.mark=Each mark If m\tu$="X" Then Color 255,0,0 Line m\x-50,m\y-50,m\x+50,m\y+50 Line m\x+50,m\y-50,m\x-50,m\y+50 ElseIf m\tu$="O" Oval m\x-50,m\y-50,100,100 Color 155,155,155 Oval m\x-49,m\y-49,98,98 Color 255,0,0 EndIf Next End Function Function grid() mx=MouseX() my=MouseY() Line 100,0,100,300 Line 200,0,200,300 Line 0,100,300,100 Line 0,200,300,200 Color 255,0,0
For y2=0 To 200 Step 100 For x2=0 To 200 Step 100 If MouseDown(1) And RectsOverlap(mx,my,1,1,x2,y2,100,100) If a(x2/100,y2/100)=0 And newgame=False Then mark(x2+50,y2+50) gc=gc+1 If turn$="X" Then a(x2/100,y2/100)=1 t$="O" ElseIf turn$="O" a(x2/100,y2/100)=2 t$="X" EndIf If t$="X" Then turn$="X" Else turn$="O" EndIf EndIf EndIf Next Next updatemark() ;draw the markings If newgame=True Then Delay 5000 EndIf check() If newgame=True Then co=co+1 Color 155,155,155 Rect 0,0,300,300 Color 255,0,0 Print "Please wait" Text GraphicsWidth()/2,GraphicsHeight()/2+100,"O has won "+oc+ " time(s)",1,1 Text GraphicsWidth()/2,GraphicsHeight()/2+50,"X has won "+xc+ " time(s)",1,1 Text GraphicsWidth()/2,GraphicsHeight()/2,winner$+" wins",1,1 EndIf If co=2 Then newgame=False co=0 EndIf End Function Function arra() Locate 0,0 Print turn$ End Function
Function check() For x=0 To 2 If a(x,0)=1 Then xp1=xp1+1 EndIf If a(x,1)=1 Then xp2=xp2+1 EndIf If a(x,2)=1 Then xp3=xp3+1 EndIf If a(x,0)=2 Then op1=op1+1 EndIf If a(x,1)=2 Then op2=op2+1 EndIf If a(x,2)=2 Then op3=op3+1 EndIf Next For y=0 To 2 If a(0,y)=1 Then xq1=xq1+1 EndIf If a(1,y)=1 Then xq2=xq2+1 EndIf If a(2,y)=1 Then xq3=xq3+1 EndIf If a(0,y)=2 Then oq1=oq1+1 EndIf If a(1,y)=2 Then oq2=oq2+1 EndIf If a(2,y)=2 Then oq3=oq3+1 EndIf Next xd=False If a(0,0)=1 And a(1,1)=1 And a(2,2)=1 xd=True If a(0,2)=1 And a(1,1)=1 And a(2,0)=1 xd=True If xp1=3 Or xp2=3 Or xp3=3 Or xq1=3 Or xq2=3 Or xq3=3 Or xd=True Then For y=0 To 2 ;reset all to 0 For x=0 To 2 a(x,y)=0 Next Next For m.mark=Each mark m\tu$=0 Next newgame=True winner$="X" gc=0 xc=xc+1 EndIf od=False If a(0,0)=2 And a(1,1)=2 And a(2,2)=2 od=True If a(0,2)=2 And a(1,1)=2 And a(2,0)=2 od=True If op1=3 Or op2=3 Or op3=3 Or oq1=3 Or oq2=3 Or oq3=3 Or od=True Then For y=0 To 2 ;reset all to 0 For x=0 To 2 a(x,y)=0 Next Next For m.mark=Each mark m\tu$=0 Next newgame=True winner$="O" oc=oc+1 gc=0 EndIf If gc=9 Then ;catgame For y=0 To 2 ;reset all to 0 For x=0 To 2 a(x,y)=0 Next Next For m.mark=Each mark m\tu$=0 Next newgame=True winner$="No one" gc=0 EndIf Print gc End Function
|
|
|
Post by Umbrafire on Aug 28, 2005 0:15:51 GMT -5
sorry, I dont yet fully understand arrays...
|
|
|
Post by Azan on Aug 28, 2005 0:19:57 GMT -5
Ive found that they are just like Lists, only called differently (and I know once you understand em you will know em better than me, so ill be waiting for a explanation on finding info in grids
|
|
|
Post by Umbrafire on Aug 28, 2005 0:46:31 GMT -5
lol, okay, i'll check it out
|
|