Ich bin grad dabei den Code noch ein bisschen zu optimieren. Dazu gehört die Positionen von den Pipes in Abhängigkeit der Bildschirmhöhe zu berechnen (bis jetzt liegen die Werte hardgecoded vor). Obwohl die mathematische Aufgabe dahinter nicht wirklich komplex ist, bekomm ich das grad nicht auf die Reihe
Wir haben ein Rohr, das ein bisschen kürzer ist als die "Spielfläche". Das Rohr soll oben und unten so platziert werden, dass in der Mitte ein zufällig großer Raum ist, wo man durchfliegen muss (FlappyBird eben). Die Röhren müssen immer im Sichtbereich sein.
Folgenden Code habe ich mir ausgedacht, macht aber falsche Berechnungen, da die Röhren nicht immer im Sichtbereich sind:
Delphi-Quellcode:
var PipeRange,GapSize: Integer;
YOff,YMinOff,YMaxOff: Integer;
begin
PipeRange:= (GamePanelHeight mod PIPE_HEIGHT); // Wie Viel Platz ist verfügbar, um nach oben oder unten zu verschieben
GapSize:= RandomRange(120,170); // die Lücke zum durchfliegen
YMinOff:= -PipeRange+Round(GapSize/2);
YMaxOff:= GamePanelHeight-Round(GapSize/2);
YOff:= RandomRange(YMinOff,YMaxOff);
FPipeAPos:= (YOff-PIPE_HEIGHT)-Round(GapSize/2)+PipeRange;
FPipeBPos:= (YOff-PipeRange)+Round(GapSize/2);
{...}