私はクレイジーな 8 の Java カード ゲームを作成し、1 人のプレイヤーの手に対して一連のカードを作成しましたが、その手をプリントアウトしようとすると、ランダムな文字の寄せ集めになります。私もカードクラスを持っていますが、それは問題ないようです。助けてください。
エラー:
Welcome to Crazy Eights!(Type 0 to start)
0
Your Hand:
[LnnajiO.Card;@73ae74f5
カードクラス:
import java.util.Random;
public class Card {
//All of the card numbers, in strings
final String[] FACESTRINGS = {"" , "Ace" , "Two", "Three", "Four", "Five", "Six",
"Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };
//All of the card numbers as integers
final int[] FACENUMS = {0,1,2,3,4,5,6,7,8,9,10,11,12,13};
final String[] SUITSTRINGS = {"Hearts", "Diamonds", "Spades", "Clubs"};
final int[] SUITNUMS = {1,2,3,4};
int FaceNumIndex;
int SuitIndex;
int cardFaceNumber;
String cardFaceString;
int suitFaceNumber;
String suitFaceString;
Random rand = new Random();
//Default Random Card that assignes a random suit and number
public Card(){
int tempSuit = rand.nextInt(3);
int tempNumber = rand.nextInt(13)+1;
FaceNumIndex = tempNumber;
cardFaceNumber = FACENUMS[tempNumber];
cardFaceString = FACESTRINGS[tempNumber];
suitFaceNumber = SUITNUMS[tempSuit];
suitFaceString = SUITSTRINGS[tempSuit];
}
//Overrides the default
public Card(int suit, int face){
//Return 1-13 for the face and 0-3 for the suit
FaceNumIndex = face;
SuitIndex = suit;
cardFaceNumber = FACENUMS[face];
cardFaceString = FACESTRINGS[face];
suitFaceNumber = SUITNUMS[suit];
suitFaceString = SUITSTRINGS[suit];
}
public void setFaceName(int faceName){
//Takes an int to set the Suit of the card input 1-13
FaceNumIndex = faceName;
cardFaceNumber = FACENUMS[faceName];
cardFaceString = FACESTRINGS[faceName];
}
public void setSuitName(int suitName){
//Takes an int 1-4 to set the suit name from the array
SuitIndex = suitName;
suitFaceNumber = SUITNUMS[suitName];
suitFaceString = SUITSTRINGS[suitName];
}
//Returns Face Values
public int getFace(){
return FACENUMS[FaceNumIndex];
}
public String getFaceName(){
return FACESTRINGS[FaceNumIndex];
}
//Return Suit Values
public int getSuit(){
return SUITNUMS[SuitIndex];
}
public String getSuitName(){
return SUITSTRINGS[SuitIndex];
}
//Compares this card to the returned class
public boolean isHigherThan(Card passCard, boolean AceHigher){
int tempCardSuit = passCard.getSuit();
int tempCardFace = passCard.getFace();
if (tempCardFace>FaceNumIndex){
return false;
}else if (tempCardFace<FaceNumIndex){
return true;
}else{
if (tempCardSuit>SuitIndex){
return false;
}else if(tempCardSuit<SuitIndex){
return true;
}else{
System.out.println("The Cards are equal");
return false;
}
}
}
//Override for previous isHigherThan
public boolean isHigherThan(Card PassCard){
return isHigherThan(PassCard, true);
}
public String toString(){
return cardFaceString + " of " + suitFaceString;
}
public boolean isHigherThan(int i, String string) {
// TODO Auto-generated method stub
return false;
}
}
また、この「if」ステートメントでは、player2 の手札のいずれかの「suitFaceNumber」または「cardFaceNumber」のいずれかが、開始カードの「suitFaceNumber」または「cardFaceNumber」と一致するかどうかをチェックするようにします。 1つずつ行うのではなく。
「もし」ステートメント
if(player2Hand[0].cardFaceNumber==startingCard.cardFaceNumber ||
player2Hand[4].suitFaceNumber==startingCard.suitFaceNumber ){
}