diff options
| author | Maksymilian Jopek <maks@jopek.eu> | 2022-12-07 22:54:17 +0100 |
|---|---|---|
| committer | Maksymilian Jopek <maks@jopek.eu> | 2022-12-07 22:54:17 +0100 |
| commit | 82652521d71c7fb01762203d740b7c73068098c0 (patch) | |
| tree | ede94d3c8a14138485157815d57116cc56536159 /app/src | |
| parent | d606f2e9708301b26903bfde6f7c945af790fdee (diff) | |
| download | pai-fillo-nai-82652521d71c7fb01762203d740b7c73068098c0.tar.gz pai-fillo-nai-82652521d71c7fb01762203d740b7c73068098c0.tar.zst pai-fillo-nai-82652521d71c7fb01762203d740b7c73068098c0.zip | |
v1.1.0
Diffstat (limited to 'app/src')
6 files changed, 382 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 diff --git a/app/src/main/res/layout-land/activity_offline_game.xml b/app/src/main/res/layout-land/activity_offline_game.xml index 71bb421..bc558c7 100644 --- a/app/src/main/res/layout-land/activity_offline_game.xml +++ b/app/src/main/res/layout-land/activity_offline_game.xml @@ -35,6 +35,7 @@ android:textColor="@color/white" android:gravity="center" android:textAlignment="center" + android:id="@+id/tvP0" android:text="First\nPlayer (O)" /> <ImageView android:layout_width="match_parent" @@ -61,6 +62,7 @@ android:textColor="@color/white" android:gravity="center" android:textAlignment="center" + android:id="@+id/tvP1" android:text="Second\nPlayer (X)" /> <ImageView android:layout_width="match_parent" diff --git a/app/src/main/res/layout/activity_offline_game.xml b/app/src/main/res/layout/activity_offline_game.xml index 5fbae8b..3c8ed51 100644 --- a/app/src/main/res/layout/activity_offline_game.xml +++ b/app/src/main/res/layout/activity_offline_game.xml @@ -35,6 +35,7 @@ android:textColor="@color/white" android:gravity="center" android:textAlignment="center" + android:id="@+id/tvP0" android:text="First\nPlayer (O)" /> <ImageView android:layout_width="match_parent" @@ -61,6 +62,7 @@ android:textColor="@color/white" android:gravity="center" android:textAlignment="center" + android:id="@+id/tvP1" android:text="Second\nPlayer (X)" /> <ImageView android:layout_width="match_parent" |
