Seite 1 von 22

Verfasst: 29.01.2006 16:12
von NicTheQuick
Badboy99 hat geschrieben:Wer draus nen 20 Zeiler macht bekommt Respect von mir!!!!!!!!!!!!!!!!!
1. Hör bitte mal auf mit den nervenden Ausrufezeichen. Punkte reichen
auch, aber 20 Fragezeichen sind Schreien.
2. Für 20 Zeilen hat es nicht ganz gereicht, aber es sind immerhin 36
geworden:

Code: Alles auswählen

Dim TTT.l(8)
Global FontID1, FontID2
FontID1 = LoadFont(1, "Arial", 24) : FontID2 = LoadFont(2, "Arial", 12)
Gewinn.RECT : Gewinn\left = $05430210 : Gewinn\top = $06300876 : Gewinn\right = $08520741 : Gewinn\bottom = $06420840
If OpenWindow(0, 216, 0, 190, 260,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Tic Tac Toe")
  If CreateGadgetList(WindowID())
    For a.l = 0 To 8
      ButtonGadget(a, 10 + 60 * a % 3, 10 + 60 * (a / 3), 50, 50, "") : SetGadgetFont(a, FontID1)
    Next
    ButtonGadget(9, 10, 220, 80, 30, "Neues Spiel")
    ButtonGadget(10, 100, 220, 80, 30, "Spiel Beenden")
    TextGadget(11, 10, 190, 170, 20, "X ist dran", #PB_Text_Center)
    SetGadgetFont(11, FontID2)
    Repeat
      Select WaitWindowEvent()
        Case #PB_EventCloseWindow : Break
        Case #PB_EventGadget
          EGID.l = EventGadgetID() : Select EGID
            Case 10 : Break
            Case 9 : For a = 0 To 8 : TTT(a) = 0 : SetGadgetText(a, "") : DisableGadget(a, 0) : Pl = 0 : Next
            Default
              If TTT(EGID) = 0
                Pl ! 1 : TTT(EGID) = Pl + 1 : DisableGadget(EGID, 1)
                If Pl = 0 : SetGadgetText(EGID, "O") : SetGadgetText(11, "X ist dran") : Else : SetGadgetText(EGID, "X") : SetGadgetText(11, "O ist dran") : EndIf 
                For a = 0 To 7
                  If TTT(PeekB(@Gewinn + a * 2) & $F) = Pl + 1 And TTT((PeekB(@Gewinn + a * 2) & $F0) >> 4) = Pl + 1 And TTT(PeekB(@Gewinn + a * 2 + 1)) = Pl + 1
                    If Pl = 0 : SetGadgetText(11, "O gewinnt") : Else : SetGadgetText(11, "X gewinnt") : EndIf
                    For a = 0 To 8 : DisableGadget(a, 1) : Next : Break
                  EndIf
                Next
              EndIf
          EndSelect
      EndSelect
    ForEver
  EndIf
EndIf
PS.: Den Code musst du nicht verstehen, das tun die andern
wahrscheinlich auch nicht. :wink: Wenn doch, kriegt ihr ihn ja vielleicht
noch kleiner, aber ohne dass sich optisch was dran ändert! (PureGolf lässt
grüßen) :wink:
activategadget(#GadgetID) ist falsch den da setzt es ja bloß deen fokus darauf!!!!!

was für ein befehl betätigt den Button????
Wieso willst du einen Button drücken lassen? Du musst doch nur im
Programm selbst so machen, dass der Computer gegen dich spielt. Du
brauchst keine Maus zu bewegen oder einen Klick zu simulieren.
Denk mal etwas drüber nach.

Verfasst: 30.01.2006 04:24
von MLK
30 zeilen und noch ne menge gekürzt :-)

Code: Alles auswählen

Dim TTT.l(8) 
Gewinn.RECT\left = $05430210 : Gewinn\top = $06300876 : Gewinn\right = $08520741 : Gewinn\bottom = $06420840 
If CreateGadgetList(OpenWindow(0, 216, 0, 190, 260,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Tic Tac Toe") ) 
  For a.l = 0 To 8 
    ButtonGadget(a, 10 + 60 * a % 3, 10 + 60 * (a / 3), 50, 50, "") : SetGadgetFont(a, LoadFont(1, "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, "X ist dran", #PB_Text_Center) 
  SetGadgetFont(11, LoadFont(2, "Arial", 12)) 
  While PeekL(PokeL(@Event, WaitWindowEvent())) <> #PB_EventCloseWindow
    If Event = #PB_EventGadget 
      Select PeekL(PokeL(@EGID, EventGadgetID()))
        Case 10 : Break 
        Case 9 : For a = 0 To 8 : TTT(a) = 0 : SetGadgetText(a, "") : DisableGadget(a, 0) : Pl = 0 : Next 
        Default
          If TTT(EGID) = 0 
            Pl ! 1 : TTT(EGID) = Pl + 1 : DisableGadget(EGID, 1) 
            SetGadgetText(EGID, ReplaceString(Str(Pl), "1", "X")) : SetGadgetText(11, GetGadgetText(EGID)+" ist dran")
            For a = 0 To 7 
              If TTT(PeekB(@Gewinn + a * 2) & $F) = Pl + 1 And TTT((PeekB(@Gewinn + a * 2) & $F0) >> 4) = Pl + 1 And TTT(PeekB(@Gewinn + a * 2 + 1)) = Pl + 1 
                SetGadgetText(11, ReplaceString(Str(Pl), "1", "X")+" gewinnt")
                For a = 0 To 8 : DisableGadget(a, 1) : Next : Break 
              EndIf 
            Next 
          EndIf
      EndSelect 
    EndIf
  Wend
EndIf

Verfasst: 30.01.2006 19:51
von NicTheQuick
@MLK:
Zeile 5 kann man so aber nicht lassen. Probiers am besten selbst mal aus. :wink:

Verfasst: 30.01.2006 20:21
von MLK
stimmt <)

Verfasst: 31.01.2006 10:49
von HeX0R
NicTheQuick hat geschrieben:Für 20 Zeilen hat es nicht ganz gereicht, aber es sind immerhin 36
geworden
Eigentlich sind es aufgedröselt (soviel ich weiss darf man bei PureGolf nicht mehrere Befehle in eine Zeile setzen ) 66 Zeilen!
NicTheQuick hat geschrieben: PS.: Den Code musst du nicht verstehen, das tun die andern
wahrscheinlich auch nicht
Ein wenig Überheblichkeit gefrühstückt ? :roll:

Hier 50 Zeilen (wie gesagt ohne MehrfachZeilen):

Code: Alles auswählen

Dim TTT.l(8) 
Gewinn.RECT\left = $05430210
Gewinn\top = $06300876
Gewinn\right = $08520741
Gewinn\bottom = $06420840 
If OpenWindow(0, 216, 0, 190, 260,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Tic Tac Toe") And CreateGadgetList(WindowID()) 
  SetGadgetFont(#PB_Default, LoadFont(1, "Arial", 24))
  For a.l = 0 To 8 
    ButtonGadget(a, 10 + 60 * a % 3, 10 + 60 * (a / 3), 50, 50, "")
  Next
  SetGadgetFont(#PB_Default, #PB_Default)
  ButtonGadget(9, 10, 220, 80, 30, "Neues Spiel") 
  ButtonGadget(10, 100, 220, 80, 30, "Spiel Beenden")
  SetGadgetFont(#PB_Default, LoadFont(2, "Arial", 12))
  TextGadget(11, 10, 190, 170, 20, "X ist dran", #PB_Text_Center) 
  Repeat 
    Select WaitWindowEvent() 
      Case #PB_EventCloseWindow
      	Break 
      Case #PB_EventGadget 
        If EventGadgetID() = 10 
          Break 
        ElseIf EventGadgetID() = 9
          For a = 0 To 8
	         	TTT(a) = 0
	         	SetGadgetText(a, "")
	         	DisableGadget(a, 0)
	        Next
          Pl = 0
        Else
          If TTT(EventGadgetID()) = 0 
            Pl ! 1
            TTT(EventGadgetID()) = Pl + 1
            DisableGadget(EventGadgetID(), 1)
            SetGadgetText(EventGadgetID(), Chr(79 + Pl*9))
            SetGadgetText(11, Chr(79 + Pl*9)+ " ist dran")
            For a = 0 To 7 
              If TTT(PeekB(@Gewinn + a * 2) & $F) = Pl + 1 And TTT((PeekB(@Gewinn + a * 2) & $F0) >> 4) = Pl + 1 And TTT(PeekB(@Gewinn + a * 2 + 1)) = Pl + 1 
                SetGadgetText(11, Chr(79 + Pl*9) + " gewinnt")
                For a = 0 To 8
                	DisableGadget(a, 1)
                Next
               	Break 
              EndIf 
            Next 
          EndIf 
        EndIf
    EndSelect 
  ForEver 
EndIf

Verfasst: 31.01.2006 11:08
von NicTheQuick
HeX0R hat geschrieben:
NicTheQuick hat geschrieben:Für 20 Zeilen hat es nicht ganz gereicht, aber es sind immerhin 36
geworden
Eigentlich sind es aufgedröselt (soviel ich weiss darf man bei PureGolf nicht mehrere Befehle in eine Zeile setzen ) 66 Zeilen!
Das stimmt so nicht ganz. Hier sind nochmal die Regeln. Es kommt
letztendlich nur auf die einzelnen Zeichen an.
NicTheQuick hat geschrieben: PS.: Den Code musst du nicht verstehen, das tun die andern
wahrscheinlich auch nicht
Ein wenig Überheblichkeit gefrühstückt ? :roll:
Nimm's bitte nicht persönlich. Klar versteht man den Code, wenn man ihn
genauer durchliest. Das war absolut nicht überheblich gemeint, auch wenn
es vielleicht so rübergekommen ist. Dann tut es mir Leid.
Hier 50 Zeilen (wie gesagt ohne MehrfachZeilen):

Code: Alles auswählen

...blablabla...
Coole Sache. Gute Idee mit dem [c]Chr()[/c].

Verfasst: 31.01.2006 12:06
von HeX0R
NicTheQuick hat geschrieben:Es kommt
letztendlich nur auf die einzelnen Zeichen an.
Aha!
Dann war mein Ansatz ja völlig falsch, deswegen hier eine geänderte Version (1076 Zeichen)
Is mir übrigens eben aufgefallen, dass Trim() offensichtlich meine TABS am Anfang mitzählt :freak: , hab deswegen Leerzeichen genommen.

Code: Alles auswählen

Dim T(8)
If OpenWindow(0,216,0,190,260,#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_TitleBar,"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",#PB_Text_Center)
  SetGadgetFont(11,g)
  Repeat
    Select WaitWindowEvent()
      Case #PB_EventCloseWindow
        Break
      Case #PB_EventGadget
      	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
            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
NicTheQuick hat geschrieben: Nimm's bitte nicht persönlich.
Ich doch nicht :allright:

[Edit]1010 Zeichen

Verfasst: 31.01.2006 13:30
von HeX0R
Ich kann auch mit mir selbst ganz gut spielen :mrgreen:

912!

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=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
            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

Verfasst: 31.01.2006 13:43
von ts-soft
Die Konstanten in Hex :lol:

Verfasst: 31.01.2006 13:44
von MLK
muss leider los, aber:

Code: Alles auswählen

Dim T(8) 
If CreateGadgetList(OpenWindow(0,216,0,190,260,#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_TitleBar,"Tic Tac Toe")) 
  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") 
  ButtonGadget(10,100,220,80,30,"Spiel Beenden") 
  TextGadget(11,10,190,170,20,"O ist dran",1) 
  SetGadgetFont(11,LoadFont(2,"Arial",12)) 
  Repeat 
    Select WaitWindowEvent() 
      Case #PB_EventCloseWindow 
        Break 
      Case #PB_EventGadget 
        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