2012-05-01 3 views
1

私は地雷探知機のゲームを開発しており、鉱山を割り当てていますが、数字を生成するために今どこに鉱山があるか確認しなければなりません。問題は、私が列と行を検証しているときに、私はゲームフィールドから出てこないプログラムが必要だということです。ここでGamefield VB.NETを確認してください

は私のコードは、今のように見える方法は次のとおりです。

Public Sub avisinhos(ByVal line, ByVal column) 
    If mat(line, column) = 0 Then 
     mat(line, column) = -1 
     numbandeiras = numbandeiras + 1 
    End If 
    For auxlinha = -1 To 1 
     For auxcolumn = -1 To 1 

     Next 
    Next 
End Sub 

は、どのように私はゲームフィールドから出ていないことを確認するために、IF関数を作成するのですか? よろしくお願いします。私は、ループを気にしないだろうけれども

答えて

1

擬似コード

int linestart = -1; 
int lineend = 1; 
int colstart = -1; 
int colend = 1; 

Assuming a 10 x 10 grid (zero based) 

if line < 2 linestart = 0 
if line > 8 lineend = 0 
if column < 2 colstart = 0 
if column > 8 colend = 0 

For auxlinha = linestart To lineend 
    For auxcolumn = colstart To colend 
    // check 
    Next  
Next 

は個人的に、彼らは何も

HasMineAbove =(ライン> 1)と(gamefield [行-1、列にはほとんどを追加します] = MinePresentValue

は私のアプローチとなり、いずれかでそれをすべて行う。

ないと言及して巨大な潜在的な混乱auxlinhaとauxcolumnが両方ともゼロであるとき...

+0

ありがとう、私はそれを実装しようとします。 – joao

1

あなたのコードが何を言っているのかよく分かりません。略語とすべての小文字の名前を使用しているため、これはちょっと暗いです。あなたはキャメルケーシングを試して、単語をより完全にスペルすることができます。インテリセンスはあなたの友人です。 =)

限られた範囲の値をループする場合は、係数演算子(%)を使用して値を制限することができます。あなたは0-7の間の値とあなたが12の値で終わる維持する必要がある場合たとえば、ちょうどバック4の値との範囲内にループに8のモジュラスを取る:

12 % 8 = 4 
9 % 8 = 1 
15 % 8 = 7 
24 % 8 = 0 

Iこれはあなたの特定の質問に答えることはできませんが、便利なテクニックが役立つかもしれません。

+0

はい、まあ、それは私の質問に直接答えるものではありませんが、それは他のコーディングに役立ちます。コーディングスタイルのヒントは役に立つはずですので、ありがとうございます。挨拶、ジョアオ。 – joao

+0

私は助けることができてうれしいです。 =) – BlazeCell

関連する問題