PureGolf mit TicTacToe

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

@MVXA
echt? bei mir nicht, komisch. :?

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

O=EventwParam()
If T(O)=0

da stimmt irgendwas nicht. Der Fehler tritt genau dann auf, wenn ich das
Programm starte..
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag 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
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag 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
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag 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
Stefan
Beiträge: 125
Registriert: 29.08.2004 10:51
Kontaktdaten:

Beitrag 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
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag 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
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Immer noch [c]Array index out of bounds.[/c]
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag 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.
Zuletzt geändert von NicTheQuick am 31.01.2006 21:38, insgesamt 1-mal geändert.
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag 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
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Antworten