Erfahrungsbalken - Ich finde den Fehler nicht?!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

mavi

Betreff: Erfahrungsbalken - Ich finde den Fehler nicht?!

BeitragMo, Mai 04, 2009 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
ep1=(xp/levelxp)*100
ep2=320/100
ep3=ep1*ep2

Color 75,107,101
Rect 160,430, 320,50, 1 ;interface background
Rect 160,415, 320,15,1 ;XP BAR #1
Color 255,0,0
Rect 160,415, ep3,15,1
Color 255,255,255
Rect 160,415, 320,15,0 ;XP BAR #2


Wie ihr sehen könnt, ist das ein auszug aus meinem quelltext ganz oben wird die größe des Balkenserrechnet danach angezeigt. So weit so gut, nur mir wird der Balken nicht angezeigt wo ist das Problem?

Code: [AUSKLAPPEN]

Nicdel

BeitragMo, Mai 04, 2009 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Du malst unten wieder drüber:

Code: [AUSKLAPPEN]

Color 255,255,255
Rect 160,415, 320,15,0 ;XP BAR #2
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Smily

BeitragMo, Mai 04, 2009 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Lass dir mal nach der Berrechnung alle beteiligten Variablen und der ergebnisse ausgeben:

Code: [AUSKLAPPEN]
 
print "xp " + xp
print "levelxp " + levelxp
print "ep1 " + ep1
print "ep2 " + ep2
print "ep3 " + ep3


Edit, ah, nicdel hat recht.
Hab die letzte codezeile garnicht richtig mitbekommen

edit2: Doch nicht.
der letzte parameter macht das rechteck ja unausgefüllt, also ist das sicher nur der rahmen.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

mavi

BeitragMo, Mai 04, 2009 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Smily hat Folgendes geschrieben:
Lass dir mal nach der Berrechnung alle beteiligten Variablen und der ergebnisse ausgeben:

Code: [AUSKLAPPEN]
 
print "xp " + xp
print "levelxp " + levelxp
print "ep1 " + ep1
print "ep2 " + ep2
print "ep3 " + ep3


Edit, ah, nicdel hat recht.
Hab die letzte codezeile garnicht richtig mitbekommen

edit2: Doch nicht.
der letzte parameter macht das rechteck ja unausgefüllt, also ist das sicher nur der rahmen.


meine logische denkweise:
ep1 = (xp/levelxp)*100 ; prozent ausrechnen
ep2 = 320/100 ;groeße des balkens bei 1% = 3,2PX
ep3 = ep1*ep2 ;1% = 3,2PX * 50 = 50% = 160 und 160 = 320/2 Very Happy?!

Smily

BeitragMo, Mai 04, 2009 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
mavi hat Folgendes geschrieben:
meine logische denkweise:
ep1 = (xp/levelxp)*100 ; prozent ausrechnen
ep2 = 320/100 ;groeße des balkens bei 1% = 3,2PX
ep3 = ep1*ep2 ;1% = 3,2PX * 50 = 50% = 160 und 160 = 320/2 Very Happy?!


Ist mir schon klar, was du dir dabei gedacht hast.

Hast du denn mal meinen tip mit den Debugausgaben getestet?
Ich wette, so findest du selbst deinen Fehler Wink
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

mavi

BeitragMo, Mai 04, 2009 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
ja hab ich pass auf Very Happy

dann steht da die ep1 = 0 immer null
bei ep2 = immer 3.2
bei 3 steht immer 0 Very Happy
komisch?!

Smily

BeitragMo, Mai 04, 2009 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
so, und nun lesen wir uns das durch und schon hast du deine lösung. Wink

Verwirrt mich nur grad in dem zusammenhang, das ep2 3.2 ist.
Verwendest du schon an anderer stelle eine floatvariable mit dem Namen?
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

mavi

BeitragMo, Mai 04, 2009 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Smily hat Folgendes geschrieben:
so, und nun lesen wir uns das durch und schon hast du deine lösung. Wink

Verwirrt mich nur grad in dem zusammenhang, das ep2 3.2 ist.
Verwendest du schon an anderer stelle eine floatvariable mit dem Namen?


Ich stehe aufm Schlauch Very Happy

Code: [AUSKLAPPEN]
ep1#=(ep#/lvlxp#)*100
ep2#=320/100
ep3#=ep1#*ep2#


Und natürlich vorher
xp = ep#
levelxp = lvlxp#

ich raste aus jetzt kommt ep1 und ep3 NAN => NOT A NUMBER!!! warum das denn? seit wann das? Very Happy
  • Zuletzt bearbeitet von mavi am Mo, Mai 04, 2009 17:53, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragMo, Mai 04, 2009 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Kleiner Hinweis:
100 = Interger
100.0 = Float
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)
 

mavi

BeitragMo, Mai 04, 2009 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
Kleiner Hinweis:
100 = Interger
100.0 = Float


ich brauch vllt Very Happy eine kommazahl Razz 320/100 = 3,2 und nicht 3? Very Happy

Smily

BeitragMo, Mai 04, 2009 17:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Und natürlich vorher
xp = ep#
levelxp = lvlxp#


Flüchtigkeitsfehler: Du hast die Variablen vertauscht.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

mavi

BeitragMo, Mai 04, 2009 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
nein?

XP = aktuelle XP
levelxp = maximale xp fürs level Very Happy

Xeres

Moderator

BeitragMo, Mai 04, 2009 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Um eine Kommazahl als Ergebnis zu erhalten, musst du mit Kommazahlen rechnen.
320/100 gibt immer 3, auch wenn der Wert in einer Float-Variable gespeichert wird. 320.0/100.0 liefert 3.2.
Um mit Variablen im richtigen Format zu arbeiten, nimm float(Variable).
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)

Smily

BeitragMo, Mai 04, 2009 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann erklär mir mal, wieso du den inhalt einer float-variable (0, da wahrscheinlich noch garnicht verwendet) in ein int überträgst? Wink

Edit:
Im grunde musst du nur ep1, ep2 und ep3 zum float machen, das ist alles, du machst es dir viel zu umständlich.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Ana

BeitragMo, Mai 04, 2009 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab das mal im Kopfgerechnet mit ausgedachten werten, so schwer ist das ja nich:

ep1 = 100/5000 = 0.02
ep2 = 320/100 = 3.2
ep3 = 0,02 * 3.2 = 0,64

solange du nicht eine # hinter die variable setzt sind sie ja ganzzahlig also kommen wir gerundet auf

ep1 = 100/5000 = 0
ep2 = 320/100 = 3
ep3 = 0 * 3 = 0

für
Code: [AUSKLAPPEN]


xp# = 100
levelxp# = 500

ep1#=(xp#/levelxp#)*100
ep2#=320/100
ep3#=ep1#*ep2#

Color 75,107,101
Rect 160,430, 320,50, 1 ;interface background
Rect 160,415, 320,15,1 ;XP BAR #1
Color 255,0,0
Rect 160,415, ep3#,15,1
Color 255,255,255
Rect 160,415, 320,15,0 ;XP BAR #2



funktioniert das ganze soweit denke ich, allerdings finde ich das blaugrün und rot nicht so passend Wink

solange der wert nicht angezeigt wird würde ich immer # dran setzen vorallem wenn geteilt wird, da hier immer nicht ganzzahlige werte rauskommen könnten und wenn dann mit dem endergebnis fuschen

Archangel

BeitragDi, Mai 05, 2009 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Smile
Habe schon des öfteren mit Ep-Balken experimentiert. Wenn du ganzzahlige (also keine kommastelligen) Werte haben möchtest.

Hier ist mein CODE mit Allen beschreibungen die mir eingefallen sind, hoffe sie sind nicht lästig oder machen das Ganze unübersichtlich:

Code: [AUSKLAPPEN]

;Willkommen bei meinem Beispiel eines EP-Balkens
;Die nachfolgenden Werte werden erst nach dem Start eingegeben und müssen nicht nachträglich verändert werden!
;Nur die Zuweisungen können nach belieben verändert und müssen nicht über das INPUT Element konfiguriert werden.
;Die Begrenzung auf 100% kann jederzeit entfernt werden um andere Dinge darzustellen.

;Grafischer Bildschirm mit den Einstellungen 640*480,
Graphics 640, 480, 0, 0

;Sonst "hängt" oder "laggt" das Programm
SetBuffer BackBuffer()

;ep$ muss ein Wert zugewiesen werden, sonst weiß das programm nicht zu welchem Wert es +1 dazuzählen soll (wenn er größer als 0 sein soll)
ep = Input("Anfangs EP-Wert (positive Zahl): ")
ep_soll = Input("Soll-EP Wert (mind. 1): ")
ep_plus = Input("Schrittgröße der EP (mind.1): ")

;Anfang Schleife
Repeat

;Macht den Bildschirm sauber
Cls

;Farbe der Folgenden Elemente
Color 255,0,0
;Zeichne Rechteck, x-Position, y-Position, x-Länge nach rechts, y-Länge nach unten, 0 = ungefüllt /// 1 oder "nichts" = gefüllt
;Wenn ungefüllt, dann hat die Umrandung 1 Pixel Stärke
Rect 219,279,200,15,0

;Steigender Balken (Rechteck) mit blauer Füllung
Color 0,0,255
Rect 220,280,ep_balken,13,1

;Text in der EP-Leiste
Color 255,255,255
Text 310,280, ep_haben + "%"
;Veranschaulichungstexte der einzelnen Werte
Text 1,1, "ep_soll = " + ep_soll
Text 1,20, "ep = " + ep
Text 1,40, "ep_haben = " + ep_haben
Text 1,60, "ep_plus = " + ep_plus

;Beschreibung des Schrittzählers ist (auch) im Programm lesbar
Color 255,0,0
Text 1,90, "Das Programm zählt immer " + ep_plus + " EP dazu! Plus und Minus auf dem Nummernblock"
Text 1,105, "ändern den Wert. Mit drücken der Leertaste wird der Ep-Balken auf 0 gesetzt."

;Berechnung der einzelnen Werte
;%-Zahl in der EP-Leiste
ep_haben = (ep*100)/ep_soll
;Prozentualer Anteil an dem 198 Pixel langen Ep-Balken
ep_balken = (ep_haben*198)/100
;Reduzierung bei überschreitung der 100% , z.B. 104% , auf 100%
ep_red = ep - ep_soll

;If-Befehle
;Der Wert des Balken darf nach überschreiten der 100% nicht ein weiteres mal gesteigert werden
If KeyHit(78) And ep_haben < 100  Then ep = ep + ep_plus
;Damit keine negativen % rauskommen
If KeyHit(74) And ep > ep_plus - 1 Then ep = ep - ep_plus
;Auf 100% reduzieren
If ep_soll < ep Then ep = ep - ep_red
;EP-Wert mit der Leertaste zurücksetzen
If KeyHit(57) Then ep = 0

;Den zuerst mit dem BackBuffer gemalten Bildschirm an den FrontBuffer (Sichtbarer Bildschirm, das Ding was vor dir steht
;schicken (flippen, die Bildschirme werden gewechslet) und dort angezeigt.
Flip
;Ende der Schleife, bei drücken der Taste 1 (Esc) wird die Schleife nichtmehr zu Repeat zurückgeführt, sondern es ghet mit
;dem nächsten Schritt (in diesem Fall END) weiter
Until KeyHit(1)

End

;                                                                  (c) 2009 A-o-H



Kannst du gerade so kopieren und jeh nachdem verändern.
Das Beispiel ist allerdings eher eine Visualisierung!!!##


--> bin halt jetzt nicht so ganz auf das Thema eingegeangen udn dein Problem gelöst, aber ich hoffe du kannst an meinem Beispiel dir vllt was abgucken und findest deinen Fehler!

Hoffe ich konnte helfen!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group