gpt4 book ai didi

java - 如何创建简单的扑克手牌算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:56:47 25 4
gpt4 key购买 nike

所以我一直在用 Java 创建这个简单的扑克游戏。我已经创建了一副纸牌(纸牌是由字符串和整数组成的对象)和数组列表来表示您的手和庄家的手。一旦我在 yourHand 数组中有牌,我如何创建一种方法来检查不同的花色?我想让它保持简单,就像让它只检查对和 3 个一样。我该如何处理?我认为可能完成的方法是创建一个循环来检查数组中的每个元素,并查看这些元素中的任何一个是否等于另一个。但这似乎说起来容易做起来难,因为我真的不明白我会怎么做。然后这个想法出现了,因为卡片对象的类型是字符串和整数,所以这样做会不会有问题?我是编程新手,将不胜感激任何帮助。谢谢! (另外,如果你们想看我设置卡片对象的代码,请告诉我,我在不同的类中有这些代码)

公共(public)类 pokerMain 实现 StackInterFace {

public static void main (String [] args){
ArrayList<String> suits = new ArrayList<String>();//array list for the card suits
ArrayList<Integer> val = new ArrayList<Integer>();//array list for card values
ArrayList<CARDS> newCards = new ArrayList<CARDS>();//array list for cards with assigned val/suits
ArrayList<CARDS> yourHand = new ArrayList<CARDS>();//array list for your hand
ArrayList<CARDS> dealerHand = new ArrayList<CARDS>();//array list for the dealer's hand
Stack<CARDS> deck = new Stack();//Stack to represent deck
suits.add("Clubs");//These are the suits, added to the suits ArrayList
suits.add("Hearts");
suits.add("Diamonds");
suits.add("Spades");

System.out.println("suits contains: " + suits );//Testing for suit

for(int i = 1; i <= 13; i ++){//loop that adds all 13 values to to the val ArrayList
val.add(i);
}

System.out.println("val contains " + val);//Testing for val


for(Integer i : val) {//second attempt of adding objects to newCards
for(String s : suits) {
newCards.add(new CARDS(s, i));
}
}

System.out.println("the full deck contains: ");

System.out.println(newCards.toString());//prints newCards arrayList

Collections.shuffle(newCards);//shuffles array newCards

System.out.println("When shuffled this is what is in the deck");
System.out.println(newCards.toString());//prints shuffled array

deck.addAll(newCards);//adds newCards into the decks stack




System.out.println("Test print stack");
System.out.println(deck.toString());//prints stack as test

System.out.println("You pulled a " + deck.pop());//test pulling card from deck

for(int i = 0; i < 5; i ++){//loop to draw cards and put into hand
yourHand.add(deck.pop());
}
for(int i = 0; i < 5; i ++){//loop to draw cards and put into hand
dealerHand.add(deck.pop());
}

System.out.println("Please draw your cards");
System.out.println("Your hand contains:");
System.out.println(yourHand.toString());

for(int i = 0; i < yourHand.size(); i ++){//loop to check for pairs

}
}





@Override
public Object pop() {
// TODO Auto-generated method stub
return null;
}

@Override
public Object peek() {
// TODO Auto-generated method stub
return null;
}

@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}

@Override
public void clear() {
// TODO Auto-generated method stub

}



@Override
public void push(ArrayList newCards) {
// TODO Auto-generated method stub

}



@Override
public void addAll(ArrayList newCards) {
// TODO Auto-generated method stub

}

最佳答案

一种简单的方法是按面值对卡片进行排序。这样可以很容易地在一行中找到 N 个相同的值。

我不会写 java,所以这可能充满了语法错误,但请执行以下操作:

class CardFaceComparartor implements Comparator<CARD>
public int compare(CARD a, CARD b) {
return a.getFaceval() - b.getFaceaval;
}
}

...

Collections.sort(yourHand, CardFaceComparator);
int numSame=1;
int sets[4] = {0,0,0,0} //counts singles, pairs, ...
bool maybeFlush=True;
for (i=0; i<yourHand.size()-; i++) {
if (yourHand[i].getFaceval()== yourHand[i-1].getFaceval())
numSame+=1;
else {
sets[numSame]+=1;
numSame = 1;
}
maybeFlush = maybeFlush & (yourHand[i].getSuit() == yourHand[i-1.getSuit());

}
// now you have all the info to find best hand.

关于java - 如何创建简单的扑克手牌算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34077767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com