这是一个班级作业,我不是要求任何人为我完成作业,而是我已经尝试了我的最佳能力,然后张贴在这里,希望在我的4上获得一些帮助我收到的错误以及由于某种原因我的套牌没有被洗牌。Java程序 - 纸牌游戏战争
我的作业路线:
在这个作业中,你将创建起战争的一个简单的游戏程序。在这个游戏中,每个玩家从全套甲板上发牌。拥有最高价值卡的人获胜。如果被发牌的牌具有相同的价值,那么它是平局并且双方都不会获胜。赢得最多回合的球员赢得比赛。玩家不需要任何输入(不是很有趣!)。你应该打印每个玩家被发牌的牌以及该回合的结果和比赛的最终结果。您可能想要使用用户输入来实现每轮之间的延迟。
我的卡类:
public class Card {
private int cardNum;
final static String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
final static String[] ranks = {"2", "3","4","5","6","7","8", "9","10", "Jack", "Queen", "King", "Ace"};
Card (int theCard) {
setCardNum (theCard);
}
public void setCardNum (int theCard) {
cardNum = (theCard >= 0 && theCard <= 51)? theCard: 0;
}
public int getCardNum() {
return cardNum;
}
public String toString() {
return ranks[cardNum%13] + " of " + suits[cardNum/13];
}
public String getSuit() {
return suits[cardNum/13];
}
public String getRank() {
return ranks[cardNum%13];
}
public int getValue() {
return cardNum%13;
}
}
我的甲板类(在这里我有一个洗牌的错误):
public class Deck {
private Card[] deck = new Card[52];
private int topCard;
Deck() {
topCard = 0;
for (int i = 0; i < deck.length; i++)
deck[i] = new Card(i);
}
public void shuffle() {
topCard = 0;
for (int i = 0; i < 1000; i++) {
int j = (int)(Math.random()*52);
int k = (int)(Math.random()*52);
Card tmpCard = deck[j];
deck[j] = deck[k];
deck[k] = tmpCard;
}
}
public Card dealCard() {
Card theCard;
if (topCard < deck.length) {
theCard = deck[topCard];
topCard++;
}
else
theCard = null;
return theCard;
}
}
我的抗战游戏的主程序:
import java.util.Scanner;
public class WarGame {
public static void main(String[] args) {
Card[][] hands = new Card[2][1];
Deck myDeck = new Deck();
for (int i = 0; i < 53; i++) {
System.out.printf("\n Round %s of The War \n", i);
for (int c = 0; c < 1; c++)
for (int player = 0; player < hands.length; player++)
hands[player][c] = myDeck.dealCard();
for (int player = 0; player < hands.length; player++) {
System.out.printf("Player %d: ", player);
printHand(hands[player]);
int player1;
int player2;
if (player1.getValue() > player2.getValue())
System.out.println("Player One Wins The War");
else if (player2.getValue() > player1.getValue())
System.out.println("Player Two Wins The War");
else
System.out.println("The War Is A Tie");
}
}
}
public static void printHand(Card[] hand) {
for (int card = 0; card < hand.length; card++)
System.out.printf("%s", hand[card].toString());
System.out.println();
}
}
我的错误是如下:
----jGRASP exec: javac -g WarGame.java
WarGame.java:31: error: int cannot be dereferenced
if (player1.getValue() > player2.getValue())
^
WarGame.java:31: error: int cannot be dereferenced
if (player1.getValue() > player2.getValue())
^
WarGame.java:35: error: int cannot be dereferenced
else if (player2.getValue() > player1.getValue())
^
WarGame.java:35: error: int cannot be dereferenced
else if (player2.getValue() > player1.getValue())
^
4 errors
----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.
非常感谢您提供的任何帮助。
PLAYER1和player2是指每个球员给予每一轮
+1首先尝试..! – cowls 2013-03-11 17:47:04
在主程序中从'player1'和'player2'中删除'.getValue()'。这将摆脱你目前的错误。但是,当你尝试比较未初始化的变量时你会遇到问题。 'player1'和'player2'究竟是指什么? – jonhopkins 2013-03-11 17:47:37
您应该使用适当的缩进格式来使代码更容易阅读 – cowls 2013-03-11 17:48:29