Code: Alles auswählen
Global=XGrenze=10
Global=YGrenze=10
Globla Dim CB.s(XGrenze, YGrenze)
;0 Reihen werden nicht berücksichtig
; Angenommen wir setzen Buchstaben-Hindernisse
CB(4,4)="X"
CB(7,5)="M"
;/ a, b soll die Position sein an der gestartet wird
;/ Unser Spieler kann waagerecht und senkrecht gehen, bis ein Hindernis auftaucht. Alle Möglichen Felder, die er betreten kann, sollen in dem String S$ gespeichert werden
Procedure.s Suchpfad(a,b)
Protected jx, S$
S$=""
;/ Wiederholender Teil
jx=1
While jx<(XGrenze-1)
If (a+jx)<XGrenze
If CB(a+jx,b+0)=" "
S$+Str(1*jx)+",0;"
Else
Break
EndIf
EndIf
jx+1
Wend
S$+Str(1*jx)+",0;"
;/
jx=1
While jx<(XGrenze-1)
If (a-jx)>0
If CB(a-jx,b+0)=" "
S$+Str(-1*jx)+",0;"
Else
Break
EndIf
EndIf
jx+1
Wend
S$+Str(-1*jx)+",0;"
jx=1
While jx<(YGrenze-1)
If (b-jx)>0
If CB(a,b-jx)=" "
S$+"0,"+Str(-1*jx)+";"
Else
Break
EndIf
EndIf
jx+1
Wend
S$+"0,"+Str(-1*jx)+";"
jx=1
While jx<(YGrenze-1)
If (b+jx)<YGrenze
If CB(a,b+jx)=" "
S$+"0,"+Str(1*jx)+";"
Else
Break
EndIf
EndIf
jx+1
Wend
S$+"0,"+Str(1*jx)+";"
ProcedureReturn S$
EndProcedure
Unser Spieler kann waagerecht und senkrecht gehen, bis ein Hindernis auftaucht. Alle Möglichen Felder, die er betreten kann, sollen in dem String S$ gespeichert werden
Nun meine Frage, wie kann man die Überprüfung zusammenfassen, dass man den wiederholenden Teil nicht viermal schreiben muss?
Dank euch.
