If elseIf Frage

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

dada11

Betreff: If elseIf Frage

BeitragDi, Jul 11, 2006 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich möchte ein Bonussystem in meinem Spiel einfügen. Da habei ich mal eine Frage.
Kann man das so machen ?
Code: [AUSKLAPPEN]
if anzahl_schüsse < 50 then bonus=1000
elseif anzahl_schüsse < 75 then bonus=500
elseif anzahl_schüsse < 100 then bonus=250
elseif anzahl_schüsse > 100 then bonus=0

Cardonic

BeitragDi, Jul 11, 2006 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Prinzip schon; aber bei deinem Beispiel wird bei genau 100 Schüssen kein Bonus definiert (Beim ersten mal gibts dann 0 Bonus, alle weitere Male gibts den Bonus der vorangehenden Runde)

Ich würde es daher so machen: Code: [AUSKLAPPEN]
If anz_schuesse <= 50 Then
   bonus = 100
ElseIf anz_schuesse <= 75 Then
   bonus = 500
ElseIf anz_schuesse <= 100 Then
   bonus = 250
Else
   bonus = 0
EndIf


mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

FOODy

BeitragDi, Jul 11, 2006 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Meinst du sowas? (kleines Beispiel)
Zitat:
Framework BRL.StandardIO

Local bonus = 0
Local anzahl_schuesse = 50

If anzahl_schuesse<50 Then bonus=1000
ElseIf anzahl_schuesse<75 And anzahl_schuesse>=50 Then bonus=500
ElseIf anzahl_schuesse<100 And anzahl_schuesse>=75 Then bonus=250
ElseIf anzahl_schuesse>=100 Then bonus=0

Print bonus



EDIT:
Da war einer schneller...
 

Dreamora

BeitragDi, Jul 11, 2006 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du die Reihenfolge umdrehst, musst du keine Doppelüberprüfungen machen, da die nachfolgenden nur geprüft werden, wenn man "besser" war als die vorherige Überprüfung.
Code: [AUSKLAPPEN]

if anzahl_schüsse >= 100 then bonus=0
elseif anzahl_schüsse < 100 then bonus=250
elseif anzahl_schüsse < 75 then bonus=500
elseif anzahl_schüsse < 50 then bonus=1000
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BladeRunner

Moderator

BeitragDi, Jul 11, 2006 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Nö Du.
erstmal: Umlaute sind in variablennamen nicht erlaubt.
zweitens wird bei deiner elseiorgie immer der niedrigst mögliche Wert genommen, also bekomme ich nur 250 oder 0 Punkte raus.
Empfehle daher:
if schusse >100 then bonus = 0
if scusse <100 then bonus = 250
if...

ist noch dazu kürzer als mit den ganzen elseifs.
Beachte dass die Reihenfolge hier wichtig ist.

Was die performance angeht wäre diese Lösung vielleicht interessant:
bonus = 1000 - (schusse/25)*250
if Bonus <0 then bonus = 0
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
 

dada11

BeitragDi, Jul 11, 2006 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Leutz.....

Das war wie immer schnell und kompetent Wink
Werde mal die Varianten durchspielen und sehen was am nesten passt.
Dada

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group