Frage zu FUNCTIONS
Übersicht

dada11Betreff: Frage zu FUNCTIONS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sind GLOBAL ausserhalb. | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group