gpt4 book ai didi

java - 如果满足某些条件,如何防止进入 while 循环?

转载 作者:行者123 更新时间:2023-12-01 15:39:59 24 4
gpt4 key购买 nike

所以我正在编写一个玩纸牌游戏 war 的类。我已经为手牌、牌组以及与这些类型相关的不同方法(例如洗牌、发牌和丢牌)创建了单独的类。

/*Using the Card, Deck, and Hand classes from the previous lab, write a main program          that will play games of war.  The program should

1) Inatantiate a Deck and two Hands

2) Read in n, the number of games of war to play

3) n times,
a) shuffle and deal the deck
b) play a game of war, counting the number of turns, the number of wars, and the number of double wars
4) After all n games have been played, print the average number of turns, average number of wars, and the average number of double wars.

The rules for the game can be found here:
http://www.pagat.com/war/war.html

If a player runs out of cards during a war, use option 1 on that site.

*/



import java.util.Scanner;

public class War {
public static void main (String args [])
{

//Instantiate Deck and two hands
deck Pile = new deck();
hand Player1 = new hand();
hand Player2 = new hand();
Scanner kb = new Scanner (System.in);
int n, turns = 0, wars = 0, dubwars = 0;
System.out.println("Please enter the number of times you would like the game 'war' to be played:");
n = kb.nextInt();
for (int i = 0; i<n; i++)
{
//Game playing code goes here
Pile.shuffle();
Pile.deal(Player1, Player2);

while(Player1.size() != 0 && Player2.size() !=0)
{

Card Card1 = Player1.DropCard();
Card Card2 = Player2.DropCard();
Card P1WarCard = Player1.WarCard(1);//Cards Used in the First War
Card P2WarCard = Player2.WarCard(1);
//if statement saying if the player does not have two cards then exit the program
//Cards Used in the Second War
Card P1DubWarCard = Player1.WarCard(2);
Card P2DubWarCard = Player2.WarCard(2);



//If player 1 has a higher rank, then...
if (Card1.rank > Card2.rank)
{
//Player 1 takes both cards
Player1.add(Card1);
Player1.add(Card2);
turns ++;
}
else if (Card1.rank < Card2.rank)
{
//Player 2 takes both cards
Player2.add(Card2);
Player2.add(Card1);
turns++;
}
else
{
if (Player1.size() <3 || Player2.size() <3)
{
System.exit(0);
}
//War
wars ++;
turns++;
// while (Player1.size() >=2 && Player2.size() >=2)
{
if (P1WarCard.rank > P2WarCard.rank)
{
//Player1.add(Card1);
Player1.add(Card2);
//Player1.add(P1WarCard);
Player1.add(P2WarCard);
//Player 1 takes 4 cards
}
else if (P1WarCard.rank < P2WarCard.rank)
{
//Player2.add(Card2);
Player2.add(Card1);
Player2.add(P1WarCard);
//Player2.add(P2WarCard);
//Player 2 takes 4 cards
}
else
{
if (Player1.size() <3 || Player2.size() <3)
{
System.exit(0);
}
//Dubwar
dubwars++;
turns++;
//while (Player1.size() >=3 && Player2.size() >=3)
{


if (P1DubWarCard.rank > P2DubWarCard.rank)
{
//Player1.add(Card1);
Player1.add(Card2);
//Player1.add(P1WarCard);
Player1.add(P2WarCard);
//Player1.add(P1DubWarCard);
Player1.add(P2DubWarCard);
//Player 1 takes 6 cards
}
else if (P1DubWarCard.rank < P2DubWarCard.rank)
{
//Player2.add(Card2);
Player2.add(Card1);
Player2.add(P1WarCard);
//Player2.add(P2WarCard);
Player2.add(P1DubWarCard);
//Player2.add(P2DubWarCard);
//Player 2 takes 6 cards
}
else
{
System.out.println("NUCLEAR WAR");
break;
}
}

}
}
}
}
}



System.out.println("The average number of turns was " +turns/n);
System.out.println("The average number of wars was " +wars/n);
System.out.println("The average number of double wars was " +dubwars/n);

}



}

我的问题是,如果没有足够的卡牌来完成双人 war ,如何防止进入双人 war ?此时牌组中必须至少有三张牌。

war 卡牌方法也只是返回牌组中该位置的卡牌。

这是我第一次发帖,如果我做错了什么,我深表歉意。

谢谢

克里斯

最佳答案

您始终可以使用boolean来确定游戏是否正在运行,然后在while循环开始时检查它是否仍应设置为true,例如:

boolean isPlaying = true;

while (isPlaying) {
if (numberOfCardsLeft <= cardsNeededToContinue) {
isPlaying = false;
}
//rest of logic here
}

关于java - 如果满足某些条件,如何防止进入 while 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com