2016-03-24 5 views
0

私はC言語の知識を習得するために取り組んでいる単純なゲームプロジェクトを持っています。私の地形の「地図」を含んでいる配列を持っている瞬間、アイテムと敵も含まれています。これはうまくいきますが、それを改善するために、2つの配列が重なっているので、アイテムを地形に置くことはありませんが、地形と重なる別のアイテム配列に配置します。 私はそれを下の方法で近づけました。1つの配列を評価しているが値を別のものに書き込む問題

void items(int * terrainMap, int itemCount, int * itemMap){ 
    int newx = getRand(0, xsize); 
    int newy = getRand(0, ysize); 
    int count = 0; 
    while (count < itemCount){ 
     if (getCell(newx, newy, terrainMap) == corridoor|| getCell(newx, newy, terrainMap) == floor){ 
      setCell(newx, newy, chest, itemMap); 
      count++; 
     } 
     else { 
      newx = getRand(0, xsize); 
      newy = getRand(0, ysize); 
     } 
    } 
} 

両方の配列が初期化され、地形がマップされ、項目が空のタイルに設定されます。私がしようとしていることは、if条件で地形が通過可能かどうか(廊下か床か)をチェックし、もしそうなら胸を置いて地形ではなく項目配列に置きます。上記のコードは、私が地形に胸を置いた場合に機能しますが、アイテム配列に1つの胸を配置するようにしか見えません。

私が間違っている場所について教えてもらえますか?または、この方法のいくつかの改善を提案しますか?非常に前もってありがとう - 私は非常にすべてのアドバイスが素晴らしいので、Cとコーディングに新しいです。

+0

ステップスルーデバッガを使用しましたか? – Dai

答えて

1

あなたは(あなたが他を当たっていない)の胸を追加した後newxnewyを変更しないので、あなたは、同じ位置にitemCount回胸を追加してしまいます。

newxnewyをelseの外側に移動して修正することができます(ループに入るたびに更新する)。また、その位置に胸がまだないかどうかをチェックして、その胸がたくさ​​んあることを保証することもできます。

+0

それは華麗です、私は実際にはそれを見つけられなかったとは信じられません。どうもありがとう。私はデバッガの使い方を読んでみる必要があると思います... –

関連する問題