Seite 1 von 2

Code kürzen

Verfasst: 07.01.2009 21:13
von X360 Andy
Ich hätte gerade ein Frage ...


Wie könnte ich das kürzen ?

Code: Alles auswählen

Procedure Botspiel()
Shared bot, botzeichnung$,spieler$

If bot = 1
Botposi = 1+Random(9)

  If Botposi = 1
      nr1$ = GetGadgetText(#Button_0)
     
     If nr1$ = spieler$ Or nr1$ = botzeichen$
      Botspiel()
     Else 
       DisableGadget(#Button_0,1)
      SetGadgetText(#Button_0,Botzeichen$)
     EndIf
     
   EndIf
 
   bot =  0
EndIf
EndProcedure
...
If bot = 1
Botposi = 1+Random(9)

  If Botposi = 1
      nr1$ = GetGadgetText(#Button_0)
     
     If nr1$ = spieler$ Or nr1$ = botzeichen$
      Botspiel()
     Else 
       DisableGadget(#Button_0,1)
      SetGadgetText(#Button_0,Botzeichen$)
     EndIf
     
   EndIf
 
   bot =  0
EndIf
Ich bräuchte den Code 9 mal mit 9 verschiedenen Inhalten , Ich könnte ihn einfach kopieren und immer die zahlen ändern , allerdings ist das recht zeitaufwendig und wenn ich einen Fehlergemacht habe noch viel mehr...

Ich dachte ja an "For: Next" Schleife , allerdings bekomme ich hin..

Gibt es einen weg das einfacher zu machen ?

Ich kann ja leider nicht einfach

For i = 0 to 5
Buttongadget(#Button_+i, .......)
next

machen ( Beispiel )

Würde mich über eine Hilfe freuen
Mfg

Verfasst: 07.01.2009 21:15
von ts-soft
goto weg, mach ne procedure draus. Alles was sich ändern könnte als Parameter.

Verfasst: 07.01.2009 21:18
von X360 Andy
Ich wusste das sowas kommt :lol:

Ich wollte Goto mal ausprobieren ...



Also kann ich es nicht kürzen ?

EDIT

Habs Goto mal eben verbessert !

Verfasst: 07.01.2009 21:34
von Kiffi
ein weiterer Ansatz wäre, den Code mal vernünftig einzurücken.

Verfasst: 07.01.2009 21:34
von Kaeru Gaman
naja... wenn man wüßte, was das werden soll, könnte man da auch nen tip geben...

ich seh da in deinem code nix, worauf sich
> Ich bräuchte den Code 9 mal mit 9 verschiedenen Inhalten , Ich könnte ihn einfach kopieren und immer die zahlen ändern
beziehen könnte...

Verfasst: 07.01.2009 21:47
von X360 Andy
Ich bastel grad das Spiel TIC TAC TO
9 Buttons ...
Von #Button_0 bis #Button_8

Nachdem ich ein X oder O gesetzt habe , ist der KI dran.

Code: Alles auswählen

(Bis jetzt) Es wird über ein Random ausgelosst ob Button 1 ,2...9 "makiert" wird.
Wenn der Button bereits mit einem X oder O versehen ist soll die Prozedure solang wiederholt werden bis Random() ein freies Feld gefunden hat, und dann mit dem Botzeichen$ einträgt.
Dann ist Spieler 1 wieder dran.
[*/code]

Das alles ist kein Problem 

Nur wenn ich alles ausschreibe ist der Code wo überprüft wird ob es noch ein freies Feld gibt für den KI" über 150Zeilen ... 
Aber auch für Zukünftige Sachen wäre es besser zu wissen , weil auch bei X360 Mathe hab ich ca. 500 Code warscheinlich Sinnlos verbraucht nur weil ich es ausgeschrieben habe.


Zum einrücken hab das Plugin fürn IDE aus  :?

Verfasst: 07.01.2009 22:05
von Kaeru Gaman
einrücken macht man auch selber... :?

also, so ein check ob ein feld belegt ist oder sonstwas löst man mit nem Array.

so ungefähr zum bleistift...

Code: Alles auswählen

Dim Feld.s(8)

Dim Player.s(1)

Player(0) = "X"
Player(1) = "O"

For n=0 To 8
  Feld(n) = "_"
Next

Define Spieler.l = 0
Define Set.l = 0

For n=0 To 8  ; Neun Felder zu besetzen

  Repeat
    Set = Random(8)       ; zufällig wählen
  Until Feld(Set) = "_"   ; bis freies getroffen
   Feld(Set) = Player(Spieler)
   Spieler = 1 - Spieler

  For y=0 To 2
    out$ =""
    For x=0 To 2
      out$ + Feld(3*y + x)
    Next
    Debug out$
  Next
  Debug "---------------"

Next

Verfasst: 07.01.2009 22:12
von X360 Andy
Danke für den Code, muss ich es wohl doch so "viel" tippen

Naja zumindest weniger :allright:

Verfasst: 07.01.2009 22:31
von Kiffi
X360 Andy hat geschrieben:muss ich es wohl doch so "viel" tippen
http://www.yoyogames.com/gamemaker ;-)

Grüße ... Kiffi

Verfasst: 07.01.2009 22:32
von X360 Andy
Da muss ich so viel Klicken :mrgreen: