Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package AV3;
- import java.util.Objects;
- public class PlayingCard {
- private int rank;
- private PlayingCardType type;
- public PlayingCard(int rank, PlayingCardType type)
- {
- this.rank=rank;
- this.type=type;
- }
- public void setType(PlayingCardType type) {
- this.type = type;
- }
- public void setRank(int rank) {
- this.rank = rank;
- }
- public int getRank() {
- return rank;
- }
- public PlayingCardType getType() {
- return type;
- }
- @Override
- public String toString() {
- return String.format("%d %s",rank,type.name());
- }
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- PlayingCard that = (PlayingCard) o;
- return rank == that.rank && type == that.type;
- }
- @Override
- public int hashCode() {
- return Objects.hash(rank, type);
- }
- }
- package AV3;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.List;
- public class Deck {
- private PlayingCard[] cards;
- private boolean[] isDealt;
- private int dealtTotal;
- public Deck() {
- cards = new PlayingCard[52];
- isDealt=new boolean[52];
- dealtTotal=0;
- for (int i = 0; i < PlayingCardType.values().length; i++) {
- for (int j = 0; j < 13; j++) {
- cards[i * 13 + j] = new PlayingCard(j + 2, PlayingCardType.values()[i]);
- }
- }
- }
- public PlayingCard[] getCards() {
- return cards;
- }
- public void setCards(PlayingCard[] cards) {
- this.cards = cards;
- }
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- Deck deck = (Deck) o;
- return Arrays.equals(cards, deck.cards);
- }
- @Override
- public int hashCode() {
- return Arrays.hashCode(cards);
- }
- @Override
- public String toString() {
- StringBuilder stringBuilder = new StringBuilder();
- for (PlayingCard card : cards) {
- stringBuilder.append(card.toString());
- stringBuilder.append("\n");
- }
- return stringBuilder.toString();
- }
- public boolean hasCardsLeft() {
- return (cards.length - dealtTotal) > 0;
- }
- public PlayingCard dealCard() {
- if (!hasCardsLeft()) return null;
- int card = (int) (Math.random() * 52);
- if (!isDealt[card]) {
- isDealt[card] = true;
- dealtTotal++;
- return cards[card];
- }
- return dealCard();
- }
- public PlayingCard[] shuffle() {
- List<PlayingCard> playingCardList = Arrays.asList(cards);
- Collections.shuffle(playingCardList);
- return cards;
- }
- public static void main(String[] args) {
- Deck deck = new Deck();
- System.out.println(deck);
- deck.shuffle();
- System.out.println(deck);
- PlayingCard card;
- while ((card = deck.dealCard()) != null) {
- System.out.println(card);
- }
- }
- }
- //PlayingCardType.values() vraka niza od enumeracijata ke iterira niz heart diamond..
- package AV3;
- import java.util.Arrays;
- public class MultipleDecks {
- private Deck[]decks;
- public MultipleDecks(int numOfDecks)
- {
- decks=new Deck[numOfDecks];
- for(int i=0;i<numOfDecks;i++)
- {
- decks[i]=new Deck();
- }
- }
- @Override
- public String toString() {
- StringBuilder stringBuilder=new StringBuilder();
- for(Deck deck : decks)
- {
- stringBuilder.append(deck.toString());
- stringBuilder.append("\n");
- }
- return stringBuilder.toString();
- }
- public static void main(String[] args) {
- MultipleDecks multipleDecks=new MultipleDecks(3);
- System.out.println(multipleDecks);
- }
- }
- package AV3;
- public enum PlayingCardType {
- HEARTS,
- DIAMONDS,
- SPADES,
- CLUBS
- }
Advertisement
Add Comment
Please, Sign In to add comment