2016-02-20 4 views
-2

В основном я делаю игру в блэкджек, поэтому первое, что я сделал, это сделать объект «карта».Объявление объекта arraylist (java)

public class Card { 

    int number; 
    int suit; 

    public static final String[] NUMBERS = {null, null, "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"}; 
    public static final String[] SUITS = {"Diamonds", "Clubs", "Spades", "Hearts"}; 

    public Card(int number, int suit) { 
    this.number = number; 
    this.suit = suit; 
    } 

    @Override 
    public String toString() { 
    return NUMBERS[number] + " of " + SUITS[suit]; 
    } 
} 

Следующая вещь, которую я сделал, сделать список массива карт, называемых cardlist, а затем что-то называется колода, которая является cardlist со стандартными картами:

import java.util.ArrayList; 

public class CardList { 

    public String name; 
    public ArrayList<Card> cards; 

    public CardList(String name) { 
    this.name = name; 
    this.cards = new ArrayList<Card>(); 
    } 

    public String getName() { 
    return name; 
    } 

    public Card getCard(int i) { 
    return cards.get(i); 
    } 

    public int howManyCards() { 
    return cards.size(); 
    } 

    public void addCard(Card card) { 
    cards.add(card); 
    } 
} 

, а затем палуба:

public class Deck extends CardList { 

    public Deck(String name) { 
    super(name); 

    for (int i = 0; i < 4; i++) { 
     for (int j = 2; j < 15; j++) { 
     addCard(new Card(j,i)); 
     } 
    } 
    } 
} 

В любом случае после этого я начал делать игру следующим образом:

import java.util.Scanner; 

public class BlackJack { 

    public static String[] getNames(int players) { 

    System.out.println("What are the names of the players?"); 
    String[] playerNames = new String[players]; 
    Scanner input = new Scanner(System.in); 

    for (int i = 0; i < players; i++) { 
     playerNames[i] = input.next(); 
    } 
    return playerNames; 
    } 

    public static int peoplePlaying() { 

    System.out.println("How many people are playing?"); 

    Scanner input = new Scanner(System.in); 
    int players = input.nextInt(); 

    return players; 
    } 

    public static void main(String[] args) { 

    int players = peoplePlaying(); 

    String[] playerNames = getNames(players); 

    Deck deck = new Deck; 

    System.out.println(deck); 

    } 
} 

Вторая в последнюю строку - моя неудачная попытка объявить колоду, а затем использовать ее с остальной частью программы. Поскольку колода - это список массивов, я не знаю, правильно ли это объявить. Когда я создал объект Deck, я сделал его так, чтобы он просто нуждался в String в качестве его имени и уже сделал бы 52 карты, но я не уверен точно, как это работает, как вы можете сказать.

Любая помощь очень ценится благодаря

+0

В качестве точки стиля подумайте об использовании перечисления для карточного костюма и значения карты в отличие от строковых массивов. – Makoto

ответ

0

Папка расширяет CardList и CardList требует параметра «String name» в конструкторе. Эта структура, очевидно, сделано для того, игроки могут иметь cardList, палуба является cardList и так далее ... так что если вы хотите, чтобы избавиться от пройти этот аргумент, ваш код должен быть таким,

public Deck() { 
    this("default_deck_name"); 
    //this will call the current Class' constructor which has a String Parameter, --> Deck(String name) 
} 

public Deck(String name) 
{ 
    super(name); 
    //this will call the Parent Class(CardList)'s constructor which has a String parameter 

    for (int i = 0; i < 4; i++) { 
    for (int j = 2; j < 15; j++) { 
     addCard(new Card(j,i)); 
    } 
    } 
} 

с этим способ вам не нужно передать имя аргумента при создании колоды

Deck defaultDeck = new Deck(); // this will create Deck instance with name default_deck_name 

, если вы хотите создать колоду с конкретным именем, которое вы можете использовать код ниже

Deck defaultDeck = new Deck("specific_name"); 

это называется Перегрузка конструктора.

1

Вы определили конструктор

public Deck(String name) 

так, чтобы создать колоду вы должны дать ему имя, как

Deck deck = new Deck(PlayerName[0]); 

Это где использование автозаполнение в вашей среде IDE поможет вам написать это.

Смежные вопросы