Punkte erhöhen
Übersicht

![]() |
MegamagBetreff: Punkte erhöhen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo.
Ich habe verschiedene Gegner, die als Types innerhalb einer Funktion definiert sind. Und ich habe eine Variable "Global Score". Wenn der Gegner vernichtet wird, dann soll diese Variable erhöht werden. Aber eben außerhalb der Funktion. Mit Return geht's nicht oder besser: Ich weiß nicht, wie... Also, wie kann ich das am besten anstellen? |
||
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Score = Score + 1
Oder wie jetz? |
||
Starfare: Worklog, Website (download) |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn getötet dann Return 1 und dann eben wenn 1 "returned" wurde die Variable Score erhöhen.
MfG DjDETE |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, aber der Type sieht ja so aus:
Code: [AUSKLAPPEN] Function update_beispiel()
For b.T_Beispiel = Each T_Beispiel If b\life < 0 then FreeEntity b\ent ;Hier müsste die Score erhöht werden, aber im Main-Programm Delete b EndIf Next End Function |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn "Score" eine globale Variable ist, dann wird sie "im MainProgramm" erhöht, um es mit deinen Worten auszudrücken. Die globale Var kannst du in der Funktion genauso bearbeiten. Und wenn es unbedingt im Hauptprogramm sein muss - weshalb auch immer, machs mit Return 1 oder Return 0 und dann
Code: [AUSKLAPPEN] Score=score+update()
Fertig ![]() mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke!
Aber ich habe es jetzt so gelöst: Code: [AUSKLAPPEN] Sc = update_beispiel()
If Sc = True Then Score = Score + 10 EndIf |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieso schaust du dir nicht mal an, was Return![]() Dann würde die Funktion aufgerufen werden ung ggf. der Wert für score erhöht. Allerdings müsstest du dann innerhalb der Funktion zuerst den aktuellen scoreupdate zusammen rechnen. Also für den Fall, dass pro Aufruf mehrere Gegner von der Bildfläche verschwinden. Eine andere Möglichkeit ist, die Variable score als Global ![]() Noch eine andere Möglichkeit ist: Ich sehen keinen Grund die paar Zeilen Code in eine Funktion zu packen, ausser du hast da noch eine Menge mit vor. Denn es gilt: Funktionen sind toll, aber nur, wenn sie innerhalb ihres Einsatzgebietes eingesetzt werden. Alles andere ist nicht unbedingt toll. Edit1: Spät dran mal wieder ich mit meinem Beitrag. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das war nur eine Beispielfunktion.
In meiner richtigen Update Funktion sind etliche Zeilen Code enthalten. Oh, Mann! Ich wusste gar nicht, dass globale Variablen auch in Funktionen gelten! Hätte ich das früher gewusst, wäre mir viel Zeit und Arbeit erspart geblieben... |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Soweit mir bekannt, gibt es globale Variablen nur damit diese auch in Funktionen erhalten bleiben. Allerdings rate ich davon ab, nun alle Variablen als global zu deklarieren. Das zeugt von keinem guten Programmierstil. Man sollte sich also schon eine gute Programmstruktur überlegen. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jop, globale Variablen sollte man nur nutzen wenn es nicht zu vermeiden ist. Vieles lässt sich über die Rückgabewerte der Funktionen regeln. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Verbrauchen globale Variablen denn mehr Speicher, oder
was ist so schlimm daran? |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sie verringern dramatisch die Datentrennung im Code, sprich sie sind eine unglaubliche Fehlerquelle. Der eigene Geltungsbereich für Variablen in einer Function wurde ja aus dem Grund geschaffen um zu verhindern dass die einzelnen Subroutinen einges Programmes sich gegenseitig Werte verändern und dann Fehler liefern. Je mehr Globale Du verwendest desto größer ist die wahrscheinlichkeit dass Du irgendwann mal mit einer einen Fehler machst und somit alles aus dem Lot bringst.
Noch dazu sind solche Fehler schwer zu debuggen, da sie eben global auftreten, sprich im kompletten Quelltext sein können. Ein lokaler Bug muss jedoch in einem recht begrenzten Bereich zu finden sein. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group