Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java数组列表和一个Black Jack游戏_Java_Arrays_Blackjack - Fatal编程技术网

Java数组列表和一个Black Jack游戏

Java数组列表和一个Black Jack游戏,java,arrays,blackjack,Java,Arrays,Blackjack,我正在尝试制作一个非常简单的黑杰克游戏,但我在从阵列列表中抽取卡片并将它们放入玩家手和交易商手上时遇到了问题 这是我目前所拥有的,任何愿意帮忙的人都将不胜感激 我也意识到我并没有以最有效的方式去做 卡片阵列列表 import java.util.ArrayList; public class deck { ArrayList<card> deck = new ArrayList<card>(); public deck () { deck = new

我正在尝试制作一个非常简单的黑杰克游戏,但我在从阵列列表中抽取卡片并将它们放入玩家手和交易商手上时遇到了问题

这是我目前所拥有的,任何愿意帮忙的人都将不胜感激

我也意识到我并没有以最有效的方式去做

卡片阵列列表

import java.util.ArrayList;

public class deck {
    ArrayList<card> deck = new ArrayList<card>();

public deck () {

    deck = new ArrayList<card>();

    //Spades
    deck.add(new card ("2", "Spades"));
    deck.add(new card ("3", "Spades"));
    deck.add(new card ("4", "Spades"));
    deck.add(new card ("5", "Spades"));
    deck.add(new card ("6", "Spades"));
    deck.add(new card ("7", "Spades"));
    deck.add(new card ("8", "Spades"));
    deck.add(new card ("9", "Spades"));
    deck.add(new card ("10", "Spades"));
    deck.add(new card ("2", "Spades"));
    deck.add(new card ("J", "Spades"));
    deck.add(new card ("Q", "Spades"));
    deck.add(new card ("K", "Spades"));
    deck.add(new card ("A", "Spades"));
    //Clubs
    deck.add(new card ("2", "Clubs"));
    deck.add(new card ("3", "Clubs"));
    deck.add(new card ("4", "Clubs"));
    deck.add(new card ("5", "Clubs"));
    deck.add(new card ("6", "Clubs"));
    deck.add(new card ("7", "Clubs"));
    deck.add(new card ("8", "Clubs"));
    deck.add(new card ("9", "Clubs"));
    deck.add(new card ("10", "Clubs"));
    deck.add(new card ("2", "Clubs"));
    deck.add(new card ("J", "Clubs"));
    deck.add(new card ("Q", "Clubs"));
    deck.add(new card ("K", "Clubs"));
    deck.add(new card ("A", "Clubs"));
    //Hearts
    deck.add(new card ("2", "Hearts"));
    deck.add(new card ("3", "Hearts"));
    deck.add(new card ("4", "Hearts"));
    deck.add(new card ("5", "Hearts"));
    deck.add(new card ("6", "Hearts"));
    deck.add(new card ("7", "Hearts"));
    deck.add(new card ("8", "Hearts"));
    deck.add(new card ("9", "Hearts"));
    deck.add(new card ("10", "Hearts"));
    deck.add(new card ("2", "Hearts"));
    deck.add(new card ("J", "Hearts"));
    deck.add(new card ("Q", "Hearts"));
    deck.add(new card ("K", "Hearts"));
    deck.add(new card ("A", "Hearts"));
    //Diamonds
    deck.add(new card ("2", "Diamonds"));
    deck.add(new card ("3", "Diamonds"));
    deck.add(new card ("4", "Diamonds"));
    deck.add(new card ("5", "Diamonds"));
    deck.add(new card ("6", "Diamonds"));
    deck.add(new card ("7", "Diamonds"));
    deck.add(new card ("8", "Diamonds"));
    deck.add(new card ("9", "Diamonds"));
    deck.add(new card ("10", "Diamonds"));
    deck.add(new card ("2", "Diamonds"));
    deck.add(new card ("J", "Diamonds"));
    deck.add(new card ("Q", "Diamonds"));
    deck.add(new card ("K", "Diamonds"));
    deck.add(new card ("A", "Diamonds"));
}

public ArrayList<card> getCards(){
    return deck;
}

public card deal(){
    card one = deck.get((int) (Math.random() * deck.size()));
    deck.remove(one);
    return one;
}

}
玩家和经销商手牌等级

在这里,我想用数组中的两张随机牌填充dealPlayer&DealDealDealer,我现在正处于困境中,似乎无法找出任何有效的方法。。。提前感谢您的帮助,如果还有什么我需要发布的,请让我知道

import java.util.ArrayList;

public class dealer {

    deck deck = new deck();
    String dealerTopCardString = "";
    card playerHandCard;
    card dealerHandCard;
    ArrayList<card> dealerHand = new ArrayList<card>();
    ArrayList<card> playerHand = new ArrayList<card>();

public void start() {
    dealerHand = new ArrayList<card>();
    playerHand = new ArrayList<card>();
}

public void dealPlayer() {
    //LOOKING FOR HELP HERE
}

public void dealDealer() {
    //LOOKING FOR HELP HERE
}

public String getPlayerHand() {

    String playerHandString = "";
    for (int i = 0; i < playerHand.size(); i++)
        playerHandCard = playerHand.get(i);
        card card = new card(playerHandCard.getValue(), playerHandCard.getSuit());
        playerHandString += "\n";
        playerHandString += card.getValue();
        playerHandString += "\t";
        playerHandString += card.getSuit();

        return playerHandString;

    }

public String getDealerHand() {

        String dealerHandString = "";
        for (int i = 0; i < dealerHand.size(); i++)
            dealerHandCard = dealerHand.get(i);
            card card = new card(dealerHandCard.getValue(), dealerHandCard.getSuit());
            dealerHandString += "\n";
            dealerHandString += card.getValue();
            dealerHandString += "\t";
            dealerHandString += card.getSuit();

            return dealerHandString;
    }

public String getDealerTopCard(){

    return getDealerTopCard;
}

public int getPlayerHandValue(){

    return getPlayerHandValue;
}

public int getDealerHandValue(){


    return getDealerHandValue;
}

public void resetDealerHand(){
    dealerHand.clear();
}

public void resetPlayerHand(){
    playerHand.clear();
}

}

只需使用

然后从牌组的顶部拿下一张牌,这样做是为了处理起始牌

playerHand.add(deck.remove(0));   // top card to player
dealerHand.add(deck.remove(0));   // top card to dealer
playerHand.add(deck.remove(0));
dealerHand.add(deck.remove(0));

当你发布一个问题时,最好的做法是提问。这样,其他人可以帮助你看到你可能错在哪里

我只是想给你一些关于如何着手解决这个问题的一般性建议。如果您在实现它时遇到具体问题,您可以提出新问题,或者根据它的关联程度更新此问题

在真正的21点游戏中,你需要洗牌,然后移除最上面的4张牌。您可以在此处执行相同的操作:

取出最上面的4张牌,放在玩家/庄家手中。也许您可以使用remove方法删除数据组中的第一个或最后一个元素。 这看起来可能是家庭作业,因此可能需要使用ArrayList。但这并不是这里使用的最佳数据结构。如果你有选择的话,我会用。它具有有效的弹出和删除方法,用于从集合中取出第一个或最后一个项


提示:deque代表双端队列,但发音为deck。这是因为它在概念上就像一副纸牌……

谢谢你的建议,是的,这是学校作业,我非常喜欢编程,不幸的是,在今年开学之前,我们学校失去了编程老师,现在我们有一位老师对java知之甚少。。。可悲的是,我的大部分学习都是在网上完成的。。。有什么方法可以学习更多吗?“你似乎知道你的东西。”kylesurowiec——你的编程老师太差劲了。我的编程老师在我高中一年级时被逮捕了,但我们最终得到了一个更好的,所以一切顺利。我最喜欢的了解更多信息的方法之一是活跃在StackOverflow这样的网站上。我每天都通过阅读这个网站上的问题、答案和回答问题来学习新的东西。如果你的回答不好,别担心,你会被这里的好人否决,你可以删除它!为什么你要用一副56张的牌组加上额外的平分?@LeeDanielCrocker哇谢谢你指出这一点,肯定是打字错误。。。
playerHand.add(deck.remove(0));   // top card to player
dealerHand.add(deck.remove(0));   // top card to dealer
playerHand.add(deck.remove(0));
dealerHand.add(deck.remove(0));