Seite 3 von 5
Verfasst: 06.06.2007 20:55
von RSBasic
Also das Hauptproblem ist eindeutig.
Wenn man die Werte vergleichen/übergeben möchte, also hiermit:
Dann gibt es einen Problem, ich weis nicht wo ich das hinsetzen soll, in der Wiederholschleife geht nicht, weil immer den Wert 5 hat.

Verfasst: 06.06.2007 20:55
von PureBasic4.0
es ist aber genauso unschön, um x zu erhöhen, eine Procedure zu benutzen. Wofür braucht man das? Geht viel besser, wenn man es außerhalb der Procedure macht (es sei denn, man möchte ausprobieren, wie procedurereturn funktioniert)
Verfasst: 06.06.2007 20:56
von ts-soft
PureBasic4.0 hat geschrieben:Warum machst du es nicht einfach so?:
Code: Alles auswählen
Global x.l
Procedure ErhoeheX()
x + 1
EndProcedure
x = 5
Debug x
ErhoeheX()
Debug x
statt Erhoehe() würde an der Stelle x + 1 mehr Sinn machen

Verfasst: 06.06.2007 20:57
von a14xerus
@PureBasic 4
es geht sich nicht um eine sinnlose x Erhöhung in einer procedure sondern dadrum, das du in einer procedure auf eine Main variable zugreifst, und bei großen Projekten gerät das schnell was durcheinander
Erzähl mir nicht, das dein Code, wer eine For-Next schleiße benutzt, anstatt einfach x + 100 zu machen sinnvoller ist
//edit 21986124:
sry für die edits: bin mit den namen durcheinander gekommen
Verfasst: 06.06.2007 21:02
von Andreas_S
Ich würde einen Structure verwenden... ist 1. übersichtliche und 2. kann man leicht die Variable übergeben.
Verfasst: 06.06.2007 21:04
von a14xerus
Natürlich ist das übersichtlicher, aber hier geht es um ein Problem in einem Maßstab, der zu klein ist, um mit Strukturen aufzufahren...
RSBasic hat irgendein Problem mit schleifen wie ich glaube....
@RSbasic:
geh doch einfach mal den COde im Kopf so durch, wie es der CP später auch machen wird (natürlich macht der das schneller und nich in PB

)
Einfach schritt für schritt
Verfasst: 06.06.2007 21:04
von RSBasic
@a14xerus
Wie oft willst du noch dein Beitrag editieren?
3-4-Mal haste editiert, also erst haste nen Text geschrieben, dann hast du irgendwas für @TS-Soft was gesagt, dann hast du mich gemeint und dann doch der PureBasic 4 ?

Verfasst: 06.06.2007 21:12
von RSBasic
Sry für den Doppel-Post
@a14xerus & @all
Also ich erklärs dir:
1. Ich programmiere ein Spiel
2. Mein Spiel ist schon größer
3. Du weißt doch wie ein Spiel aufgebaut ist und du weißt es auch, was da hauptsächlich drin ist? Genau eine Wiederholschleife, um deren Sprite etc. auf dem Bildschirm anzuzeigen.
4. "x" benutze ich die Position der Figur
5. Wenn die Figur sich bewegt, dann ändert sich auch diesen Wert, also "x", ganz logisch
6. Mit Schleifen habe ich keine Probleme
7. Mein Problem ist nur, ich weis nicht, wo ich "x = 5" hinsetzen soll
-In der Wiederholschleife? Nein
-Wo denn dann? Außerhalb der Wiederholschleife wird diese Aufgabe nicht aufgenommen, es spielt alles in der Schleife
Hoffe, es wurde klarer.

Verfasst: 06.06.2007 21:18
von a14xerus
warum muss x denn 5 sein???
es wäre total sinnlos innerhalb der repeat schleife für die Spieldarstellung eine schleife zu machen, weil man diese Schleife als User gar nicht wahrnehmen würde.
Denn die Darstellung würde ja erst nach Dem Schleifendurchlauf ausgeführt werden.
Dannn könnte man direkt +100 (als bsp) machen, anstatt in einer schleife langsam auf 100 zu erhöhen.
Dadurhc wird nämlich nur die Darstellung angehalten.
mach es mit Flags:
Code: Alles auswählen
GoTo5 = 1
x = 100
y = 100
Repeat
If GoTo5 = 1 ; falls das bewegen flag "an" ist:
If x > 5 ; falls bewegung von nöten
x - 1 ; bewege um eins
EndIf
If y > 5 ; das seleb mit y
y - 1
EndIf
If x <= 5 And y <= 5 ; wenn an 5 angekommen
GoTo5 = 0 ;flag aus
EndIf
EndIf
DisplaySprite(0,x,y)
FlipBuffers()
Until Exit = 1
Achtung: nur Codebeispiel, nicht ausführen!
Verfasst: 06.06.2007 21:23
von RSBasic
Ich mach mal einen ----------------------
Also ich gebe jetzt auf (Thread-Frage)
Macht ja keinen Sinn mehr
Wenn ich ein Codebeispiel gecodetet habe, dann poste ich hierein und dann könnt ihr es besser verstehen.