Variable von der Prozedure übergeben

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

Also das Hauptproblem ist eindeutig.
Wenn man die Werte vergleichen/übergeben möchte, also hiermit:

Code: Alles auswählen

x = 5
Dann gibt es einen Problem, ich weis nicht wo ich das hinsetzen soll, in der Wiederholschleife geht nicht, weil immer den Wert 5 hat. :cry:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag 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)
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
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 »

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 :lol:
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
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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 :wink:

//edit 21986124:
sry für die edits: bin mit den namen durcheinander gekommen
Zuletzt geändert von a14xerus am 06.06.2007 21:05, insgesamt 1-mal geändert.
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Ich würde einen Structure verwenden... ist 1. übersichtliche und 2. kann man leicht die Variable übergeben.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@a14xerus
Wie oft willst du noch dein Beitrag editieren? :lol:
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 ? /:->
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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. :oops:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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!
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten