這是一個班級作業,我不是要求任何人爲我完成作業,而是我已經嘗試了我的最佳能力,然後張貼在這裏,希望在我的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