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
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Wo is denn das O=EventGadgetID() hin ?
Das dürfte so doch goa ned funktionieren, oder ? :shock:
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Funktioniert leider gar nicht :( .
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Noch 2 Zeichen gespart :mrgreen:

Code: Alles auswählen

Dim T(8)
If OpenWindow(0,216,0,190,260,$CC0000,"Tic Tac Toe") And CreateGadgetList(WindowID())
  f=LoadFont(1,"Arial",24)
  For a=0 To 8
    ButtonGadget(a,10+60*a%3,10+60*(a/3),50,50,"")
    SetGadgetFont(a,f)
  Next
  ButtonGadget(9,10,220,80,30,"Neues Spiel")
  ButtonGadget(10,100,220,80,30,"Spiel Beenden")
  g=LoadFont(2,"Arial",12)
  TextGadget(11,10,190,170,20,"O ist dran",1)
  SetGadgetFont(11,g)
  Repeat
    Select WaitWindowEvent()
      Case 16
        Break
      Case $332C
         O=EventwParam()
        If O=10
          Break
        ElseIf O=9
          For a=0 To 8
            T(a)=0
            SetGadgetText(a,"")
            DisableGadget(a,0)
          Next
          P=0
        Else
          If T(O)=0
            T(O)=P+1
            DisableGadget(O,1)
            SetGadgetText(O,Chr(79+P*9))
            SetGadgetText(11,Chr(79+P!1*9)+" ist dran")
            j=P+1
            If T(0)&T(1)&T(2)=j Or T(3)&T(4)&T(5)=j Or T(6)&T(7)&T(8)=j Or T(0)&T(3)&T(6)=j Or T(1)&T(4)&T(7)=j Or T(2)&T(5)&T(8)=j Or T(0)&T(4)&T(8)=j Or T(2)&T(4)&T(6)=j
              SetGadgetText(11,Chr(79+P*9)+" gewinnt")
              For a=0 To 8
                DisableGadget(a,1)
              Next
            EndIf
            P!1
          EndIf
        EndIf
    EndSelect
  ForEver
EndIf 
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

904 :mrgreen:

Code: Alles auswählen

Dim T(8)
l=OpenWindow(0,216,0,190,260,$CC0000,"Tic Tac Toe")
If l And CreateGadgetList(l)
  f=LoadFont(1,"Arial",24)
  For a=0 To 8
    ButtonGadget(a,10+60*a%3,10+60*(a/3),50,50,"")
    SetGadgetFont(a,f)
  Next
  ButtonGadget(9,10,220,80,30,"Neues Spiel")
  ButtonGadget(10,100,220,80,30,"Spiel Beenden")
  g=LoadFont(2,"Arial",12)
  TextGadget(11,10,190,170,20,"O ist dran",1)
  SetGadgetFont(11,g)
  Repeat
    Select WaitWindowEvent()
      Case 16
        Break
      Case $332C
      	O=EventwParam()
        If O=10
          Break
        ElseIf O=9
          For a=0 To 8
            T(a)=0
            SetGadgetText(a,"")
            DisableGadget(a,0)
          Next
          P=0
        Else
          If T(O)=0
            T(O)=P+1
            DisableGadget(O,1)
            SetGadgetText(O,Chr(79+P*9))
            SetGadgetText(11,Chr(79+P!1*9)+" ist dran")
            j=P+1
            If T(0)&T(1)&T(2)=j Or T(3)&T(4)&T(5)=j Or T(6)&T(7)&T(8)=j Or T(0)&T(3)&T(6)=j Or T(1)&T(4)&T(7)=j Or T(2)&T(5)&T(8)=j Or T(0)&T(4)&T(8)=j Or T(2)&T(4)&T(6)=j
              SetGadgetText(11,Chr(79+P*9)+" gewinnt")
              For a=0 To 8
                DisableGadget(a,1)
              Next
            EndIf
            P!1
          EndIf
        EndIf
    EndSelect
  ForEver
EndIf
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

@ts-soft

Code: Alles auswählen

Dim T(8)
If OpenWindow(0,216,0,190,260,$CC0000,"Tic Tac Toe") And CreateGadgetList(WindowID())
  f=LoadFont(1,"Arial",24)
  For a=0 To 8:ButtonGadget(a,10+60*a%3,10+60*(a/3),50,50,""):SetGadgetFont(a,f):Next
  ButtonGadget(9,10,220,80,30,"Neues Spiel")
  ButtonGadget(10,100,220,80,30,"Spiel Beenden")
  g=LoadFont(2,"Arial",12)
  TextGadget(11,10,190,170,20,"O ist dran",1)
  SetGadgetFont(11,g)
  Repeat
    e=WaitWindowEvent()
    If e=$332C
      O=EventwParam()
      If O=10
        End
      ElseIf O=9
        For a=0 To 8:T(a)=0:SetGadgetText(a,""):DisableGadget(a,0):Next
        P=0
      Else
        If T(O)=0
          T(O)=P+1
          DisableGadget(O,1)
          SetGadgetText(O,Chr(79+P*9))
          SetGadgetText(11,Chr(79+P!1*9)+" ist dran")
          j=P+1
          If T(0)&T(1)&T(2)=j Or T(3)&T(4)&T(5)=j Or T(6)&T(7)&T(8)=j Or T(0)&T(3)&T(6)=j Or T(1)&T(4)&T(7)=j Or T(2)&T(5)&T(8)=j Or T(0)&T(4)&T(8)=j Or T(2)&T(4)&T(6)=j
            SetGadgetText(11,Chr(79+P*9)+" gewinnt")
            For a=0 To 8:DisableGadget(a,1):Next
          EndIf
          P!1
        EndIf
      EndIf
    EndIf
  Until e=16
EndIf
175 zeichen weniger. :mrgreen:

oder ganz krass:

Code: Alles auswählen

Dim T(8):If OpenWindow(0,216,0,190,260,$CC0000,"Tic Tac Toe") And CreateGadgetList(WindowID()):f=LoadFont(1,"Arial",24):For a=0 To 8:ButtonGadget(a,10+60*a%3,10+60*(a/3),50,50,""):SetGadgetFont(a,f):Next:ButtonGadget(9,10,220,80,30,"Neues Spiel"):ButtonGadget(10,100,220,80,30,"Spiel Beenden"):g=LoadFont(2,"Arial",12):TextGadget(11,10,190,170,20,"O ist dran",1):SetGadgetFont(11,g):Repeat:e=WaitWindowEvent():If e=$332C:O=EventwParam():If O=10:End:ElseIf O=9:For a=0 To 8:T(a)=0:SetGadgetText(a,""):DisableGadget(a,0):Next:P=0:Else:If T(O)=0:T(O)=P+1:DisableGadget(O,1):SetGadgetText(O,Chr(79+P*9)):SetGadgetText(11,Chr(79+P!1*9)+" ist dran"):j=P+1:If T(0)&T(1)&T(2)=j Or T(3)&T(4)&T(5)=j Or T(6)&T(7)&T(8)=j Or T(0)&T(3)&T(6)=j Or T(1)&T(4)&T(7)=j Or T(2)&T(5)&T(8)=j Or T(0)&T(4)&T(8)=j Or T(2)&T(4)&T(6)=j:SetGadgetText(11,Chr(79+P*9)+" gewinnt"):For a=0 To 8:DisableGadget(a,1):Next:EndIf:P!1:EndIf:EndIf:EndIf:Until e=16:EndIf
413 zeichen gespart. :lol:

edit: also inkl. leerzeichen, ist auch mehr als scherz gemeint. :D

edit2: hey das mit l=OpenWindow() ist eine gute idee, an Select kannst du auch noch einiges sparen, wie in meinem code.

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

@nco2k:
Du solltest dich vielleicht tatsächlich bemühen den Counter zu benutzen.
Dann würdest du sehn, dass dein letzten Beispiel immernoch 932 Zeichen hat.
Also wesentlich mehr als mein bisher bestes...
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

897!

Code: Alles auswählen

s$=" ist dran"
Dim T(8)
l=OpenWindow(0,216,0,190,260,$CC0000,"Tic Tac Toe")
If l And CreateGadgetList(l)
  f=LoadFont(1,"Arial",24)
  For a=0 To 8
    ButtonGadget(a,10+60*a%3,10+60*(a/3),50,50,"")
    SetGadgetFont(a,f)
  Next
  ButtonGadget(9,10,220,80,30,"Neues Spiel")
  ButtonGadget(10,100,220,80,30,"Spiel Beenden")
  g=LoadFont(2,"Arial",12)
  TextGadget(11,10,190,170,20,"O"+s$,1)
  SetGadgetFont(11,g)
  Repeat
    w=WaitWindowEvent()
    If w=16
      Break
    ElseIf w=$332C
      O=EventwParam()
      If O=10
        Break
      ElseIf O=9
        For a=0 To 8
          T(a)=0
          SetGadgetText(a,"")
          DisableGadget(a,0)
        Next
        P=0
      Else
        If T(O)=0
          T(O)=P+1
          DisableGadget(O,1)
          SetGadgetText(O,Chr(79+P*9))
          SetGadgetText(11,Chr(79+P!1*9)+s$)
          j=P+1
          If T(0)&T(1)&T(2)=j Or T(3)&T(4)&T(5)=j Or T(6)&T(7)&T(8)=j Or T(0)&T(3)&T(6)=j Or T(1)&T(4)&T(7)=j Or T(2)&T(5)&T(8)=j Or T(0)&T(4)&T(8)=j Or T(2)&T(4)&T(6)=j
            SetGadgetText(11,Chr(79+P*9)+" gewinnt")
            For a=0 To 8
              DisableGadget(a,1)
            Next
          EndIf
          P!1
        EndIf
      EndIf
    EndIf
  ForEver
EndIf
(Dein Tipp war ned schlecht nco2k, hab aber noch ein Zeichen gut gemacht mit dem s$ ;) )
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

884!

Code: Alles auswählen

s$=" ist dran"
Dim T(8)
l=OpenWindow(0,216,0,190,260,$CC0000,"Tic Tac Toe")
If l And CreateGadgetList(l)
  f=LoadFont(1,"Arial",24)
  For a=0 To 8
    ButtonGadget(a,10+60*a%3,10+60*(a/3),50,50,"")
    SetGadgetFont(a,f)
  Next
  ButtonGadget(9,10,220,80,30,"Neues Spiel")
  ButtonGadget(10,100,220,80,30,"Spiel Beenden")
  g=LoadFont(2,"Arial",12)
  TextGadget(11,10,190,170,20,"O"+s$,1)
  SetGadgetFont(11,g)
  Repeat
    w=WaitWindowEvent()
    If w=$332C
      O=EventwParam()
      If O=10
        Break
      ElseIf O=9
        For a=0 To 8
          T(a)=0
          SetGadgetText(a,"")
          DisableGadget(a,0)
        Next
        P=0
      Else
        If T(O)=0
          T(O)=P+1
          DisableGadget(O,1)
          SetGadgetText(O,Chr(79+P*9))
          SetGadgetText(11,Chr(79+P!1*9)+s$)
          j=P+1
          If T(0)&T(1)&T(2)=j Or T(3)&T(4)&T(5)=j Or T(6)&T(7)&T(8)=j Or T(0)&T(3)&T(6)=j Or T(1)&T(4)&T(7)=j Or T(2)&T(5)&T(8)=j Or T(0)&T(4)&T(8)=j Or T(2)&T(4)&T(6)=j
            SetGadgetText(11,Chr(79+P*9)+" gewinnt")
            For a=0 To 8
              DisableGadget(a,1)
            Next
          EndIf
          P!1
        EndIf
      EndIf
    EndIf
  Until w=16
EndIf
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@nco2k
Durch die Doppelpunkte wirds nur mehr :mrgreen:

@HeX0R
Das Fensterhandle hab ich übersehen :(
Jetzt wirds aber eng :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
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 »

850 Zeichen!

Code: Alles auswählen

Dim T(8) 
If OpenWindow(0,216,0,190,260,$CC<<16,"Tic Tac Toe") And CreateGadgetList(WindowID()) 
  For a=0 To 8 
    ButtonGadget(a,10+60*a%3,10+60*(a/3),50,50,"") 
    SetGadgetFont(a,LoadFont(a,"Arial",24)) 
  Next 
  ButtonGadget(9,10,220,80,30,"Neues Spiel") 
  ButtonGadget(10,100,220,80,30,"Spiel Beenden") 
  TextGadget(11,10,190,170,20,"O ist dran",1) 
  SetGadgetFont(11,LoadFont(9,"Arial",12))
  Repeat 
    Select WindowEvent() 
      Case 16 
        Break 
      Case 13100 
        O=EventGadgetID() 
        If O=10 
          Break 
        ElseIf O=9 
          For a=0 To 8 
            T(a)=0 
            SetGadgetText(a,"") 
            DisableGadget(a,0) 
          Next 
          P=0 
        Else 
          If T(O)=0 
            T(O)=P+1 
            DisableGadget(O,1) 
            SetGadgetText(O,Chr(79+P*9)) 
            SetGadgetText(11,Chr(79+P!1*9)+" ist dran") 
            j=P+1 
            For i=0 To 2 
              x=i*3 
              If T(x)&T(x+1)&T(x+2)=j Or T(i)&T(i+3)&T(i+6)=j Or T(0)&T(4)&T(8)=j Or T(2)&T(4)&T(6)=j 
                SetGadgetText(11,Chr(79+P*9)+" gewinnt") 
                For a=0 To 8 
                  DisableGadget(a,1) 
                Next 
              EndIf 
            Next 
            P!1 
          EndIf 
        EndIf 
    EndSelect 
  ForEver 
EndIf 
Ich mache mal einen neuen Thread dafür auf, sonst fühlt sich Badboy
noch belästigt.
Antworten