Code kürzen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Code kürzen

Beitrag 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
Zuletzt geändert von X360 Andy am 07.01.2009 21:28, insgesamt 1-mal geändert.
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 »

goto weg, mach ne procedure draus. Alles was sich ändern könnte als Parameter.
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
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag 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 !
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

ein weiterer Ansatz wäre, den Code mal vernünftig einzurücken.
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag 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  :?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Danke für den Code, muss ich es wohl doch so "viel" tippen

Naja zumindest weniger :allright:
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

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

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Da muss ich so viel Klicken :mrgreen:
Antworten