Rest zwischen 2 Zahlen + Addieren

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Raiden93

Betreff: Rest zwischen 2 Zahlen + Addieren

BeitragDi, Nov 23, 2010 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey,
ich habe ein kleines Problem.
Ich habe eine Level anzeige die bei 100% Erfahrung auch aufs nächste Level umsteigt.
Leider aber bleiben die Restlichen Erfahrung Punkte weg.

Erfahrung = 120
Level umstieg bei = 100
Restlichen 20 verschwinden....
Dabei soll es so aussehen:

Erfahrung = 120
Level umstieg auf Level 2 bei 100 Erfahrung
Restlichen 20 sollen bei Level 2 wieder dazu Addiert werden.

Ich hoffe ich könnte mir ein gutes Beispiel geben, bin wirklich am verzweifeln:/

MFG:
RaidenKK/Kevin

Hubsi

BeitragDi, Nov 23, 2010 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Const levelsprung=100
If erfahrung>=levelsprung Then
erfahrung=erfahrung-levelsprung
level=level+1
EndIf


Nur mal so Pseudo. Oder habe ich das Problem nicht verstanden?
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Raiden93

BeitragDi, Nov 23, 2010 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast es jetzt so gemacht:

Levelsprung sobald Erfahrung auf 100 ist.
Das ist aber nicht das Problem würde ich jetzt.
120 Erfahrung kriegen würde ich zwar ein Level Kriegen da es über 100 geht aber was ist mit den Restlichen 20 Erfahrungspunkten die sollen dann beim nächsten level wieder zu Addiert werden^^

Thunder

BeitragDi, Nov 23, 2010 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Die 20 Erfahrungspunkte würden nach Hubsis Code auch berücksichtigt:
BlitzBasic: [AUSKLAPPEN]
Const levelsprung=100
If erfahrung>=levelsprung Then ; Angenommen erfahrung=120
erfahrung=erfahrung-levelsprung ; erfahrung wird zu 20
level=level+1 ; level wird erhöht
EndIf
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Xeres

Moderator

BeitragDi, Nov 23, 2010 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
...was sich auch schreiben ließe als
BlitzBasic: [AUSKLAPPEN]
Const levelsprung=100
If erfahrung>=levelsprung Then ; Angenommen erfahrung=120
erfahrung=erfahrung Mod levelsprung ; erfahrung wird zu 20
level=level+1 ; level wird erhöht
EndIf
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Raiden93

BeitragDi, Nov 23, 2010 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
muss das const den bleiben da sich der wert nach jedem Level ändert?

Xeres

Moderator

BeitragDi, Nov 23, 2010 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Nope, funktioniert mit Variablen genauso.
Aber das merkst du ja selbst wenn du's ausprobierst.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Thunder

BeitragDi, Nov 23, 2010 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, das Const kannst du durch Global/Local ersetzen:
BlitzBasic: [AUSKLAPPEN]
Global levelsprung=100
If erfahrung>=levelsprung Then
erfahrung=erfahrung Mod levelsprung ; Xeres' Vorschlag ist gut
level=level+1
levelsprung=levelsprung*1.5+20 ; Als Beispiel
EndIf

OT: Hättest du das nicht selbst auch rauskriegen können? Also, wenn man etwas drüber nachdenkt oder schnell ein Beispiel tippt, sollte das doch möglich sein Rolling Eyes

Edit: Da hab ich mich getäuscht

mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
  • Zuletzt bearbeitet von Thunder am Di, Nov 23, 2010 21:24, insgesamt 3-mal bearbeitet

Hubsi

BeitragDi, Nov 23, 2010 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein. Gerade deshalb habe ich ja eine Konstante verwendet. Du machst einfach eine lokale draus und schon rennts Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Raiden93

BeitragDi, Nov 23, 2010 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ach so läuft das Very Happy danke ich war total verwirrt bei Mod

Diedel

BeitragDi, Nov 23, 2010 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Es wurde geschrieben:
BlitzBasic: [AUSKLAPPEN]
Global levelsprung=100
If erfahrung>=levelsprung Then
erfahrung=erfahrung Mod levelsprung ; Xeres' Vorschlag ist gut
level=level+1
levelsprung=levelsprung*1.5+20 ; Als Beispiel
EndIf


Wo wir gerade schon mit dem Befehl mod anzufangen scheinen, davon ist nämlich nur abzuraten, einmal Folgendes Beispiel:
Was passiert, falls jetzt die Erfahrung einmal z.B. 220 werden sollte? Level wird erhöht, aber der Rest von 220/100 (in diesem Beispiel) ist 20 anstatt der geforderten 120, also bleibt lieber doch beim Subtrahieren Wink :
BlitzBasic: [AUSKLAPPEN]
erfahrung=erfahrung-levelsprung


Das wollte ich nur der Vollständigkeit halber noch erwähnt haben,
lg Diedel
Owned.
  • Zuletzt bearbeitet von Diedel am Di, Nov 23, 2010 18:10, insgesamt einmal bearbeitet
 

undefined

BeitragDi, Nov 23, 2010 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Und um es komplett zu machen, das Ganze am besten noch in eine While statt in eine If rein:

Code: [AUSKLAPPEN]
Global levelsprung=100
While erfahrung>=levelsprung
  erfahrung=erfahrung-levelsprung
  level=level+1
  levelsprung=levelsprung*1.5+20 ; Als Beispiel
Wend

Xeres

Moderator

BeitragDi, Nov 23, 2010 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Guter Hinweis! (@ Diedel)
Wähle die Methode danach aus, welchen Effekt du beabsichtigst.
Wenn generell gilt Erfahrung << Levelgrenze ist mod okay. Das verhindert das Spieler auf einer niedrigen Stufe durch den Kill eines (Boss)Monsters (durch Bugs z.B.) mehr als ein Level aufsteigt.

Nachtrag
undefined: Wenn die Abfrage eh in der Hauptschleife steht, ist das aber nicht zwingend nötig.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group