2012-02-23 3 views
0

画面上に気泡(Imageview)が多いところで小さなバブルワードゲームを作っています。今すでにlevelScreenに置か15に気泡があるでしょう...三つのレベルがあります...そのBGとその15オブジェクトとの最初のレベルはこれがLEVEL1ランダムな画像ビューを解除不可にしたい

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:background="@drawable/gmw_01" 
android:onClick="onClick" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:id="@+id/relativeLayout1" > 
<ImageView 
android:onClick="objectClick" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:id="@+id/imageView1" 
android:src="@drawable/bb01" 
android:layout_marginLeft="998dp" 
android:layout_marginTop="593dp" 
android:layout_alignParentTop="true" 
android:layout_alignParentLeft="true"/> 
<ImageView 
android:onClick="objectClick" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:id="@+id/imageView2" 
android:src="@drawable/bb02" 
android:layout_marginLeft="20dp" 
android:layout_marginTop="39dp" 
android:layout_alignParentTop="true" 
android:layout_alignParentLeft="true"/> 
<ImageView 
android:onClick="objectClick" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:id="@+id/imageView3" 
android:src="@drawable/bb03" 
android:layout_marginLeft="497dp" 
android:layout_marginTop="153dp" 
android:layout_alignParentTop="true" 
android:layout_alignParentLeft="true"/> 
のための私のxmlである1つのレイアウトのlevel.xml で言います

このような15のバブルを含むイメージビュー...

ここでは、レベルが選択されている画面が1つあります。そのgamplayScreen.xmlにlevel1を配置します。つまり、gamePlayScreenにinflateします左上のヘッドアップディスプレイと変化し続けるこのレベルの画面....

インフラの前私のレベルgamePlayScreenに....私は、ユーザーがクリック可能なランダム8つのバブルをピックアップしたい。すべてのレベルでは15目に見える泡が、私はランダム8にそのレベルで、それぞれの泡に応じて、すべてのレベルを選択したい...ここ が今出ているランダムな8つのオブジェクトを実行する方法gamePlayActivity

public class GamePlayActivity extends Activity { 

    static int ObjectsFound; 


    @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.gameplay); 


      // ViewGroup where n number of view is going to added 
      ViewGroup layout= (ViewGroup) findViewById(R.id.GamePlayScreen); 

      // inflating the layout depending on the level 
      View level = View.inflate(this, LevelSelectionActivity.levelscreen, null); 
    // adding level bg for the respective selected level 
      layout.addView(level); 
} 

public void objectClick(View objectClicked) 
    { 
     Toast msg; 
     int Object = objectClicked.getId(); 
     ImageView img= (ImageView)findViewById(objectClicked.getId()); 
     switch (Object) { 
     case R.id.imageView1: 
      img.setVisibility(View.INVISIBLE); 
      msg = Toast.makeText(GamePlayActivity.this, "Bubble Found", Toast.LENGTH_SHORT); 
      msg.setGravity(Gravity.CENTER, msg.getXOffset()/2, msg.getYOffset()/2); 
      msg.show(); 

      break; 

     } 
} 

ですが存在します私はImageViewで持っている15オブジェクトのうち、私はそれをnonclickableとして設定したいのですか? 私はイムあまりにも混乱して...

答えて

1

擬似コードは、これをテストしていませんが、あなたのために働く必要があることを説明しました願っています:

private int[] ids = { 
    R.id.imageView1, 
    R.id.imageView2, 
    R.id.imageView3, 
    R.id.imageView4, 
    ... 
} 


public void randomize() { 
    Random generator = new Random(); 
    for(int i = 0; i<8 ; i++) { 
     while(true) { 
      View v = findViewById(generator.nextInt(ids.length)); 
      if(!v.isClickable()) { 
       v.setClickable(false); 
       break; 
      } 
     } 
    } 
} 

基本的に、我々はランダムな8つのビューを選択し、非として、それらを設定します - クリック可能。既にクリック可能ではないビュー(以前のステップで作成したものだからです)を釘付けにした場合、私たちは再読み込みを行います。がんばろう!