2011-07-24 3 views
3

私は愚かなゲームのためのランダムなレベルを生成しようとしています。ゲームは、可能なミラーの正方形のフィールドの周りにレーザー/検出器のペアを有することからなる。このように:今レーザーゲームのレベルをJavascriptで生成するには?

/* 

LLLLLLLLLL 
LmmmmmmmmL 
LmmmmmmmmL 
LmmmmmmmmL 
LLLLLLLLLL 

*/ 

、私はランダムな配置に依存する、と悪い位置を拒否することによって、非常に悪いレベルを生成するアルゴリズムを持っています。これはあまり高速ではなく、実際に私が持っているような種類のフィールドを生成しません。お気軽にお試しください。http://cmouse.desteem.org/laser/

ご迷惑をおかけして申し訳ございません。

現在のアルゴリズムは、このようなものになります。verifyPositionで

function createLevel: 
    for i=0 to mirrors: 
    mirrorLocation = pickRandomPosition 
    mirrorType = pickRandomType 

    if (verifyPosition(mirrorLocation, mirrorType)): 
     i = i - 1 
     next 
    else: 
     storeMirror(mirrorLocation, mirrorType) 

を、我々はそれがundetectedableミラーを避けるのを期待して、すべての4つの方向のレーザーに到達したミラーをテストします。やや退屈なコードなので、ここでは省略します。

+1

あなたのアルゴリズムは動作します –

+0

それは非常に遅いです:(。私はそれにリトライ回数を制限する必要があります。そうでなければ、フィールドを生成する年月がかかるでしょう。 – cmouse

答えて

2

複数のフィールドを複数回試していないことを確認する1つの方法は、フィールドを繰り返して、ミラーを置くか、何らかの確率で作成することです。ミラーを置く確率は#mirros/#fieldsでなければなりません。その結果、ミラーの予想数は最後に#mirrorsになります。

+0

Yey、今それは生成するようですはい、ありがとう! – cmouse

関連する問題