Seite 10 von 22

Verfasst: 31.01.2006 19:06
von nco2k
@MVXA
echt? bei mir nicht, komisch. :?

c ya,
nco2k

Verfasst: 31.01.2006 19:08
von MVXA
O=EventwParam()
If T(O)=0

da stimmt irgendwas nicht. Der Fehler tritt genau dann auf, wenn ich das
Programm starte..

Verfasst: 31.01.2006 19:11
von NicTheQuick
598!

Code: Alles auswählen

Procedure S(k,s.s) 
  SetGadgetText(k,s) 
EndProcedure 
Dim T(9) 
s.s=" turn" 
t=79 
c=190 
CreateGadgetList(OpenWindow(0,0,0,c,210,13107201,"XXO")) 
For a=0 To8 
  ButtonGadget(a,70*a%3,70*(a/3),50,50,z.s) 
  SetGadgetFont(a,LoadFont(a,z,24)) 
Next 
TextGadget(9,0,c,c,20,"O"+s,1) 
c/2 
SetGadgetFont(9,LoadFont(9,z,12)) 
l: 
  w=WindowEvent() 
  If w>999 
    O=EventwParam() 
    If T(O)=0 
      T(O)=P+1 
      h.s=Chr(t+P*9) 
      S(O,h) 
      S(9,Chr(t+P!1*9)+s) 
      For i=DisableGadget(O,1) To2 
        x=i*3 
        If (T(x)&T(x+1)&T(x+2))|(T(i)&T(i+3)&T(i+6))|(T(0)&T(4)&T(8))|(T(2)&T(4)&T(6)) 
          For a=0 To9 
            T(a)=0 
            S(a,z) 
            DisableGadget(a,0) 
          Next 
          S(9,h+" wins") 
          P=0 
        EndIf 
      Next 
      P!1 
    EndIf 
  ElseIf w=16 
    End 
  EndIf 
Goto l

Verfasst: 31.01.2006 19:16
von nco2k
@MVXA
versuch mal:

Code: Alles auswählen

O=EventwParam()
If O And T(O)=0
@NTQ
sauber. :allright:

bei OpenWindow(0,0,0,c,210,13107201,"XXO")) kann man bestimmt noch was einsparen (13107201) und ggf. die position/grösse der buttons und des textgadgets ändern, damit man statt 210 auch die variable c benützen kann.

c ya,
nco2k

Verfasst: 31.01.2006 19:22
von NicTheQuick
585!

Code: Alles auswählen

Procedure S(k,s.s) 
  SetGadgetText(k,s) 
EndProcedure 
Dim T(9) 
s.s=" turn" 
t=79 
c=190 
CreateGadgetList(OpenWindow(0,0,0,c,210,13107201,"XXO")) 
For a=0 To8 
  ButtonGadget(a,70*a%3,70*(a/3),50,50,z.s) 
  SetGadgetFont(a,LoadFont(a,z,24)) 
Next 
TextGadget(9,0,c,c,20,"O"+s,1) 
c/2 
SetGadgetFont(9,LoadFont(9,z,12)) 
l: 
  w=WindowEvent() 
  If w>999 
    O=EventwParam() 
    If T(O)=0 
      T(O)=P+1 
      h.s=Chr(t+P*9) 
      S(O,h) 
      S(9,Chr(t+P!1*9)+s) 
      For i=DisableGadget(O,1) To2 
        x=i*3 
        If (T(x)&T(x+1)&T(x+2))|(T(i)&T(i+3)&T(i+6))|(T(0+i)&T(4)&T(8-i))
          For a=0 To9 
            T(a)=0 
            S(a,z) 
            DisableGadget(a,0) 
          Next 
          S(9,h+" wins") 
          P=0 
        EndIf 
      Next 
      P!1 
    EndIf 
  ElseIf w=16 
    End 
  EndIf 
Goto l

Verfasst: 31.01.2006 21:03
von Stefan
575

Code: Alles auswählen

Procedure S(k,s.s) 
  SetGadgetText(k,s) 
EndProcedure 
Dim T(9) 
s.s=" turn" 
t=79 
c=190 
CreateGadgetList(OpenWindow(0,0,0,c,210,$C80001,"XXO")) 
For a=0 To8 
  ButtonGadget(a,70*a%3,a/3*70,50,50,z.s) 
  SetGadgetFont(a,LoadFont(a,z,24)) 
Next 
TextGadget(9,0,c,c,20,"O"+s,1) 
SetGadgetFont(9,LoadFont(9,z,12)) 
l: 
  w=WindowEvent() 
  If w>999 
    O=EventwParam() 
    If T(O)=0 
      T(O)=P+1 
      h.s=Chr(t+P*9) 
      S(O,h) 
      S(9,Chr(t+P!1*9)+s) 
      For i=DisableGadget(O,1) To2 
        x=i*3 
        If (T(x)&T(x+1)&T(x+2))|(T(i)&T(i+3)&T(i+6))|(T(i)&T(4)&T(8-i)) 
          For a=0 To9 
            T(a)=S(a,z)  
            DisableGadget(a,0) 
          Next
          P=S(9,h+" wins")  
        EndIf 
      Next 
      P!1 
    EndIf 
  ElseIf w=16 
    End 
  EndIf 
Goto l

Verfasst: 31.01.2006 21:21
von MLK
574 - da ging noch einer :-)

Code: Alles auswählen

Procedure S(k,s.s) 
  SetGadgetText(k,s) 
EndProcedure 
Dim T(9) 
s.s=" turn" 
t=79 
c=190 
CreateGadgetList(OpenWindow(0,0,0,c,210,$C80001,"XXO")) 
TextGadget(9,0,c,c,20,"O"+s,1) 
For a=SetGadgetFont(9,LoadFont(9,z.s,12)) To8 
  ButtonGadget(a,70*a%3,a/3*70,50,50,z) 
  SetGadgetFont(a,LoadFont(a,z,24)) 
Next 
l: 
  w=WindowEvent() 
  If w>999 
    O=EventwParam() 
    If T(O)=0
      T(O)=P+1 
      h.s=Chr(t+P*9) 
      S(O,h) 
      S(9,Chr(t+P!1*9)+s) 
      For i=DisableGadget(O,1) To2 
        x=i*3 
        If (T(x)&T(x+1)&T(x+2))|(T(i)&T(i+3)&T(i+6))|(T(i)&T(4)&T(8-i)) 
          For a=0 To9 
            T(a)=S(a,z)  
            DisableGadget(a,0) 
          Next 
          P=S(9,h+" wins")  
        EndIf 
      Next 
      P!1 
    EndIf 
  ElseIf w=16 
    End 
  EndIf 
Goto l

Verfasst: 31.01.2006 21:33
von MVXA
Immer noch [c]Array index out of bounds.[/c]

Verfasst: 31.01.2006 21:36
von NicTheQuick
Mist!

Ich bin jetzt bei meiner Freundin und hier will WinXP immer direkt einen
Problembericht senden, wenn ich die Codes kompiliere und starte.

Tja, da kann ich wohl spätestens morgen wieder mitmachen. :cry:

///Edit:
@MVXA: Ja, daran liegt es. Unter Win2k ging es noch wunderbar.

Verfasst: 31.01.2006 21:36
von nco2k
@MLK
ja gut, dafür ist die schrift am anfang nicht in der gewünschten grösse und wird jedesmal neu gesetzt/geladen, pro schleifendurchgang. da ist mir die version von Stefan lieber.

@ll
es wär nicht schlecht, wenn jemand das noch fixen könnte, dass das programm nicht neugestartet werden muss, wenn unentschieden und dann hab ich noch einen kleinen bug entdeckt, wenn ihr das fenster verlässt (mit alt+tab z.b.) und wieder aktiviert, dann wird ein O automatisch gesetzt.

ich denke mal, jetzt sind noch weniger zeichen kaum noch möglich, ohne die funktionsfähigkeit des programms, zu gefährden.

also falls jemand bock hat, ich bin auf das ergebnis gespannt.

edit: @NTQ Systemsteuerung > System > Erweitert > Fehlerberichterstattung :wink:

c ya,
nco2k