Zur Themenübersicht        

Das Billardprojekt 3.2. : Bessere Klasse TSpielfeld

Projektdatei der zweiten (besseren) Lösung:

Zweite bessere Lösung:

Die Steuerung in der Projektdatei lässt sich wesentlich vereinfachen, wenn das Spielfeld in der Lage ist, Fragen nach seinen Rändern selbst zu beantworten. Damit erhalten wir:

Ergänzen wir auch die Kugelklasse um einen Anfrage für die Geschwindigkeit:

Dann ist der Code der zugehörigen Projektdatei icht mehr von der Gedächtnisleistung des Programmierers abhängig:
(Wenn auch etwas länger)

Nur die Schleife der Projektdatei ändert sich zu:


Die Koordinaten zur Reflektion der 
Kugel werden jetzt vom Spielfeld
selbst geliefert.
Auch die Kugel ändert ihre
Geschwindigkeit immer passend,
ohne dass der Programmierer
über die richtigen Zahlenwerte
nachdenken muss.
  repeat
    ersteKugel.bewege;
    zweiteKugel.bewege;
    if ersteKugel.GibXPos + 12 > dasSpielfeld.rechterRand then
       ersteKugel.setzeGeschwindigkeit(-ersteKugel.GibGeschwindigkeit);
    if ersteKugel.GibXPos - 12 < dasSpielfeld.linkerRand then
       ersteKugel.setzeGeschwindigkeit(-ersteKugel.GibGeschwindigkeit);
    if zweiteKugel.GibXPos + 12 > dasSpielfeld.rechterRand then
       zweiteKugel.setzeGeschwindigkeit(-ersteKugel.GibGeschwindigkeit);
    if zweiteKugel.GibXPos - 12 < dasSpielfeld.linkerRand then
       zweiteKugel.setzeGeschwindigkeit(-ersteKugel.GibGeschwindigkeit);
    meineUhr.warte(1)
  until dieMaus.istGedrueckt;