java - Java中的纸牌游戏: Creating a "hand of cards"

标签 java

我首先想说,这不是家庭作业,而是我正在使用 Java 进行的一个宠物项目,以便更好地理解完整的 Java 程序,并且希望这将是我制作自己的 GUI 的第一次尝试。

除此之外,我还有一个关于从当前代码创建一手牌的问题。就目前而言,我有一个名为 DummyRummy 的主类,一个用于创建纸牌的类,一个创建标准牌组的类(其中包括 Jokers 并在创建新牌组时“洗牌”牌组) ) 和一个 PlayerHands 类。我严格使用 ArrayList 来处理所有代码,并且 PlayersHands 类应该返回两个将使用的 ArrayList 。但是,当我尝试调用 public static void main() 中的 PlayerHands() 方法时,由于某种原因无法找到 PlayerHands 。 .. 这是 PlayerHands 的代码:

package dummyrummy;
public class PlayerHands {
    private Card[] playerOneCards;
    private Card[] playerTwoCards;
    private int[] value;

    PlayerHands(deck d, int round)
    {
        value = new int[round+3];
        playerOneCards = new Card[round+2];
        playerTwoCards = new Card[round+2];
               //(round+2) is the handsize at any given time
        for (int x=0; x<round+3; x++)
        {
        playerOneCards[x] = d.drawFromDeck(); //fills up one hand.
        playerTwoCards[x] = d.drawFromDeck(); //fills up second hand.
        }
    }
}

这是 DummyRummy 类。

package dummyrummy;
import java.util.*;
public class DummyRummy {
    public static void main(String[] args) {
        deck testDeck;
        testDeck = new deck();

        System.out.println(testDeck.getTotalCards());
        System.out.println(testDeck.getClass());
        int round = 1;
        PlayerHands(testDeck, round); //This is where the error is occurring        
        }//End of arguments
    }//End of DummyRummy class

这是Card 类:

package dummyrummy;
public class Card
{
    private short rank, suit;
    private static String[] suits = { "Hearts", "Spades", "Diamonds", "Clubs", "Joker"    };
    private static String[] ranks = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" };
    private static String[] jokers = {"Joker", "Joker"};
    private static String[] ranks2 = {"0", "0"};
    public static String rankAsString( int __rank ) {
        if (__rank != 0){
            return ranks[__rank];
        }//End of if statement
        return ranks2[__rank];
    }//End of rankAsString class

    Card(short suit, short rank)
    {
        this.rank=rank;
        this.suit=suit;    
    }//End of Card Initializer

    public @Override String toString()
    {
        if(suit == 5){
            return "Joker";
        }//End of if statement that calls jokers
        if(rank == 0){
            return "Joker";
        }
        return ranks[rank] + " of " + suits[suit];              
    }//End of toString method

    public short getRank() {
         return rank;
    }//End of getRank method

    public short getSuit() {
        return suit;
    }//End of getSuit method
}//End of Card

最后,这是 deck() 类:

package dummyrummy;
import java.util.Random;
import java.util.ArrayList;

public class deck {
    private ArrayList<Card> cards;
    deck()
    {
        cards = new ArrayList<Card>();
        int index_1, index_2;
        Random generator = new Random();
        Card temp;

       short jokerSuit=5;
       short jokerRank = 0;
           cards.add(new Card(jokerSuit, jokerRank));
           cards.add(new Card(jokerSuit,jokerRank));
        for (short suit=0; suit<=3; suit++)
        {
             for (short rank=0; rank<=12; rank++)
             {
                  cards.add(new Card(suit,rank));
             }
        }//End of for-loop       
        int deckSize = 54;             
        for (int i=0; i<1000; i++)
        {
            index_1 = generator.nextInt( cards.size() );
            index_2 = generator.nextInt( cards.size() );
            temp = cards.get( index_2 );                    
            cards.set( index_2 , cards.get( index_1 ) );
            cards.set( index_1, temp );
        }//End of for-loop
    }//End of deck()
    public Card drawFromDeck()
    {
    /*
     * This method removes the top card of the already shuffled deck.          
     * The next step to take with this class is put the drawn card into another
     *     array that represents a players hand.  
     * This will take two arrays, and must be called depending on what player   'drawsFromDeck'.
     */        
        return cards.remove( 0 );
    }//End of drawFromDeck()
    public int getTotalCards()
    {
        return cards.size();   
    }//End of getTotalCards()
}//End of class deck

感谢您抽出宝贵的时间,非常感谢您提供的任何帮助。如果需要的话,我也非常乐意提供我的其他代码。

编辑:我已经添加了上面的类和包。

最佳答案

PlayerHands(deck, int) 是一个构造函数。因此你必须这样调用它(在类 DummyRummy 中):

new PlayerHands(testDeck, round);

由于我猜您想使用您创建的实例,因此您应该保存对变量的引用:

PlayerHands playerHands = new PlayerHands(testDeck, round);

关于java - Java中的纸牌游戏: Creating a "hand of cards",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20926835/

相关文章:

java - Thread.sleep() 阻塞主 UI 线程

java静态字段会在线程之间同步吗?

java - 如何编写mockito测试用例来上传文件,如下面给定的 Controller 所示?

java - Stack 比扩展 Vector 更好

java - Eclipse 已停止工作并且不再启动

java - 未能延迟初始化角色多对多关系的集合

java - Spring MVC- REST POST - 错误请求 400

java - "-Drun.profiles=.."尝试执行 Spring Boot jar 时不起作用

java - 除非测试,否则不会创建日志

java - 我想并排输出多个三角形,但它们都出现在彼此的顶部