我是一名java初学者,创建了一个基本上模仿单人5平局游戏的2级课程“VideoPoker”。在这场比赛中,一副牌被洗牌,前5张牌(现在洗牌的牌)被用来打5张牌。用户可以移除卡片发放时给予的5张卡片中的一部分,全部卡片或全部卡片。如果用户取出一张卡,它将被移除,并用下一张顶牌替换。我被卡在用户决定取出卡的地步。在我的程序中,当有人删除所有卡片或有时甚至只有一些卡片#2(索引1)和卡片#4(索引3)总是留在下一手(5张卡片)打印中。我的尝试是在代码图片下面:从卡组底部更换卡片
Deck.java:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Random;
public class Deck {
// Constructing a deck from two arrays
String[] suit = { "C", "D", "H", "S" };
String[] rank = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
ArrayList<String> deck = new ArrayList<String>(suit.length * rank.length);
int currentCard = 0;
// Storing public variables
int suits = suit.length;
int ranks = rank.length;
int deckSize = deck.size();
// Constructs a deck with 52 cards
public Deck(){
for(int i = 0; i < suits; i ++){
for(int j = 0; j < ranks; j++){
String temp = rank[j] + suit[i];
deck.add(temp);
}
}
}
public String toString(){
return Arrays.deepToString(deck.toArray());
}
// Fisher-Yates Shuffle
public ArrayList<String> shuffle(){
Collections.shuffle(deck);
return deck;
}
public String deal(){
return deck.get(currentCard++);
}
public String remove(int i){
return deck.remove(i);
}
public String get(int i){
return deck.get(i);
}
public ArrayList<String> getList(){
return deck;
}
}
Dealer.java(测试仪程序):
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Dealer {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Deck testDeck = new Deck();
System.out.println(testDeck);
testDeck.shuffle();
System.out.println(testDeck);
for (int i = 0; i < 5; i ++){
System.out.print(testDeck.deal() + " ");
}
String choice;
for (int i = 0; i < 5; i++){
System.out.print("\nWould you like to remove card " + (i + 1) + "? ");
choice = in.next();
if (choice.equals("Y")){
testDeck.remove(i);
}
}
for (int i = 0; i < 5; i++){
System.out.print(testDeck.get(i) + " ");
}
}
}
输出:
就像一个审美笔记,你可以考虑用'T'替换'10',这样所有的等级都是一个字符。 – AJMansfield 2014-12-08 02:18:02
@AJMansfield谢谢,会做。 – mshades 2014-12-08 02:20:15
尝试移除卡1几次,或在每张卡被移除后显示手。这将对发生的事情给出一个公平的想法。 – BevynQ 2014-12-08 02:40:58