Lebensanzeige (Rect)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: Lebensanzeige (Rect)

BeitragFr, Jan 29, 2010 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey!
Ich möchte eine Lebensanzeige mit Rect erstellen, nur weiß ich nicht wie ich das berechne.
Denn ich habe ein Maximalleben (z.B. 400) und ein aktuelles Leben (z.B. 320-> wir wurden gerade angegriffen Razz ), wenn ich aber ein neues Level erreicht habe wird das Maximalleben z.B. um 100 erhöht.
Wie kann ich meinen Rect-Balken jetzt mit immer der gleichen maximal Länge haben, und wenn man angegriffen wird das dann der Balken dementsprechend gekürzt wird?

(schwierig zu erklären, wer aber mal irgendein Onlinerollenspiel gespielt hat, dürfte wissen was ich meine ^^)

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Der Eisvogel

BeitragFr, Jan 29, 2010 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Also du berechnest den Prozentualen Anteil deines aktuellen Lebens von dem Gesamtleben und multiplizierst es mit der maximalen Lebensbalkenbreite. Verstanden?
Code: [AUSKLAPPEN]
Local width#=300
Local maxlive#=463
Local live#

Local timer=CreateTimer(60)

SetBuffer BackBuffer()
Repeat
   WaitTimer(timer)
   Cls
   
   If KeyDown(203) And live>0 Then live=live-1
   If KeyDown(205) And live<maxlive Then live=live+1
   
   Rect 10,10,live/maxlive*width,30

   
   Flip 0
Until KeyHit(1)
End
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Nicdel

BeitragFr, Jan 29, 2010 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ganz einfach:
BlitzBasic: [AUSKLAPPEN]
laenge = Float(leben)/maximal_leben*maximal_laenge
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

beanage.johannes

BeitragFr, Jan 29, 2010 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
ok... angenommen du hast 2 varibalen:
BlitzBasic: [AUSKLAPPEN]

Global leben:Float = 100
Global maxLeben:Float = 300

Nn musst du die BREITE (im beispiel 128 pixel) deiner Lebensleiste / maxLeben in eine Variable speichern, die nennen wir mal BlitzBasic: [AUSKLAPPEN]

lebenFaktor:Float = 128.0 / maxLeben

Willst du jetzt die anzeige z.B. mit rect zeichnen musst du nurnoch:
BlitzBasic: [AUSKLAPPEN]

Rect 0,0,lebenFaktor * leben,16

Schreiben Smile -> der lebenFaktor muss immer neu berechnet werden sobald sich maxLeben ändert!

[EDIT] Misst! viel zu spät^^;D
  • Zuletzt bearbeitet von beanage.johannes am Fr, Jan 29, 2010 17:06, insgesamt einmal bearbeitet

N0X

BeitragFr, Jan 29, 2010 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, danke!
Hat funktioniert! Smile

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%
 

primero

BeitragFr, Jan 29, 2010 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Am besten du verwendest den Dreisatz^^

400 ^= 100% (maximalleben)
1 ^= 100\400
320 ^= 100*320\400 (Aktueles Level)

im Grund würde der Code so aussehen:
Code: [AUSKLAPPEN]

Graphics 800,600,16,3
SetBuffer BackBuffer()

Global max_leben   ;maximales derzeitiges leben
Global leben      ;Tatsächliches leben
Global proz         ;Prozentuales Leben

Max_leben=400
leben=320

Repeat
   Cls

   If KeyHit(28) Then leben=leben-5         ;Enter verwundet den Spieler
   If KeyHit(57) Then leben=leben+5         ;leertaste heilt Spieler
   If KeyHit(59) Then max_leben=max_leben+50   ;F1 bringt einen ins höhere Level
   
   proz = 100 * leben / max_leben            ;berechnen des Prozentualen Wertes

   Color 200-(proz*2), proz*2 ,0            ;Farbliche änderung des Balkens.

   Rect 10,10,proz,20
   
   Color 255,255,255
   Text 10,50,"Aktueles Leben: "+leben+"  maximal: "+max_leben
   
   Flip
Until KeyDown(1)=1



hoffe das hilft

Edit: eindeutig zu langsam

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group