2015-08-09 99 views
-1

在下面的代碼中,它與井字遊戲有關,我編寫了一個循環,應循環9次。但我點擊了9次以上,循環未完成。我在這段代碼中找不到任何錯誤。for循環未完成

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    images[0]= (ImageView) findViewById(R.id.img1); 
    images[1]= (ImageView) findViewById(R.id.img2); 
    images[2]= (ImageView) findViewById(R.id.img3); 
    images[3]= (ImageView) findViewById(R.id.img4); 
    images[4]= (ImageView) findViewById(R.id.img5); 
    images[5]= (ImageView) findViewById(R.id.img6); 
    images[6]= (ImageView) findViewById(R.id.img7); 
    images[7]= (ImageView) findViewById(R.id.img8); 
    images[8]= (ImageView) findViewById(R.id.img9); 

    Log.i("LOG", "hiiiii "); 
    for (int i=0 ; i<9 ; i++) { 
     Log.i("LOG", "in: "+i); 
     images[i].setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       ImageView imageview= (ImageView) view; 

       if (playerone)  { 

        cell[0]="o"; 
        imageview.setImageResource(R.drawable.o); 
       }   
       else {imageview.setImageResource(R.drawable.z);cell[0]="z";} 
       playerone=!playerone; 
      } 




     }); 
     Log.i("LOG", "in: "+i); 
    } 

    if ((images[0]==images[1]&& images[1]==images[2]) 
    || (images[3]==images[4]&& images[4]==images[5]) 
    || (images[6]==images[7]&& images[7]==images[8]) 
    || (images[0]==images[3]&& images[3]==images[6]) 
    || (images[1]==images[4]&& images[4]==images[7]) 
    || (images[2]==images[5]&& images[5]==images[8]) 
    || (images[0]==images[4]&& images[4]==images[7]) 
    || (images[2]==images[4]&& images[4]==images[6]) 

      ){Toast.makeText(getApplicationContext(), "winner", Toast.LENGTH_LONG).show();} 

} 

}

+0

我不知道android,但是看起來您已經在9個不同的對象上註冊了9個監聽器,無論您點擊了多少次,它們都會被調用,例如:超過9次。 – user2268997

回答

0

實際上,for循環已經完成一次顯示的活動。

你需要做的是在OnClickListener裏執行一個檢查,點擊一個已經佔用的方塊不起作用。在這種情況下,點擊9次後,就不會有可以與之互動的圖片。

+0

謝謝。我沒有足夠的聲望來檢查你的答案。 – abcsd

+0

不客氣。你不能*注意它,但你可以*接受*它。 – Glorfindel