Frage zu FUNCTIONS

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

dada11

Betreff: Frage zu FUNCTIONS

BeitragSa, Jul 29, 2006 12:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich möchte das Bonussystem von meinem Spiel in eine Function packen.
Wenn ich das so mache berechnet die Function die Score-Werte aber nicht richtig. Wenn ich den selben Code wie unten nicht in eine Function setzt sondern in den normalen Programmcode funktioniert das berrechnen.
Woran kann das liegen ?
Dada

Code: [AUSKLAPPEN]
function bonus()   
 If laser_bonus >= 100 Then    level_bonus=0      bonus$="Sorry. You Need More Than 100 Shots. No Bonus."    
 ElseIf laser_bonus < 100 Then  level_bonus=250   bonus$="Congratulations. You Need Less Than 100 Shots. 250 Points Bonus"
 ElseIf laser_bonus < 75 Then    level_bonus=500   bonus$="Congratulations. You Need Less Than 75 Shots. 500 Points Bonus"
 ElseIf laser_bonus < 50 Then   level_bonus=1000  bonus$="Congratulations. No Shot Missed. 1000 Point Bonus"
 score=score+level_bonus
 level_bonus=0   
End Function


Legende:
laser_bonus ist die Anzahl der Schüsse die benötigt wurden.
level_bonus ist dann der Bonuswert der auf den Scrore addiert wird.

Byteemoz

BeitragSa, Jul 29, 2006 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn laser_bonus, level_bonus und score globale Variablen sind, sollte es so funktionieren:
Code: [AUSKLAPPEN]
Function bonus$()
   If laser_bonus >= 100 Then
      level_bonus = 0
      Return "Sorry. You Need More Than 100 Shots. No Bonus."   
   ElseIf laser_bonus < 50 Then
      level_bonus = 1000
      Return "Congratulations. No Shot Missed. 1000 Point Bonus"
   ElseIf laser_bonus < 75 Then
      level_bonus = 500
      Return "Congratulations. You Need Less Than 75 Shots. 500 Points Bonus"
   Else
      level_bonus = 250
      Return "Congratulations. You Need Less Than 100 Shots. 250 Points Bonus"
   EndIf
   score:+ level_bonus
   level_bonus = 0
End Function

Du solltest dein Programm vielleicht im Strict oder SuperStrict Modus schreiben. Damit werden Dir u.a. solche Fehler angezeigt.
-- Byteemoz
MaxIDE Community Edition: Summary | Bugs | Feature Requests | CVS Repository | Thread

Suco-X

BeitragSa, Jul 29, 2006 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Wird wahrscheinlich an Lokalen Variablen liegen, die du aus einer Funktion raus nutzen willst. Die müssen dann Global sein.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

dada11

BeitragSa, Jul 29, 2006 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Suco-X. Sind eigentlich schon alle auf GLOBAL...

@ Byteemoz. Werde das nachher mal ausprobieren sieht aber schon gut aus. Strict und Superstrict habe ich leider zu spät kennengelernt. Das Speil war schon sehr weit, hatte versucht Strict nachträglich zu aktivieren da sind dann aber so viele Meldungen gekommen und ich habe nicht mehr durchgeblickt.
Die nächsten Projekte werde ich das auch machen.
 

Dreamora

BeitragSa, Jul 29, 2006 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
sind die Variablen global in einer Funktion oder ausserhalb? Weil global in einer Funktion sind ausserhalb unbekannt. Global in einer funktion heisst, dass die Variable das nächste Mal beim Aufruf der Funktion noch den vorherigen Wert hat.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

dada11

BeitragSa, Jul 29, 2006 13:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Sind GLOBAL ausserhalb.
 

Dreamora

BeitragSa, Jul 29, 2006 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann bräuchten wir wohl ein wenig mehr code.
Denn eigentlich sollte die global score:int und global bonus:string da ausreichend deklariert sein, damit es funktioniert. (level_bonus könntest du direkt local deklarieren in der Funktion)

Ich gehe davon aus, dass am Anfang des Programmes "strict" oder "superstrict" steht. Alles andere ist für BM leider nicht zu gebrauchen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group