これはクラスの課題です。誰かに課題をやってもらうように頼んでいるわけではありませんが、ここに投稿する前に、私が受け取った 4 つのエラーと私のデッキがそうではないことについて助けを得ることを期待して、最善を尽くしました。なぜかシャッフルされる。
私の任務の指示:
この課題では、単純な戦争ゲームをプレイするプログラムを作成します。このゲームでは、各プレイヤーにフルデッキからカードが配られます。最も価値の高いカードを持っている人の勝ちです。配られたカードが同じ値の場合、引き分けとなり、どちらのプレイヤーも勝ちません。最も多くのラウンドを獲得したプレイヤーがゲームに勝利します。プレイヤーからの入力は必要ありません (あまり面白くありません!)。各プレイヤーに配られるカード、そのラウンドの結果、およびゲームの最終結果を印刷する必要があります。ユーザー入力を使用して、各ラウンド間の遅延を実装することができます。
私のカードクラス:
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 は、各プレイヤーが各ラウンドに与えられるカードを参照します