aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com
diff options
context:
space:
mode:
authorMaksymilian Jopek <maks@jopek.eu>2022-12-07 22:54:17 +0100
committerMaksymilian Jopek <maks@jopek.eu>2022-12-07 22:54:17 +0100
commit82652521d71c7fb01762203d740b7c73068098c0 (patch)
treeede94d3c8a14138485157815d57116cc56536159 /app/src/main/java/com
parentd606f2e9708301b26903bfde6f7c945af790fdee (diff)
downloadpai-fillo-nai-82652521d71c7fb01762203d740b7c73068098c0.tar.gz
pai-fillo-nai-82652521d71c7fb01762203d740b7c73068098c0.tar.zst
pai-fillo-nai-82652521d71c7fb01762203d740b7c73068098c0.zip
v1.1.0
Diffstat (limited to 'app/src/main/java/com')
-rw-r--r--app/src/main/java/com/jopek/pai_fillo_nai/Bot.java98
-rw-r--r--app/src/main/java/com/jopek/pai_fillo_nai/MainActivity.java10
-rw-r--r--app/src/main/java/com/jopek/pai_fillo_nai/OfflineGameActivity.java177
-rw-r--r--app/src/main/java/com/jopek/pai_fillo_nai/OnlineGameActivity.java276
4 files changed, 378 insertions, 183 deletions
diff --git a/app/src/main/java/com/jopek/pai_fillo_nai/Bot.java b/app/src/main/java/com/jopek/pai_fillo_nai/Bot.java
new file mode 100644
index 0000000..4b04a55
--- /dev/null
+++ b/app/src/main/java/com/jopek/pai_fillo_nai/Bot.java
@@ -0,0 +1,98 @@
+package com.jopek.pai_fillo_nai;
+
+import java.util.Arrays;
+
+public class Bot {
+ static int meTheBot, opponent;
+ static int[] board;
+
+ static boolean isntBoardFull() {
+ for (int j : board)
+ if (j == -1)
+ return true;
+ return false;
+ }
+
+ static int goodOrBad() {
+ int[][] possibilities = new int[][]{
+ {0, 1, 2}, {3, 4, 5}, {6, 7, 8},
+ {0, 3, 6}, {1, 4, 7}, {2, 5, 8},
+ {0, 4, 8}, {2, 4, 6}
+ };
+ for (int[] poss : possibilities) {
+ if (chkTriEqOnGB(poss[0], poss[1], poss[2])) {
+ if (board[poss[0]] == meTheBot) return +10;
+ else return -10;
+ }
+ }
+
+ return 0;
+ }
+
+ static int minimax(int depth, Boolean isMax) {
+ int score = goodOrBad();
+
+ if (score == 10)
+ return score;
+
+ if (score == -10)
+ return score;
+
+ if (isntBoardFull() == false)
+ return 0;
+
+ int best;
+ if (isMax) {
+ best = -1000;
+
+ for (int i = 0; i < board.length; i++) {
+ if (board[i] == -1) {
+ board[i] = meTheBot;
+ best = Math.max(best, minimax(depth + 1, !isMax));
+ board[i] = -1;
+ }
+ }
+ } else {
+ best = 1000;
+
+ for (int i = 0; i < board.length; i++) {
+ if (board[i] == -1) {
+ board[i] = opponent;
+ best = Math.min(best, minimax(depth + 1, !isMax));
+ board[i] = -1;
+ }
+ }
+ }
+ return best;
+ }
+
+ static int getBestMove(int[] board, int bot, int opp) {
+ Bot.board = board;
+ Bot.meTheBot = bot;
+ Bot.opponent = opp;
+ int bestVal = -1000;
+ int bestMove = -1;
+
+ if(Arrays.stream(board).filter(c -> c == -1).count() == 9) return 4;
+
+ for (int i = 0; i < board.length; i++) {
+ if (board[i] == -1) {
+ board[i] = meTheBot;
+ int moveVal = minimax(0, false);
+ board[i] = -1;
+
+ if (moveVal > bestVal) {
+ bestMove = i;
+ bestVal = moveVal;
+ }
+ }
+ }
+
+ return bestMove;
+ }
+
+ // CheckTripleEqualityOnGameBoard
+ public static boolean chkTriEqOnGB(int a, int b, int c) {
+ return board[a] == board[b] && board[b] == board[c] && board[a] != -1;
+ }
+}
diff --git a/app/src/main/java/com/jopek/pai_fillo_nai/MainActivity.java b/app/src/main/java/com/jopek/pai_fillo_nai/MainActivity.java
index 99ea7b4..91e5638 100644
--- a/app/src/main/java/com/jopek/pai_fillo_nai/MainActivity.java
+++ b/app/src/main/java/com/jopek/pai_fillo_nai/MainActivity.java
@@ -10,11 +10,11 @@ import android.view.WindowManager;
import android.widget.TextView;
import android.widget.Toast;
-import com.google.firebase.database.DataSnapshot;
-import com.google.firebase.database.DatabaseError;
-import com.google.firebase.database.DatabaseReference;
-import com.google.firebase.database.FirebaseDatabase;
-import com.google.firebase.database.ValueEventListener;
+//import com.google.firebase.database.DataSnapshot;
+//import com.google.firebase.database.DatabaseError;
+//import com.google.firebase.database.DatabaseReference;
+//import com.google.firebase.database.FirebaseDatabase;
+//import com.google.firebase.database.ValueEventListener;
public class MainActivity extends AppCompatActivity {
@Override
diff --git a/app/src/main/java/com/jopek/pai_fillo_nai/OfflineGameActivity.java b/app/src/main/java/com/jopek/pai_fillo_nai/OfflineGameActivity.java
index 2b1d918..e7a3210 100644
--- a/app/src/main/java/com/jopek/pai_fillo_nai/OfflineGameActivity.java
+++ b/app/src/main/java/com/jopek/pai_fillo_nai/OfflineGameActivity.java
@@ -4,8 +4,7 @@ import android.app.AlertDialog;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
-import android.os.PersistableBundle;
-import android.util.Log;
+import android.os.Handler;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
@@ -14,19 +13,22 @@ import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
+import java.util.Arrays;
import java.util.concurrent.ThreadLocalRandom;
public class OfflineGameActivity extends AppCompatActivity {
+ final String TAG = "maks";
// 0player - O, 1player - X
int whoseTurn = ThreadLocalRandom.current().nextInt(0, 1 + 1);
int[] gameBoard = new int[]{-1, -1, -1, -1, -1, -1, -1, -1, -1};
-
ImageView p0Img;
ImageView p1Img;
-
TextView square0, square1, square2, square3, square4, square5, square6, square7, square8;
-
- final String TAG = "maks";
+ TextView[] squares;
+ TextView tvP0, tvP1;
+ boolean bot = false;
+ int playerIs = -1;
+ boolean botTurn = false;
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
@@ -36,6 +38,8 @@ public class OfflineGameActivity extends AppCompatActivity {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_offline_game);
+ boolean playBotTurn = false;
+
square0 = findViewById(R.id.square0);
square1 = findViewById(R.id.square1);
square2 = findViewById(R.id.square2);
@@ -45,17 +49,57 @@ public class OfflineGameActivity extends AppCompatActivity {
square6 = findViewById(R.id.square6);
square7 = findViewById(R.id.square7);
square8 = findViewById(R.id.square8);
+ squares = new TextView[]{square0, square1, square2, square3, square4, square5, square6, square7, square8};
+
+ tvP0 = findViewById(R.id.tvP0);
+ tvP1 = findViewById(R.id.tvP1);
- Log.d(TAG, "onCreate: "+ savedInstanceState);
- if(savedInstanceState != null) {
+ if (savedInstanceState == null) {
+ new AlertDialog.Builder(this)
+ .setTitle("How do you want to play?")
+ .setMessage("Do you want to play with a bot or a friend?")
+ .setCancelable(false)
+ .setPositiveButton("Bot", (dialog, which) -> {
+ bot = true;
+ playerIs = ThreadLocalRandom.current().nextInt(0, 1 + 1);
+ whoseTurn = 0;
+ if (playerIs == 0) {
+ tvP0.setText("Player (O)");
+ tvP1.setText("Bot (X)");
+ } else {
+ tvP0.setText("Bot (O)");
+ tvP1.setText("Player (X)");
+ botTurn = true;
+ botTurn();
+ }
+ })
+ .setNegativeButton("Friend", (dialog, which) -> {
+ })
+ .setIcon(R.drawable.ic_baseline_gamepad_24)
+ .show();
+ } else {
int[] maybeGameBoard = savedInstanceState.getIntArray("gameBoard");
int maybeWhoseTurn = savedInstanceState.getInt("whoseTurn");
- if(maybeGameBoard != null) {
+ boolean maybeBot = savedInstanceState.getBoolean("bot");
+ int maybePlayerIs = savedInstanceState.getInt("playerIs");
+ if (maybeGameBoard != null) {
gameBoard = maybeGameBoard;
whoseTurn = maybeWhoseTurn;
+ bot = maybeBot;
+ playerIs = maybePlayerIs;
+ if (bot) {
+ if (playerIs == 0) {
+ tvP0.setText("Player (O)");
+ tvP1.setText("Bot (X)");
+ } else {
+ tvP0.setText("Bot (O)");
+ tvP1.setText("Player (X)");
+ playBotTurn = whoseTurn != playerIs;
+// botTurn = true;
+// botTurn();
+ }
+ }
}
- Log.d(TAG, "onCreate: "+ gameBoard);
- Log.d(TAG, "onCreate: "+ whoseTurn);
}
p0Img = findViewById(R.id.p0Img);
@@ -73,13 +117,18 @@ public class OfflineGameActivity extends AppCompatActivity {
for (TextView square :
new TextView[]{square0, square1, square2, square3, square4, square5, square6, square7, square8}) {
int finalI = i;
- square.setOnClickListener(view -> onSquareClick((TextView) view, finalI));
- if(gameBoard[i] == -1)
+ square.setOnClickListener(view -> onSquareClick((TextView) view, finalI, false));
+ if (gameBoard[i] == -1)
square.setText("");
else
square.setText(gameBoard[i] == 0 ? "O" : "X");
i++;
}
+
+ if (playBotTurn || (bot && playerIs == 1 && Arrays.stream(gameBoard).filter(c -> c == -1).count() == 9)) {
+ botTurn = true;
+ botTurn();
+ }
}
@Override
@@ -87,10 +136,12 @@ public class OfflineGameActivity extends AppCompatActivity {
super.onSaveInstanceState(outState);
outState.putIntArray("gameBoard", gameBoard);
outState.putInt("whoseTurn", whoseTurn);
+ outState.putBoolean("bot", bot);
+ outState.putInt("playerIs", playerIs);
}
- @RequiresApi(api = Build.VERSION_CODES.N)
- protected void onSquareClick(TextView square, int id) {
+ protected void onSquareClick(TextView square, int id, boolean force) {
+ if (botTurn && !force) return;
if (gameBoard[id] != -1) return;
gameBoard[id] = whoseTurn;
square.setText(whoseTurn == 0 ? "O" : "X");
@@ -101,7 +152,7 @@ public class OfflineGameActivity extends AppCompatActivity {
endGame(-1);
return;
}
- whoseTurn = whoseTurn == 0 ? 1 : 0;
+ whoseTurn = whoseTurn == 0 ? 1 : 0;
if (whoseTurn == 0) {
p0Img.setImageResource(R.mipmap.bg_you_in_army_foreground);
p1Img.setImageResource(R.mipmap.bg_no_no_foreground);
@@ -109,6 +160,17 @@ public class OfflineGameActivity extends AppCompatActivity {
p0Img.setImageResource(R.mipmap.bg_no_no_foreground);
p1Img.setImageResource(R.mipmap.bg_you_in_army_foreground);
}
+ if (bot && whoseTurn != playerIs) {
+ botTurn();
+ }
+ }
+
+ protected void botTurn() {
+ botTurn = true;
+ int chosenSquare = -1;
+ chosenSquare = Bot.getBestMove(gameBoard.clone(), playerIs == 0 ? 1 : 0, playerIs);
+ onSquareClick(squares[chosenSquare], chosenSquare, true);
+ botTurn = false;
}
protected boolean checkWon() {
@@ -117,7 +179,6 @@ public class OfflineGameActivity extends AppCompatActivity {
chkTriEqOnGB(0, 4, 8) || chkTriEqOnGB(2, 4, 6);
}
- @RequiresApi(api = Build.VERSION_CODES.N)
protected boolean checkDraw() {
return gameBoard[0] != -1 &&
gameBoard[1] != -1 &&
@@ -131,29 +192,65 @@ public class OfflineGameActivity extends AppCompatActivity {
}
protected void endGame(int whoWon) {
- new AlertDialog.Builder(this)
- .setTitle(whoWon == -1 ? "DRAW" : "Player " + (whoWon + 1) + " WON")
- .setMessage(whoWon == -1 ? "Maybe next time" : "Congratulations to Player " + (whoWon + 1))
- .setCancelable(false)
- .setPositiveButton("Play again", (dialog, which) -> {
- gameBoard = new int[]{-1, -1, -1, -1, -1, -1, -1, -1, -1};
- square0.setText("");
- square1.setText("");
- square2.setText("");
- square3.setText("");
- square4.setText("");
- square5.setText("");
- square6.setText("");
- square7.setText("");
- square8.setText("");
- whoseTurn = ThreadLocalRandom.current().nextInt(0, 1 + 1);
- })
- .setNegativeButton("Go to menu", (dialog, which) -> {
- Intent intent = new Intent(OfflineGameActivity.this, MainActivity.class);
- startActivity(intent);
- })
- .setIcon(android.R.drawable.ic_dialog_alert)
- .show();
+ botTurn = true;
+ int delay = bot ? 2000 : 0;
+ if (bot && whoWon == playerIs) delay = 0;
+ Handler handler = new Handler();
+ handler.postDelayed(() -> {
+ String title = "";
+ if (bot) {
+ if (whoWon == -1) title = "Draw, but you couldn't do better";
+ else title = whoWon == playerIs ? "You were cheating" : "Bot won, no surprise here";
+ } else title = whoWon == -1 ? "DRAW" : "Player " + (whoWon + 1) + " WON";
+
+ String msg = "";
+ if (bot) {
+ if (whoWon == -1) msg = "Maybe next time you'll loose";
+ else msg = whoWon == playerIs ? "Cheeeeeeeeater" : "You didn't have any chance";
+ } else
+ msg = whoWon == -1 ? "Maybe next time" : "Congratulations to Player " + (whoWon + 1);
+
+ new AlertDialog.Builder(this)
+ .setTitle(title)
+ .setMessage(msg)
+ .setCancelable(false)
+ .setPositiveButton("Play again", (dialog, which) -> {
+ botTurn = false;
+ gameBoard = new int[]{-1, -1, -1, -1, -1, -1, -1, -1, -1};
+ square0.setText("");
+ square1.setText("");
+ square2.setText("");
+ square3.setText("");
+ square4.setText("");
+ square5.setText("");
+ square6.setText("");
+ square7.setText("");
+ square8.setText("");
+ if (!bot)
+ whoseTurn = ThreadLocalRandom.current().nextInt(0, 1 + 1);
+ else {
+ playerIs = ThreadLocalRandom.current().nextInt(0, 1 + 1);
+ if (playerIs == 0) {
+ tvP0.setText("Player (O)");
+ tvP1.setText("Bot (X)");
+ } else {
+ tvP0.setText("Bot (O)");
+ tvP1.setText("Player (X)");
+ }
+ if (whoseTurn != playerIs) {
+ botTurn = true;
+ botTurn();
+ }
+ }
+ })
+ .setNegativeButton("Go to menu", (dialog, which) -> {
+ Intent intent = new Intent(OfflineGameActivity.this, MainActivity.class);
+ startActivity(intent);
+ })
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .show();
+ }, delay);
+
}
// CheckTripleEqualityOnGameBoard
diff --git a/app/src/main/java/com/jopek/pai_fillo_nai/OnlineGameActivity.java b/app/src/main/java/com/jopek/pai_fillo_nai/OnlineGameActivity.java
index d389833..71c1267 100644
--- a/app/src/main/java/com/jopek/pai_fillo_nai/OnlineGameActivity.java
+++ b/app/src/main/java/com/jopek/pai_fillo_nai/OnlineGameActivity.java
@@ -15,11 +15,11 @@ import android.widget.TextView;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
-import com.google.firebase.database.DataSnapshot;
-import com.google.firebase.database.DatabaseError;
-import com.google.firebase.database.DatabaseReference;
-import com.google.firebase.database.FirebaseDatabase;
-import com.google.firebase.database.ValueEventListener;
+//import com.google.firebase.database.DataSnapshot;
+//import com.google.firebase.database.DatabaseError;
+//import com.google.firebase.database.DatabaseReference;
+//import com.google.firebase.database.FirebaseDatabase;
+//import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
import java.util.Arrays;
@@ -38,8 +38,8 @@ public class OnlineGameActivity extends AppCompatActivity {
Arrays.asList(-1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L)
);
List<ImageView> squares = new ArrayList<>();
- DatabaseReference rooms;
- DatabaseReference room;
+// DatabaseReference rooms;
+// DatabaseReference room;
// FinishGameAlert
AlertDialog fgAlert = null;
long whoami = 0;
@@ -80,7 +80,7 @@ public class OnlineGameActivity extends AppCompatActivity {
square.setOnClickListener(view -> onSquareClick((ImageView) view, finalI));
i++;
}
- rooms = FirebaseDatabase.getInstance("https://pai-fillo-nai-default-rtdb.europe-west1.firebasedatabase.app/").getReference("rooms");
+// rooms = FirebaseDatabase.getInstance("https://pai-fillo-nai-default-rtdb.europe-west1.firebasedatabase.app/").getReference("rooms");
askForRoomId(false);
}
@@ -114,7 +114,7 @@ public class OnlineGameActivity extends AppCompatActivity {
whoami = rand.nextInt(2);
tvName.setText("You're player 1 (playing as " + (whoami == 0 ? "O" : "X") + ")");
- room = rooms.child(rid);
+// room = rooms.child(rid);
Map<String, Object> data = new HashMap<>();
data.put("started", 0);
data.put("player1", whoami);
@@ -124,32 +124,32 @@ public class OnlineGameActivity extends AppCompatActivity {
data.put("winner", -1);
data.put("revenge0", -1);
data.put("revenge1", -1);
- room.setValue(data);
+// room.setValue(data);
waitFor2Player(rid);
} else {
- rooms.child(roomId).addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- if (!(dataSnapshot.getValue() instanceof HashMap)) {
- askForRoomId(true);
- }
- HashMap data = (HashMap) dataSnapshot.getValue();
- if ((long) data.get("started") == 1) {
- askForRoomId(true);
- }
- whoami = (long) data.get("player2");
- whoseTurn = (long) data.get("whoseTurn");
- tvName.setText("You're player 1 (playing as " + (whoami == 0 ? "O" : "X") + ")");
- room = rooms.child(roomId);
- startGame(true);
- }
-
- @Override
- public void onCancelled(DatabaseError databaseError) {
- askForRoomId(true);
- }
- });
+// rooms.child(roomId).addListenerForSingleValueEvent(new ValueEventListener() {
+// @Override
+// public void onDataChange(DataSnapshot dataSnapshot) {
+// if (!(dataSnapshot.getValue() instanceof HashMap)) {
+// askForRoomId(true);
+// }
+// HashMap data = (HashMap) dataSnapshot.getValue();
+// if ((long) data.get("started") == 1) {
+// askForRoomId(true);
+// }
+// whoami = (long) data.get("player2");
+// whoseTurn = (long) data.get("whoseTurn");
+// tvName.setText("You're player 1 (playing as " + (whoami == 0 ? "O" : "X") + ")");
+// room = rooms.child(roomId);
+// startGame(true);
+// }
+//
+// @Override
+// public void onCancelled(DatabaseError databaseError) {
+// askForRoomId(true);
+// }
+// });
}
}
@@ -163,92 +163,92 @@ public class OnlineGameActivity extends AppCompatActivity {
alert.show();
alert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
- room.addValueEventListener(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- HashMap data = (HashMap) dataSnapshot.getValue();
- if ((long) data.get("started") == 1) {
- room.removeEventListener(this);
- alert.dismiss();
- startGame(false);
- }
- }
-
- @Override
- public void onCancelled(DatabaseError databaseError) {
- Log.d(TAG, "onCancelled: Waiter Value Event Listener");
- }
- });
+// room.addValueEventListener(new ValueEventListener() {
+// @Override
+// public void onDataChange(DataSnapshot dataSnapshot) {
+// HashMap data = (HashMap) dataSnapshot.getValue();
+// if ((long) data.get("started") == 1) {
+// room.removeEventListener(this);
+// alert.dismiss();
+// startGame(false);
+// }
+// }
+//
+// @Override
+// public void onCancelled(DatabaseError databaseError) {
+// Log.d(TAG, "onCancelled: Waiter Value Event Listener");
+// }
+// });
}
- protected void startGame(boolean markStarted) {
- if (markStarted) {
- room.child("started").setValue(1);
- }
- room.addValueEventListener(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- HashMap data = (HashMap) dataSnapshot.getValue();
- if (data == null) {
- room.removeEventListener(this);
- return;
- }
-
- Log.d(TAG, "onDataChange: " + Arrays.toString(data.entrySet().toArray()));
- gameBoard = (List) data.get("board");
- Log.d(TAG, "onDataChange: " + Arrays.toString(gameBoard.toArray()));
- whoseTurn = (long) data.get("whoseTurn");
- myTurn = whoseTurn == whoami;
- playTurn();
- long winner = (long) data.get("winner");
- long opRevenge = (long) data.get("revenge" + (whoami == 0 ? 1 : 0));
- revengePossible = opRevenge != 0;
- if (revengeRequested && winner == -1) {
- myTurn = whoami == (long) data.get("whoseTurn");
- revengePossible = true;
- revengeRequested = false;
- gameWasEnd = false;
- playTurn();
- } else if (!revengePossible && revengeRequested) {
- fgAlert.dismiss();
- new AlertDialog.Builder(OnlineGameActivity.this)
- .setTitle("Sad info")
- .setMessage("Second player don't want to play with ya :(")
- .setCancelable(false)
- .setNegativeButton("Go to menu without friend", (dialog, which) -> {
- room.removeValue();
- Intent intent = new Intent(OnlineGameActivity.this, MainActivity.class);
- startActivity(intent);
- })
- .setIcon(R.drawable.ic_baseline_gamepad_24)
- .show();
- } else if (opRevenge == 1 && revengeRequested) {
- Map<String, Object> data2 = new HashMap<>();
- gameBoard = new ArrayList<>(Arrays.asList(-1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L));
- data2.put("started", 1);
- data2.put("player1", whoami);
- data2.put("player2", whoami == 0 ? 1L : 0L);
- data2.put("whoseTurn", new Long(ThreadLocalRandom.current().nextInt(0, 1 + 1)));
- data2.put("board", gameBoard);
- data2.put("winner", -1L);
- data2.put("revenge0", -1L);
- data2.put("revenge1", -1L);
- myTurn = whoami == (long) data2.get("whoseTurn");
- room.setValue(data2);
- playTurn();
- }
-
- if (winner != -1) {
- endGame(winner);
- }
- }
-
- @Override
- public void onCancelled(DatabaseError databaseError) {
- Log.d(TAG, "onCancelled: Main Value Event Listener");
- }
- });
- }
+// protected void startGame(boolean markStarted) {
+// if (markStarted) {
+// room.child("started").setValue(1);
+// }
+// room.addValueEventListener(new ValueEventListener() {
+// @Override
+// public void onDataChange(DataSnapshot dataSnapshot) {
+// HashMap data = (HashMap) dataSnapshot.getValue();
+// if (data == null) {
+// room.removeEventListener(this);
+// return;
+// }
+//
+// Log.d(TAG, "onDataChange: " + Arrays.toString(data.entrySet().toArray()));
+// gameBoard = (List) data.get("board");
+// Log.d(TAG, "onDataChange: " + Arrays.toString(gameBoard.toArray()));
+// whoseTurn = (long) data.get("whoseTurn");
+// myTurn = whoseTurn == whoami;
+// playTurn();
+// long winner = (long) data.get("winner");
+// long opRevenge = (long) data.get("revenge" + (whoami == 0 ? 1 : 0));
+// revengePossible = opRevenge != 0;
+// if (revengeRequested && winner == -1) {
+// myTurn = whoami == (long) data.get("whoseTurn");
+// revengePossible = true;
+// revengeRequested = false;
+// gameWasEnd = false;
+// playTurn();
+// } else if (!revengePossible && revengeRequested) {
+// fgAlert.dismiss();
+// new AlertDialog.Builder(OnlineGameActivity.this)
+// .setTitle("Sad info")
+// .setMessage("Second player don't want to play with ya :(")
+// .setCancelable(false)
+// .setNegativeButton("Go to menu without friend", (dialog, which) -> {
+// room.removeValue();
+// Intent intent = new Intent(OnlineGameActivity.this, MainActivity.class);
+// startActivity(intent);
+// })
+// .setIcon(R.drawable.ic_baseline_gamepad_24)
+// .show();
+// } else if (opRevenge == 1 && revengeRequested) {
+// Map<String, Object> data2 = new HashMap<>();
+// gameBoard = new ArrayList<>(Arrays.asList(-1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L));
+// data2.put("started", 1);
+// data2.put("player1", whoami);
+// data2.put("player2", whoami == 0 ? 1L : 0L);
+// data2.put("whoseTurn", new Long(ThreadLocalRandom.current().nextInt(0, 1 + 1)));
+// data2.put("board", gameBoard);
+// data2.put("winner", -1L);
+// data2.put("revenge0", -1L);
+// data2.put("revenge1", -1L);
+// myTurn = whoami == (long) data2.get("whoseTurn");
+// room.setValue(data2);
+// playTurn();
+// }
+//
+// if (winner != -1) {
+// endGame(winner);
+// }
+// }
+//
+// @Override
+// public void onCancelled(DatabaseError databaseError) {
+// Log.d(TAG, "onCancelled: Main Value Event Listener");
+// }
+// });
+// }
protected void playTurn() {
int i = 0;
@@ -270,8 +270,8 @@ public class OnlineGameActivity extends AppCompatActivity {
}
protected void finishTurn() {
- room.child("whoseTurn").setValue(whoseTurn);
- room.child("board").setValue(gameBoard);
+// room.child("whoseTurn").setValue(whoseTurn);
+// room.child("board").setValue(gameBoard);
}
@RequiresApi(api = Build.VERSION_CODES.N)
@@ -319,26 +319,26 @@ public class OnlineGameActivity extends AppCompatActivity {
gameWasEnd = true;
finishTurn();
- room.child("winner").setValue(whoWon);
- AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this)
- .setTitle(whoWon == 2 ? "DRAW" : "Player " + (whoWon + 1) + " WON")
- .setMessage(whoWon == 2 ? "Maybe next time" : "Congratulations to Player " + (whoWon + 1))
- .setCancelable(false)
- .setPositiveButton("Request revenge", (dialog, which) -> {
- revengeRequested = true;
- room.child("revenge" + whoami).setValue(1);
- })
- .setNegativeButton("Go to menu", (dialog, which) -> {
- room.child("revenge" + whoami).setValue(0);
- if (!revengePossible) {
- room.removeValue();
- }
- Intent intent = new Intent(OnlineGameActivity.this, MainActivity.class);
- startActivity(intent);
- })
- .setIcon(R.drawable.ic_baseline_gamepad_24);
- fgAlert = alertBuilder.create();
- fgAlert.show();
+// room.child("winner").setValue(whoWon);
+// AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this)
+// .setTitle(whoWon == 2 ? "DRAW" : "Player " + (whoWon + 1) + " WON")
+// .setMessage(whoWon == 2 ? "Maybe next time" : "Congratulations to Player " + (whoWon + 1))
+// .setCancelable(false)
+// .setPositiveButton("Request revenge", (dialog, which) -> {
+// revengeRequested = true;
+// room.child("revenge" + whoami).setValue(1);
+// })
+// .setNegativeButton("Go to menu", (dialog, which) -> {
+// room.child("revenge" + whoami).setValue(0);
+// if (!revengePossible) {
+// room.removeValue();
+// }
+// Intent intent = new Intent(OnlineGameActivity.this, MainActivity.class);
+// startActivity(intent);
+// })
+// .setIcon(R.drawable.ic_baseline_gamepad_24);
+// fgAlert = alertBuilder.create();
+// fgAlert.show();
}
// CheckTripleEqualityOnGameBoard