我有一个4类的代码,甲板,卡,玩家和测试。
我的想法是创建一个21点游戏,玩家有你的“手”与甲板上提供的卡。我的代码工作正常,但是我只想要一个方法返回两个不同的数组。
我的代码简历:
牌:一张牌(价值,花色)
套牌:创建一个包含 52 张牌的牌阵列。一个类的方法提供Cards()来获取玩家的卡。
玩家:一类有牌阵列的“手牌”
问题在哪里?
看“Deck”类,我使用了2个方法,provideCards()和provideNewCards(),这两个方法是相同的,但是为每个玩家返回不同的数组。我不能在我的方法中使用provide cards()" ArrayList player = new ArrayList
我的代码:
甲板等级:
package jamilzin.cassino;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Random;
// /*
public class Deck {
private ArrayList<Card> deck = new ArrayList<>();
public ArrayList<Card> playerA = new ArrayList<>();
public ArrayList<Card> playerB = new ArrayList<>();
private ArrayList<String> suits = new ArrayList(Arrays.asList(" Diamonds", " Clubs", " Spades", " Hearts"));
Random gerador = new Random();
public Deck(){
for(int j=0; j<suits.size(); j++){ // Idea: create a 13 cards for each suits
for(int i=0; i<13; i++){
deck.add(new Card((i + 1), suits.get(j)));
} // for i
} // for j
Collections.shuffle(deck); // randomize the deck
} // deck()
public ArrayList<Card> provideCards(){
int number = gerador.nextInt(52);
while(deck.get(number)==null){
number = gerador.nextInt(52);}
Card card = (deck.get(number));
playerA.add(card);
deck.set(number, null);
return playerA ;}
public ArrayList<Card> provideNewCards(){
int number = gerador.nextInt(52);
while(deck.get(number)==null){
number = gerador.nextInt(52);}
Card card = (deck.get(number));
playerB.add(card);
deck.set(number, null);
return playerB ;}
@Override
public String toString(){
return deck.toString();
}
}
卡类:
package jamilzin.cassino;
public class Card {
private String suit;
private int value;
Card(int value, String suit){
this.value = value;
this.suit = suit;
}
public String getSuit() {
return suit;
}
public int getValue() {
return value;
}
@Override
public String toString() {
return getValue() + getSuit();
//return Integer.toString(getValue());
}
}
玩家等级:
package jamilzin.cassino;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.*;
public class Player {
ArrayList<Card> hands = new ArrayList<>();
public Player(){
this.hands = new ArrayList<>();
}
public ArrayList<Card> getHands() {
return hands;
}
public void setHands(ArrayList<Card> hands) {
this.hands = hands;
}
}
测试类:
package jamilzin.cassino;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Cassino {
public static void main(String[] args) {
Deck deckMaster = new Deck();
Player PlayerA = new Player();
Player PlayerB = new Player();
for(int i=1;i<=5;i++){
PlayerA.setHands(deckMaster.provideCards());}
for(int i=1;i<=5;i++){
PlayerB.setHands(deckMaster.provideNewCards());}
System.out.println(PlayerA.getHands());
System.out.println(PlayerB.getHands());
System.out.println(deckMaster);
}
}
类测试结果:运行项目结果
枚举套装
public enum Suit {
DIAMONDS, CLUBS, SPADES, HEARTS
}
卡西诺
public class Cassino {
public static void main(String[] args) {
Blackjack game = new Blackjack(2);
System.out.println(game);
}
}
21点
public class Blackjack {
private final Player[] players;
private final Deck deck;
public Blackjack(int player) {
this.players = createPlayer(player);
this.deck = new Deck();
}
public Player[] createPlayer(int player){
Player[] players = new Player[player];
for (int i = 0; i < player; i++) {
List<Card> cards = new ArrayList<>();
for (int j = 0; j < 5; j++) {
cards.add(deck.provideCard());
}
players[i] = new Player(cards);
}
return players;
}
public Player[] getPlayers() {
return players.clone();
}
public Deck getDeck() {
return deck;
}
@Override
public String toString() {
return "Blackjack{" +
"players=" + Arrays.toString(players) +
", deck=" + deck +
'}';
}
}
甲板
public class Deck {
private final LinkedList<Card> deck;
public Deck() {
Suit[] suits = Suit.values();
List<Card> cards = new ArrayList<>();
for (Suit suit : suits) { // Idea: create a 13 cards for each suits
for (int j = 0; j < 13; j++) {
cards.add(new Card((j + 1), suit));
}
}
Collections.shuffle(cards); // randomize the deck
deck = new LinkedList<>(cards) {
};
} // deck()
public Card provideCard() {
return deck.pollFirst();
}
@Override
public String toString() {
return "Deck{" +
"deck=" + deck +
'}';
}
}
卡
public class Card {
private final Suit suit;
private final int value;
Card(int value, Suit suit) {
this.value = value;
this.suit = suit;
}
public Suit getSuit() {
return suit;
}
public int getValue() {
return value;
}
@Override
public String toString() {
return getValue() + getSuit().toString();
//return Integer.toString(getValue());
}
}
选手
public class Player {
List<Card> hand;
public Player(List<Card> cards) {
this.hand = cards;
}
public List<Card> getHand() {
return hand;
}
public void setHand(List<Card> hand) {
this.hand = hand;
}
public void addToHand(Card card){
this.hand.add(card);
}
@Override
public String toString() {
return "Player{" +
"hand=" + hand +
'}';
}
}
问题内容: 在Python中,我想编写一个返回另一个函数的函数。返回的函数应该可以通过参数调用,并返回高度和半径为圆柱的体积。 我知道如何从Python中的函数返回 值 ,但是如何返回 另一个函数 ? 问题答案: 使用Python尝试一下: 这样使用它,例如与和: 注意,返回一个函数很简单,只需在函数内部定义一个新函数,然后在最后返回它- 小心地为每个函数传递适当的参数。仅供参考,从另一个函数返回
以下是传入的JSON: 这里的JSONObject[“time”]不是字符串是我将它放入JSONArray时遇到的错误
问题内容: 我想使用AsyncTask从服务器获取Ftp文件夹列表,并将文件夹名称ArrayList返回到主类并更新微调适配器。 在主班我有带适配器的微调器 在AsyncTask中: 那么我应该如何用主类中的ArrayList替换AsyncTask中的arraylist并动态更新Spinner Updater? 问题答案: 您已经将ArrayList 设为 static ,也将其设为public。
问题内容: 我正在寻找在表上创建MySQL触发器。本质上,我正在创建活动流,并且需要记录用户的操作。当用户发表评论时,我希望该表上的数据库触发器触发并: 抓住最后插入的行的ID(注释行的ID)。 使用最后插入的行中的数据对活动表执行INSERT。 实际上,我将复制此触发器以删除评论。 我的问题: LAST_INSERT_ID()是获取ID的最佳方法吗? 如何正确存储最后插入的注释行中的数据,以便在
问题内容: 在Bruce Eckel的“ Thinking In Java,第四版”的第428页(有关类型信息的章节)中,具有以下示例: 也许我有点累,但是我看不到add()方法中对add()的调用是如何工作的。我一直认为它应该有一个引用,或者是一个静态方法(并且我在ArrayList或List中找不到静态add())。我想念什么? 我只是为自己测试,发现这可行: 问题答案: Java为这样的方法