Ja, es ist sauberer, aber auch Fehlerunanfälliger.
Ein Boolean hat eben nicht nur zwei Zustände wie True und False, sondern mindestens 256. (Boolean = 1 Byte und z.B. LongBool = 4 Byte)
Ganz genau ist es so definiert:
False = 0
True <> 0
Aber da eine Konstante nur einen Wert haben kann, ist in Delphi das True als 1 definiert. (in C-Sprachen dagegen meist als
-1)
=True kann daher eine falsches Ergebnis liefern.
Das ist so ähnlich, wie bei den Floats (Fließkommazahlen ala Single oder Double), walche man auch nicht unbedingt auf "Gleichheit" prüfen sollte.
Delphi-Quellcode:
var B: Boolean;
B := Boolean(2);
if B = True then
ShowMessage('B = True');
if B = False then
ShowMessage('B = False');
if B then
ShowMessage('B');
if not B then
ShowMessage('not B');
Das Herz soll doch aber nur abgezogen werden, wenn man verletzbar ist.
Ist man
nicht verletzbar, dann darf auch nichts abgezogen werden, sonst stirbt man ja dennoch.
Und wieviele Leben die Bilder anzeigen ist ja egal ... es kommt doch auf die Variable drauf an.
Abgesehn davon, daß die Bilder besser mit der Variable übereinstimmen sollten, sonst sieht man ja was Falsches.
Du mußt also die Variable abhängig von "Verletzbar" verändern, oder eben nicht.
Aber die Bilder dennoch das anzeigen lassen, was in der Variable steht.
PS: Wenn du etwas
OOP-iger werden willst, dann erstell dir eine Komponente "THerzen", welche ein Property Herzen (Integer) besitzt, worüber man diesen Wert setzen und auslesen kann.
Und diese Klasse kümmert sich "intern" auch um die Anzeige ihrer Herz-Bildchen, entsprechend dem Wert.