2016-11-01 10 views
1

私はAndroid用の小さなゲームを作ろうとしています。それは、ライトをオンまたはオフにすることです。私は25のImageButtonを持っています。私が1つを押すと、隣接する(上、左、下、右)ものも必要です。 私はこのボタンを取得/識別する方法を見つけることができないということです。 "view.getX()"と "view.getY()"を使ってみましたが、正しい方法(もしあれば)を実装する方法はわかりません。隣接するImageButtonsの画像を変更する(Android)

public void change(View view) 
{ 
    String state = view.getTag().toString(); 
    if (state.equals("on")) 
    { 
     view.setBackgroundDrawable(getResources().getDrawable(R.drawable.lightOff)); 
     view.setTag("off"); 
     lightsOn -= 1; 
     txtNumLights.setText(String.valueOf(lightsOn)); 
    } 
    if (state.equals("off")) { 
     view.setBackgroundDrawable(getResources().getDrawable(R.drawable.lightOn)); 
     view.setTag("on"); 
     lightsOn += 1; 
     txtNumLights.setText(String.valueOf(lightsOn)); 
    } 
} 

私はそれがオンまたはオフかどう知っているとON光の数とtxtViewを設定するためにタグを使用します。 は、ここで私はONEボタンを変更するために使用するコードです。 しかし、ポイントに、どのように私はこのものに隣接するものを得るのですか? ありがとうございます。

+2

私は、何をすべきか、そのグリッドを使用して、にすべてのボタンインスタンスをソートする2次元配列をお勧めしますディスプレイ上で直接見つけるよりも簡単です。 – TWL

答えて

0

ボタンを二次元配列に格納する必要があります。

ボタンをクリックすると、興味のあるボタンにタグと背景が設定されます。

擬似コード:あなたはArrayOutOfBoundsExceptionを生成しない気をつけなければならない実装に

If (button_matrix[row][column] is clicked) then 
    Set_tag_background (button_matrix[row-1][column]) 
    Set_tag_background (button_matrix[row+1][column]) 
    Set_tag_background (button_matrix[row][column-1]) 
    Set_tag_background (button_matrix[row][column+1]) 
    Set_tag_background (button_matrix[row][column]) 
    ... 

...

関連する問題