Ja, es ist sdauberer, 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');
Okay werd ich machen danke
" aber eigentlich solltest du die Herzen-Variable nicht verändern, wenn sie nicht verändert werden soll (not Spieler.Verletzbar)" meinst du damit das die herzen verringert werden sollen wenn der Spieler unverletzlich wird ?
Dann werd ich das dann machen wenn mein eigendliches Problem gelöst ist.