完成()不起作用。退出活动后无法停止活动
我正在制作一个扑克游戏(用于学校项目),我遇到了一个问题,在我退出游戏(游戏活动而不是应用程序)后,它会在后台运行,当您启动新游戏时,它会弄乱它。我尝试了Stackoverflow中的所有解决方案,包括:finishaffition()
,finish()
,但它们都不适合我。
该活动扩展了AppCompatactivity
,这是我尝试的解决方案之一:
活动: ` 公共类offlinegametable扩展了appCompatactivity { //定义所有视图
public static BottomSheetFragment blankFragment;
/* Broadcast Receiver for battery */
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context ctxt, Intent intent) {
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
if (level < 15)
{
AlertDialog.Builder adb;
adb = new AlertDialog.Builder(OfflineGameTable.this);
adb.setCancelable(false);
adb.setTitle("Battery alert!");
adb.setMessage("The level of battery below 15%!");
adb.setIcon(R.drawable.battery);
adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
AlertDialog ad = adb.create();
ad.show();
unregisterReceiver(mBatInfoReceiver);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_offline_game_table);
/* Broadcast Receiver for battery */
this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
//calling all methods
initViews();
Game();
}
// boolean to see if the user played
public static boolean played = false;
int i = 0,folded;
//method that runs the game
public void Game(){
//setting variables
SetAllNull();
SetAll();
folded = 0;
CheckIfBot0();
//presenting the user's cards
playerCard1.setImageResource(players[0].getCard1().getCardPicture());
playerCard2.setImageResource(players[0].getCard2().getCardPicture());
//setting starting bet
currentBet.setText(Bet);
//setting first cards
card1.setImageResource(card1Info.getCardPicture());
card2.setImageResource(card2Info.getCardPicture());
card3.setImageResource(card3Info.getCardPicture());
//round 1
Round();
new CountDownTimer(55000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
//round 2
//setting bet
currentBet.setText(Bet);
//setting 4th card
card4.setImageResource(card4Info.getCardPicture());
Round();
new CountDownTimer(55000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
//round 3
//setting bet
currentBet.setText(Bet);
//setting 5th card
card5.setImageResource(card5Info.getCardPicture());
Round();
new CountDownTimer(55000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
ShowAllCards();
CheckWinner();
}
}.start();
}
}.start();
}
}.start();
}
public void WinnerByFold(){
if(folded == 4){
if(!players[0].isFolded()){
Toast.makeText(OfflineGameTable.this, "1", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Won!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[0].setMoney(players[0].getMoney() + Integer.valueOf(tablePot.getText().toString()));
playerMoney.setText(String.valueOf(players[0].getMoney()));
//connecting to firebase
FirebaseDatabase database = FirebaseDatabase.getInstance("https://holdempoker2-6b7c8-default-rtdb.firebaseio.com");
//defining path
DatabaseReference myRef = database.getReference("Users/"+MainGoogleSignIn.userID+"/Money");
//set user money
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
myRef.setValue(Integer.valueOf(snapshot.getValue().toString()) - Integer.valueOf(tablePot.getText().toString()));
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(!players[1].isFolded()){
Toast.makeText(OfflineGameTable.this, "2", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[1].setMoney(players[1].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player2Money.setText(String.valueOf(players[1].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(!players[2].isFolded()){
Toast.makeText(OfflineGameTable.this, "3", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[2].setMoney(players[2].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player3Money.setText(String.valueOf(players[2].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(!players[3].isFolded()){
Toast.makeText(OfflineGameTable.this, "4", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[3].setMoney(players[3].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player4Money.setText(String.valueOf(players[3].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(!players[4].isFolded()){
Toast.makeText(OfflineGameTable.this, "5", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[4].setMoney(players[4].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player5Money.setText(String.valueOf(players[4].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
}
}
public void CheckWinner(){
Toast.makeText(OfflineGameTable.this, "check", Toast.LENGTH_SHORT).show();
int score1 = CheckHand.checkAllHands(0),score2 = CheckHand.checkAllHands(1),
score3 = CheckHand.checkAllHands(2),score4 = CheckHand.checkAllHands(3),score5 = CheckHand.checkAllHands(4);
if(score1 > score2 && score1 > score3 && score1 > score4 && score1 > score5){
Toast.makeText(OfflineGameTable.this, "1", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Won!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[0].setMoney(players[0].getMoney() + Integer.valueOf(tablePot.getText().toString()));
playerMoney.setText(String.valueOf(players[0].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(score2 > score1 && score2 > score3 && score2 > score4 && score2 > score5){
Toast.makeText(OfflineGameTable.this, "2", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[1].setMoney(players[1].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player2Money.setText(String.valueOf(players[1].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(score3 > score1 && score3 > score2 && score3 > score4 && score3 > score5){
Toast.makeText(OfflineGameTable.this, "3", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[2].setMoney(players[2].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player3Money.setText(String.valueOf(players[2].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(score4 > score1 && score4 > score2 && score4 > score3 && score4 > score5){
Toast.makeText(OfflineGameTable.this, "4", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[3].setMoney(players[3].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player4Money.setText(String.valueOf(players[3].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(score5 > score1 && score5 > score2 && score5 > score3 && score5 > score4){
Toast.makeText(OfflineGameTable.this, "5", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[4].setMoney(players[4].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player5Money.setText(String.valueOf(players[4].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
}
public void Round(){
//checking if it's the user's turn
if(turn%5 == 0&& !players[0].isFolded()){
Model.enableButtons();
playersTimer(turn%5);
played = false;
//setting a listener to see if the user chose to check/raise/fold
check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Model.confirmCheck();
played = true;
turn++;
}
});
raise.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
blankFragment = new BottomSheetFragment();
blankFragment.show(getSupportFragmentManager(),blankFragment.getTag());
}
});
fold.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
players[0].setFolded(true);
Model.disableButtons();
folded ++;
played = true;
WinnerByFold();
turn++;
}
});
}
else
turn++;
//setting a timer for each bot
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
}
//when the timer finishes, calling a method to make the bot play, repeating this for the rest of the bots
public void onFinish() {
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
}
}.start();
}
}.start();
}
}.start();
}
}.start();
}
}.start();
}
final Timer playerTimer = new Timer();
TimerTask timerTask;
//making a timer for the user, with progress bar
public void playersTimer(int id){
final Handler handler = new Handler();
final boolean[] isFinished = {false};
timerTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
TimerCounter ++;
ProgressBars[id].setProgress(TimerCounter);
//on timer finish, act accordingly
if (TimerCounter == 100){
if (played == false){
players[id].setFolded(true);
Model.disableButtons();
turn++;
Toast.makeText(OfflineGameTable.this, "Folded", Toast.LENGTH_SHORT).show();
}
isFinished[0] = true;
TimerCounter = 0;
ProgressBars[id].setProgress(0);
playerTimer.cancel();
}
}
});
}
};
playerTimer.schedule(timerTask,0,100);
}
//method to send user to lobby activity, presents an alert dialog to confirm
public void backToLobby(View view) {
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("Are you sure you want to Exit?");
alertDialog.setCancelable(true);
//checking what button the user pressed
alertDialog.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
/* Intent intent = new Intent(OfflineGameTable.this, MainLobby.class);
startActivity(intent);*/
playerTimer.cancel();
dialog.dismiss();
finish();
}
}
);
alertDialog.setNegativeButton("No",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog dialog = alertDialog.create();
dialog.show();
}
public void handleRaise(){
if(turn%5 == 0){
Model.enableButtons();
playersTimer(turn%5);
played = false;
//setting a listener to see if the user chose to check/raise/fold
check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Model.confirmCheck();
played = true;
}
});
raise.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
blankFragment = new BottomSheetFragment();
blankFragment.show(getSupportFragmentManager(),blankFragment.getTag());
}
});
fold.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
players[0].setFolded(true);
Model.disableButtons();
played = true;
}
});
}
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
}
}.start();
}
}.start();
}
}.start();
}
}.start();
}
} `
I am making a poker game (for a school project) and I am having a problem where after i exit the game (game activity not the app) it keeps running in the background and when you start a new game it messes it up. I have tried every solution in StackOverFlow including: finishAffinity()
,finish()
, but none of them worked for me.
The activity extends AppCompatActivity
and this is one of the solution I tried:
activity:
`
public class OfflineGameTable extends AppCompatActivity {
//defining all views
public static BottomSheetFragment blankFragment;
/* Broadcast Receiver for battery */
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context ctxt, Intent intent) {
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
if (level < 15)
{
AlertDialog.Builder adb;
adb = new AlertDialog.Builder(OfflineGameTable.this);
adb.setCancelable(false);
adb.setTitle("Battery alert!");
adb.setMessage("The level of battery below 15%!");
adb.setIcon(R.drawable.battery);
adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
AlertDialog ad = adb.create();
ad.show();
unregisterReceiver(mBatInfoReceiver);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_offline_game_table);
/* Broadcast Receiver for battery */
this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
//calling all methods
initViews();
Game();
}
// boolean to see if the user played
public static boolean played = false;
int i = 0,folded;
//method that runs the game
public void Game(){
//setting variables
SetAllNull();
SetAll();
folded = 0;
CheckIfBot0();
//presenting the user's cards
playerCard1.setImageResource(players[0].getCard1().getCardPicture());
playerCard2.setImageResource(players[0].getCard2().getCardPicture());
//setting starting bet
currentBet.setText(Bet);
//setting first cards
card1.setImageResource(card1Info.getCardPicture());
card2.setImageResource(card2Info.getCardPicture());
card3.setImageResource(card3Info.getCardPicture());
//round 1
Round();
new CountDownTimer(55000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
//round 2
//setting bet
currentBet.setText(Bet);
//setting 4th card
card4.setImageResource(card4Info.getCardPicture());
Round();
new CountDownTimer(55000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
//round 3
//setting bet
currentBet.setText(Bet);
//setting 5th card
card5.setImageResource(card5Info.getCardPicture());
Round();
new CountDownTimer(55000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
ShowAllCards();
CheckWinner();
}
}.start();
}
}.start();
}
}.start();
}
public void WinnerByFold(){
if(folded == 4){
if(!players[0].isFolded()){
Toast.makeText(OfflineGameTable.this, "1", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Won!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[0].setMoney(players[0].getMoney() + Integer.valueOf(tablePot.getText().toString()));
playerMoney.setText(String.valueOf(players[0].getMoney()));
//connecting to firebase
FirebaseDatabase database = FirebaseDatabase.getInstance("https://holdempoker2-6b7c8-default-rtdb.firebaseio.com");
//defining path
DatabaseReference myRef = database.getReference("Users/"+MainGoogleSignIn.userID+"/Money");
//set user money
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
myRef.setValue(Integer.valueOf(snapshot.getValue().toString()) - Integer.valueOf(tablePot.getText().toString()));
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(!players[1].isFolded()){
Toast.makeText(OfflineGameTable.this, "2", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[1].setMoney(players[1].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player2Money.setText(String.valueOf(players[1].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(!players[2].isFolded()){
Toast.makeText(OfflineGameTable.this, "3", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[2].setMoney(players[2].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player3Money.setText(String.valueOf(players[2].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(!players[3].isFolded()){
Toast.makeText(OfflineGameTable.this, "4", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[3].setMoney(players[3].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player4Money.setText(String.valueOf(players[3].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(!players[4].isFolded()){
Toast.makeText(OfflineGameTable.this, "5", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[4].setMoney(players[4].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player5Money.setText(String.valueOf(players[4].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
}
}
public void CheckWinner(){
Toast.makeText(OfflineGameTable.this, "check", Toast.LENGTH_SHORT).show();
int score1 = CheckHand.checkAllHands(0),score2 = CheckHand.checkAllHands(1),
score3 = CheckHand.checkAllHands(2),score4 = CheckHand.checkAllHands(3),score5 = CheckHand.checkAllHands(4);
if(score1 > score2 && score1 > score3 && score1 > score4 && score1 > score5){
Toast.makeText(OfflineGameTable.this, "1", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Won!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[0].setMoney(players[0].getMoney() + Integer.valueOf(tablePot.getText().toString()));
playerMoney.setText(String.valueOf(players[0].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(score2 > score1 && score2 > score3 && score2 > score4 && score2 > score5){
Toast.makeText(OfflineGameTable.this, "2", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[1].setMoney(players[1].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player2Money.setText(String.valueOf(players[1].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(score3 > score1 && score3 > score2 && score3 > score4 && score3 > score5){
Toast.makeText(OfflineGameTable.this, "3", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[2].setMoney(players[2].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player3Money.setText(String.valueOf(players[2].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(score4 > score1 && score4 > score2 && score4 > score3 && score4 > score5){
Toast.makeText(OfflineGameTable.this, "4", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[3].setMoney(players[3].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player4Money.setText(String.valueOf(players[3].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
if(score5 > score1 && score5 > score2 && score5 > score3 && score5 > score4){
Toast.makeText(OfflineGameTable.this, "5", Toast.LENGTH_SHORT).show();
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("You Lost!");
alertDialog.setCancelable(true);
AlertDialog dialog = alertDialog.create();
dialog.show();
players[4].setMoney(players[4].getMoney() + Integer.valueOf(tablePot.getText().toString()));
player5Money.setText(String.valueOf(players[4].getMoney()));
new CountDownTimer(10000,1000){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
dialog.dismiss();
Game();
}
}.start();
}
}
public void Round(){
//checking if it's the user's turn
if(turn%5 == 0&& !players[0].isFolded()){
Model.enableButtons();
playersTimer(turn%5);
played = false;
//setting a listener to see if the user chose to check/raise/fold
check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Model.confirmCheck();
played = true;
turn++;
}
});
raise.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
blankFragment = new BottomSheetFragment();
blankFragment.show(getSupportFragmentManager(),blankFragment.getTag());
}
});
fold.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
players[0].setFolded(true);
Model.disableButtons();
folded ++;
played = true;
WinnerByFold();
turn++;
}
});
}
else
turn++;
//setting a timer for each bot
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
}
//when the timer finishes, calling a method to make the bot play, repeating this for the rest of the bots
public void onFinish() {
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
}
}.start();
}
}.start();
}
}.start();
}
}.start();
}
}.start();
}
final Timer playerTimer = new Timer();
TimerTask timerTask;
//making a timer for the user, with progress bar
public void playersTimer(int id){
final Handler handler = new Handler();
final boolean[] isFinished = {false};
timerTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
TimerCounter ++;
ProgressBars[id].setProgress(TimerCounter);
//on timer finish, act accordingly
if (TimerCounter == 100){
if (played == false){
players[id].setFolded(true);
Model.disableButtons();
turn++;
Toast.makeText(OfflineGameTable.this, "Folded", Toast.LENGTH_SHORT).show();
}
isFinished[0] = true;
TimerCounter = 0;
ProgressBars[id].setProgress(0);
playerTimer.cancel();
}
}
});
}
};
playerTimer.schedule(timerTask,0,100);
}
//method to send user to lobby activity, presents an alert dialog to confirm
public void backToLobby(View view) {
//creating and presenting alert dialog
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("Are you sure you want to Exit?");
alertDialog.setCancelable(true);
//checking what button the user pressed
alertDialog.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
/* Intent intent = new Intent(OfflineGameTable.this, MainLobby.class);
startActivity(intent);*/
playerTimer.cancel();
dialog.dismiss();
finish();
}
}
);
alertDialog.setNegativeButton("No",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog dialog = alertDialog.create();
dialog.show();
}
public void handleRaise(){
if(turn%5 == 0){
Model.enableButtons();
playersTimer(turn%5);
played = false;
//setting a listener to see if the user chose to check/raise/fold
check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Model.confirmCheck();
played = true;
}
});
raise.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
blankFragment = new BottomSheetFragment();
blankFragment.show(getSupportFragmentManager(),blankFragment.getTag());
}
});
fold.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
players[0].setFolded(true);
Model.disableButtons();
played = true;
}
});
}
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
ProgressBars[turn%5].setProgress((int)i*100/(10000/1000));
i++;
}
public void onFinish() {
ProgressBars[turn%5].setProgress(0);
i = 0;
botPlay(turn%5);
}
}.start();
}
}.start();
}
}.start();
}
}.start();
}
}
`
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论