完成()不起作用。退出活动后无法停止活动

发布于 2025-02-02 03:17:04 字数 23457 浏览 1 评论 0原文

我正在制作一个扑克游戏(用于学校项目),我遇到了一个问题,在我退出游戏(游戏活动而不是应用程序)后,它会在后台运行,当您启动新游戏时,它会弄乱它。我尝试了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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文