Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.183 Beiträge
 
Delphi 12 Athens
 
#6

AW: Spiel (Aspirin): Spieler kurzzeitig unverletzlich machen

  Alt 19. Okt 2012, 19:22
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Okt 2012 um 19:30 Uhr)
  Mit Zitat antworten Zitat