Логическая ошибка в приложении для подключения к игре - PullRequest
0 голосов
/ 18 февраля 2019

Я разработал игру Tic Tac Toe как приложение, но получаю логическую ошибку.Сценарий 1: у меня есть 3 желтых встречных круга в позициях (0,3,6), но я получаю «Это ничья» вместо «Желтого выиграно»

Сценарий 2: В некоторых случаях ни один изигроки выигрывают игру, она должна показывать "Это

код:

package com.example.aravi.connect3withconstraintlayout;
import android.media.Image;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.support.v7.widget.GridLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;



import java.util.Arrays;

public class MainActivity extends AppCompatActivity {
// 0 - yellow 1 = red
int a=0;
int[] b={2,2,2,2,2,2,2,2,2};
int[][] winningPositons={‌{0,3,6},{0,1,2},{3,4,5},{6,7,8},{1,4,7},{2,5,8}, 
{0,4,8},{2,4,6}};
// 2 - not reserved
boolean playerisActive = true;

public void dropIn(View aravind) {

ImageView pointer = (ImageView) aravind;

int pointer_tag = Integer.parseInt(pointer.getTag().toString());
if (b[pointer_tag] == 2 && playerisActive) {
b[pointer_tag] = a;
pointer.setTranslationY(-500f);
if (a == 0) {
        pointer.setImageResource(R.drawable.yellow);
        a = 1;
} else {
        pointer.setImageResource(R.drawable.red2);
        a = 0;
}
pointer.animate().translationYBy(500f).setDuration(100);
System.out.println(Arrays.toString(b));
for(int[] winningPosition : winningPositons){
if(b[winningPosition[0]]==b[winningPosition[1]] && 
b[winningPosition[1]] == b[winningPosition[2]]  &&
b[winningPosition[0]] != 2){
playerisActive = false;
String winner = "Yellow";
if(b[winningPosition[0]] == 1)
{
                winner = "Red";
}

TextView vind = (TextView) findViewById(R.id.winnerMessage);
vind.setText(winner + " has won");
LinearLayout ara = (LinearLayout) findViewById(R.id.linearLayout);
ara.setVisibility(View.VISIBLE);
}  else{
     boolean gameisOver = true;
            for(int i : b){
                if(i == 2) {
                    gameisOver = false;
                }

}

if(gameisOver){
TextView vind = (TextView) findViewById(R.id.winnerMessage);
vind.setText("It's a Draw");
LinearLayout ara = (LinearLayout) 
findViewById(R.id.linearLayout);
ara.setVisibility(View.VISIBLE);
}
}
}
}
}

public void playAgain(View button){
playerisActive = true;
LinearLayout ara = (LinearLayout) findViewById(R.id.linearLayout);
ara.setVisibility(View.INVISIBLE);
a=0;
for(int i=0;i<b.length;i++){
    b[i]=2;
}

GridLayout gridlayout = (GridLayout) findViewById(R.id.gridLayout);
for(int g=0;g<gridlayout.getChildCount();g++){
    ((ImageView)gridlayout.getChildAt(g)).setImageDrawable(null);
}

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
}

XML:

 <?xml version="1.0" encoding="utf-8"?>
 <android.support.constraint.ConstraintLayout 
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".MainActivity">

<android.support.v7.widget.GridLayout
    android:id="@+id/gridLayout"
    android:layout_width="368dp"
    android:layout_height="360dp"
    android:layout_marginStart="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginBottom="8dp"
    android:background="@drawable/grid"
    app:columnCount="3"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.48"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:rowCount="3">

    <ImageView
        android:id="@+id/imageView4"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:onClick="dropIn"
        android:tag="0"
        app:layout_column="0"
        app:layout_row="0" />


    <ImageView
        android:id="@+id/imageView5"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginLeft="27dp"
        android:layout_marginTop="10dp"
        android:onClick="dropIn"
        android:tag="1"
        app:layout_column="1"
        app:layout_row="0" />

    <ImageView
        android:id="@+id/imageView6"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="10dp"
        android:onClick="dropIn"
        android:tag="2"
        app:layout_column="2"
        app:layout_row="0" />

    <ImageView
        android:id="@+id/imageView7"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:onClick="dropIn"
        android:tag="3"
        app:layout_column="0"
        app:layout_row="1" />

    <ImageView
        android:id="@+id/imageView8"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginLeft="27dp"
        android:layout_marginTop="10dp"
        android:onClick="dropIn"
        android:tag="4"
        app:layout_column="1"
        app:layout_row="1" />

    <ImageView
        android:id="@+id/imageView9"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="10dp"
        android:onClick="dropIn"
        android:tag="5"
        app:layout_column="2"
        app:layout_row="1" />

    <ImageView
        android:id="@+id/imageView10"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="20dp"
        android:onClick="dropIn"
        android:tag="6"
        app:layout_column="0"
        app:layout_row="2" />

    <ImageView
        android:id="@+id/imageView11"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginLeft="27dp"
        android:layout_marginTop="20dp"
        android:onClick="dropIn"
        android:tag="7"
        app:layout_column="1"
        app:layout_row="2" />

    <ImageView
        android:id="@+id/imageView12"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:onClick="dropIn"
        android:tag="8"
        app:layout_column="2"
        app:layout_row="2" />

</android.support.v7.widget.GridLayout>

<LinearLayout
    android:id="@+id/linearLayout"
    android:layout_width="wrap_content"
    android:layout_height="161dp"
    android:layout_marginStart="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginBottom="8dp"
    android:background="@color/colorAccent"
    android:orientation="vertical"
    android:padding="40dp"
    android:visibility="invisible"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.89">

    <TextView
        android:id="@+id/winnerMessage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textSize="30sp" />

    <Button
        android:id="@+id/playAgain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="playAgain"
        android:text="Play Again" />
</LinearLayout>
</android.support.constraint.ConstraintLayout>

Я приложил скриншот этой проблемы:
I have attached the screenshot of that issue

...