Ich bin gerade dabei, das klassische "Hubschrauber" -Spiel anzupassen (dh http://www.addictinggames.com/helicopter.html ), aber ich habe noch nicht herausgefunden, wie die Walls-Generation-Engine erstellt werden kann.
Irgendwelche Hinweise auf den Pseudocode? Die Objekte in der Mitte interessieren mich nicht so sehr - nur die Methode zur Erzeugung der Seiten in einer Weise, die im Verlauf des Spiels mit zunehmender Schwierigkeit zunimmt (enger wird, unerwartetere Kurven aufweist).
2d
mathematics
algorithm
Davidkomer
quelle
quelle
Antworten:
Sie könnten dafür 1D Perlin-Rauschen verwenden . Hier ist ein Bild von 2D-Rauschen. Ich habe Proben mit der roten Linie genommen und mit einer Konstanten multipliziert, um die grüne Linie zu erhalten.
Die Konstante, mit der Sie die Werte multiplizieren, bestimmt die Höhe des Rauschens. So können Sie die Schwierigkeit leicht erhöhen. Ein weiterer Vorteil von Perlin-Rauschen ist, dass es kachelbares Rauschen erzeugen kann, so dass Sie einen scheinbar endlosen Pegel erzeugen können.
Wenn Sie einen Boden und eine Decke erstellen möchten, ist es wichtig, dass Sie keine unpassierbaren Bereiche erzeugen. Der einfachste Weg wäre, einfach den "oberen" Teil des Geräusches (z. B.
1.0 - noiseValue
) als Decke und den unteren Teil (noiseValue
) für den Boden zu verwenden (natürlich mit etwas Versatz dazwischen). Wenn Ihnen das zu langweilig erscheint, können Sie auch zwei nahe Beispiele in Betracht ziehen, z. Stellen Sie sich eine weitere rote Abtastzeile mit ein oder zwei Pixeln nach oben oder unten vor. Dies ergibt eine ähnliche, aber nicht identische Welle.quelle
BitmapData
Objekt erstellen und seineperlinNoise
Funktion verwenden. Die Bitmap kann 800x3 Pixel oder etwas Extremes sein, dann können Sie einfach die oberen und unteren Zeilenwerte extrahieren (so etwas(bitmap.getPixel(x,y) & 0xff) / 255.0
sollte Ihnen Werte im0..1
Bereich geben.scaler
? Die Werte, die Sie erhalten, liegen im Bereich0..255
Ihres Codes.