Je cherche à adapter le jeu classique "hélicoptère" (ie http://www.addictinggames.com/helicopter.html ), mais je n'ai pas encore compris comment créer le moteur de génération de murs.
Des pointeurs dans le pseudocode? Je ne suis pas tellement intéressé par les objets du milieu - seulement la méthodologie pour générer les côtés d'une manière qui augmente avec difficulté (se ferme plus, a des courbes plus inattendues) au fur et à mesure que le jeu progresse.
2d
mathematics
algorithm
davidkomer
la source
la source
Réponses:
Vous pouvez utiliser le bruit Perlin 1D pour cela. Voici une image de bruit 2D. J'ai pris des échantillons où se trouve la ligne rouge et je les ai multipliés avec une constante pour obtenir la ligne verte.
La constante avec laquelle vous multipliez les valeurs va déterminer la hauteur du bruit. Vous pouvez donc facilement augmenter la difficulté. Un autre avantage du bruit Perlin est qu'il peut générer un bruit mosaïque, de sorte que vous pouvez créer un niveau apparemment sans fin.
Si vous souhaitez créer un fond et un plafond, il est important de ne pas générer de zones infranchissables. La manière la plus simple serait simplement d'utiliser la partie "supérieure" du bruit (par exemple
1.0 - noiseValue
) comme plafond et la partie inférieure (noiseValue
) pour le bas (avec un certain décalage entre les deux bien sûr). Si cela semble trop terne, vous pouvez également envisager deux échantillons proches, par exemple. imaginez une autre ligne d'échantillonnage rouge d'un ou deux pixels vers le haut ou vers le bas. Cela donnera une onde similaire, mais pas identique.la source
BitmapData
objet et utiliser saperlinNoise
fonction. Le bitmap peut être de 800x3 pixels ou quelque chose d'extrême, alors vous pouvez simplement extraire les valeurs de ligne supérieure et inférieure (quelque chose comme(bitmap.getPixel(x,y) & 0xff) / 255.0
devrait vous donner des valeurs dans la0..1
plage.scaler
? Les valeurs que vous obtenez seront dans la plage de0..255
dans votre code.