任务分配的方向是:编写战争游戏。在战争中,如果卡牌的价值大于对手的卡牌,您将获得1分。如果对手的牌大于您的牌,则对手得到一个点。如果你打领带,那是一场战争!这意味着下一手值得2分。如果是另一局,则下一局得4分,而您继续加2直到局被打破。然后得分恢复正常。
1)您应该使用Cards类来获得2张扑克牌。
2)询问用户他们想玩几轮。
3)如果输入的回合数为负数,则有一个循环来捕捉。
4)如果他们想玩0回合,则结束程序。
5)每轮打印用户的汽车和计算机卡。
6)每轮比赛后打印出正确的分数。
7)ace为低(价值1分)。
8)在所有回合结束后,打印一条消息,告诉用户他们是赢了,输了还是平局。
我已经准备好驱动程序类(请参见下文)。我需要帮助创建一个可以完成上述工作的类。在每一轮之后,都应要求用户按Enter键以进入下一轮。 这是我的驾驶员代码,它提供了卡号和西装。
public class Cards
{
private int A;
private int B;
private String c;
private String b;
public Cards()
{
getSuit();
getCardName();
suit();
name();
}
public int getSuit()
{
A = (int) (Math.random()*4+1); //rolls a number between 1 and 4
return A;
}
public int getCardName()
{
B = (int) (Math.random()*13+1); //rolls a number between 1 and 13
return B;
}
public String suit()
{
if (A == 1) b = "Hearts";
else if (A == 2) b = "Diamonds";
else if (A == 3) b = "Clubs";
else b = "Spades";
return b;
}
public String name()
{
if (B == 1) c = "Ace";
else if (B == 2) c = "2";
else if (B == 3) c = "3";
else if (B == 4) c = "4";
else if (B == 5) c = "5";
else if (B == 6) c = "6";
else if (B == 7) c = "7";
else if (B == 8) c = "8";
else if (B == 9) c = "9";
else if (B == 10) c = "10";
else if (B == 11) c = "Jack";
else if (B == 12) c = "Queen";
else c = "King";
return c;
}
public String toString()
{
return c + " of " + b;
}
}
答案 0 :(得分:0)
我想对您的代码进行审查,希望对您有所帮助。
getSuit()和getCardName()引起副作用。调用getCardName()导致卡号发生更改。这不是很好,因为大多数开发人员都期望 getter 方法不会更改对象。例如,以下代码会令人困惑:
card.name(); // "Ace"
card.name(); // "Ace"
card.getCardName(); // 10. Should be 1???
card.name(); // "10". Huh?
最好在构造函数中设置卡的花色和编号。至少将方法设置为私有。
suit()和name()方法返回一个字符串。无需将值保存到类字段b和c中,除非您在toString()方法中使用它们,除非可以将其重写为:
return name() + " of " + suit();
这将减少您的数据重复。
您可能会考虑循环生成(和存储!)卡,而不是随机生成,因为当前两个玩家都可以绘制完全相同的卡。虽然这可能不符合要求,但我不希望两位玩家在战争游戏中都能抓到同一张牌。
答案 1 :(得分:-1)
我已经编写了课程,它看起来应该像这样:
import java.util.Scanner;
public class WarGame extends Cards {
public static void main(String args[]) {
boolean playing = true;
int myScore = 0;
int oppsScore = 0;
int round = 0;
int increment = 1;
while (playing) {
Scanner scan = new Scanner(System.in);
int input = scan.nextInt();
if (input == 0 || input < 0)
{
System.out.println("INVALID ROUND NUMBER ENTERED!");
playing = false;
}
while (round <= input)
{
Cards myCard = new Cards();
Cards oppsCard = new Cards();
System.out.println("You have the " + myCard.toString());
System.out.println("The computer has the " + oppsCard.toString());
if (myCard.getSuit() > oppsCard.getSuit())
{
myScore += 1;
}
else if (oppsCard.getSuit() > myCard.getSuit())
{
oppsScore += 1;
}
else
{
increment *= 2;
System.out.println("WAR!!!!");
}
System.out.println("Your score: " + myScore);
System.out.println("Computer's score: " + oppsScore);
}
}
if (myScore > oppsScore) {
System.out.println("You win!");
} else if (myScore < oppsScore) {
System.out.println("You lose!");
} else {
System.out.println("It's a tie!");
}
}
}