2017-07-18 10 views
-3

私はJavaのアンドロイド開発の初心者です。私はチックタックのつま先ゲームを作成しました。私はゲームのコードを完成させました。私はちょうどインストラクターからオンラインで学んでいるように、私はゲームの勝利条件について混乱しています。 これは、これはコードですゲームについて私は無知だ特定のコード誰でもチックタックトウの勝利条件について説明できますか?

//winning condition 
//for(int [] winningPosition : winningPositions){ 
     if(gameState[winningPosition[0]] == gameState[winningPosition[1]] && 
       gameState[winningPosition[1]] == gameState[winningPosition[2]] && 
       gameState[winningPosition[0]] != 2) 

です。

public class MainActivity extends AppCompatActivity { 

//0 = yellow , 1 = red; 
int activePlayer = 0; 
boolean gameIsActive = true; 
//2 mean unplayed 
int [] gameState = {2,2,2,2,2,2,2,2,2}; 
int [][] winningPositions = {{0,1,2},{3,4,5},{6,7,8},{0,3,6},{1,4,7},{2,5,8},{0,4,8},{2,4,6}}; 

public void dropIn (View view) { 

    ImageView counter = (ImageView) view; 


    int tappedCounter = Integer.parseInt(counter.getTag().toString()); 
    if (gameState[tappedCounter] == 2 && gameIsActive) { 

     gameState[tappedCounter] = activePlayer; 


     counter.setTranslationY(-1000f); 
     if (activePlayer == 0) { 
      counter.setImageResource(R.drawable.yellow); 
      activePlayer = 1; 
     } else { 

      counter.setImageResource(R.drawable.red); 
      activePlayer = 0; 
     } 

     counter.animate().translationYBy(1000f).rotation(360).setDuration(300); 
     for(int []winningPosition : winningPositions){ 

      if(gameState[winningPosition[0]] == gameState[winningPosition[1]] && 
        gameState[winningPosition[1]] == gameState[winningPosition[2]] && 
        gameState[winningPosition[0]] != 2) 
          { 
           //Someone has won! 
           gameIsActive = false; 
           String winner = "Red"; 
           if(gameState[winningPosition[0]] == 0){ 

           winner = "Yellow"; 
          } 
           LinearLayout layout = (LinearLayout) findViewById(R.id.playAgainLayout); 
           TextView winnerMessage = (TextView) findViewById(R.id.winnerMessage); 
           winnerMessage.setText(winner +" has won!"); 
           layout.setVisibility(View.VISIBLE); 




      } else { 

       boolean gameIsOver = true; 
       for(int counterState : gameState){ 

        if(counterState == 2) gameIsOver = false; 


       } 
       if(gameIsOver){ 

        LinearLayout layout = (LinearLayout) findViewById(R.id.playAgainLayout); 
        TextView winnerMessage = (TextView) findViewById(R.id.winnerMessage); 
        winnerMessage.setText("It's a draw!"); 
        layout.setVisibility(View.VISIBLE); 

       } 
      } 
     } 

    } 


} 
+0

あなたはそれについて何のことがわかりませんか? – QBrute

+0

だから何が問題なのですか? –

+0

彼はTicTacToeのルールを要求しています...これはプログラミングに関する質問ではありません。 – Nathan

答えて

1

winningPositionsは、あなたが勝つために保持することができ、すべての可能なフィールドの組み合わせを保持している(私はちょうど私が尋ねるしようとしているものを理解するために、関連するコードを表示するように私は、全体のコードを掲載しませんでした)ゲーム(3つの行、3つの列、2つの対角線)。あなたのコードはwinningPositionsを繰り返し、3人のフィールドがすべて同じ人に保持されているかどうか、そしてその人は誰でもないことを確認します(//2 mean unplayed)。

0

このゲームの勝者は、縦、斜線または水平線の行の3つの記号(十字または円)と一致する必要があります。どの画像でも、サークルでプレーしているプレーヤーが勝っている添付画像を参照してください。 Vertical match

[ Diagonal match match[2]Horizontal

0

基本的にそれが何をするか、これは次のとおりです。(3つのボックスのすべての可能なラインである)すべての受賞状態については 、それは彼らが同じ状態(X、Oまたはを持っているかどうかを知りたいですボイド)、そしてそれらが無効でないなら(それは私が2番が意味するものです)。

関連する問題