Erfahrungsbalken - Ich finde den Fehler nicht?!
Übersicht

maviBetreff: Erfahrungsbalken - Ich finde den Fehler nicht?! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja hab ich pass auf ![]() dann steht da die ep1 = 0 immer null bei ep2 = immer 3.2 bei 3 steht immer 0 ![]() komisch?! |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
so, und nun lesen wir uns das durch und schon hast du deine lösung. ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Smily hat Folgendes geschrieben: so, und nun lesen wir uns das durch und schon hast du deine lösung.
![]() 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 ![]() 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? ![]() |
||
- Zuletzt bearbeitet von mavi am Mo, Mai 04, 2009 17:53, insgesamt einmal bearbeitet
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
mavi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Xeres hat Folgendes geschrieben: Kleiner Hinweis:
100 = Interger 100.0 = Float ich brauch vllt ![]() ![]() ![]() |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nein?
XP = aktuelle XP levelxp = maximale xp fürs level ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann erklär mir mal, wieso du den inhalt einer float-variable (0, da wahrscheinlich noch garnicht verwendet) in ein int überträgst? ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo ![]() 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! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group