わかりやすいJava オブジェクト指向編 プログラミング演習 その2
CardクラスとCardDeckクラス
前回、Cardクラスを作成しましたが、今回はCardクラスのメソッドを追加し、新たにCardDeckクラスを作成します。
Cardクラス
public class Card { // 1-52の物理番号 private int n; // 1つの種類の情報のカードの枚数 static final int RANK = 13; // カードの種類の数 static final int SUIT = 4; // 札文字列の配列 static final String[] NS = {"A", "2", "3", "4", "5", "6" , "7", "8", "9", "10", "J", "Q", "K"}; // 札種類の文字列の配列 static final String[] SS = {"スペード", "ダ イ ヤ", "ク ラ ブ", "ハ ー ト"}; // 札スコアの配列 static final int[] PS = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10 , 10, 10, 10}; public Card(int n) { this.n = n; } public int getNum() { return n; } // 物理番号に対応する札番号(1~13)を返す public int cardNumber() { return (n - 1) % RANK + 1; } // 物理番号に対応する札の種類番号(0~3)を返す public int suitNumber() { return (n - 1) / RANK; } // 札の点数を返す public int score() { return PS[cardNumber() - 1]; } // 札番号の文字列表現を返す public String cardNumberString() { return NS[cardNumber() - 1]; } // 札の種類の名前 public String suitName() { return SS[suitNumber()]; } // このクラスの文字列表現を返す public String toString() { return suitNumber() + " " + cardNumberString(); } public static void main(String[] args) { for(int i = 1; i <= 52; i++) { Card c = new Card(i); /* System.out.printf( "number=%2d cardNumber=%2d suitNumber=%1d\n", c.getNum(), c.cardNumber(), c.suitNumber() ); */ System.out.println(c); } } }
CardDeckクラス
52枚のカードをランダムに表示させます。
import java.util.ArrayList; public class CardDeck { // セッツするカード枚数 private int max; // カードを格納するArrayList private ArrayList<Card> deck; public CardDeck(int max) { this.max = max; deck = new ArrayList<Card>(); initialize(); for(int i = 0; i < max; i++) { Card c = new Card(i + 1); deck.add(c); } } public void initialize() { deck.clear(); } public int getMax() { return max; } // 現在の残りカード枚数を返す public int size() { return deck.size(); } // 次のカードオブジェクトを返す。なければnullを返す。 // 残りのカードからランダムに引く。 public Card next() { int n = size(); if(n == 0) { return null; } int p = (int)(Math.random() * n); Card c = deck.remove(p); return c; } void check() { for(Card c : deck) { System.out.println(c); } } /* public static void main(String[] args) { CardDeck cd = new CardDeck(52); cd.check(); } */ public static void main(String[] args) { // カードデッキを作成 CardDeck cd = new CardDeck(52); Card card; // カードを取り出す while((card = cd.next()) != null) { System.out.println(card); } } }
- 作者: 川場隆
- 出版社/メーカー: 秀和システム
- 発売日: 2018/03/31
- メディア: 単行本
- この商品を含むブログを見る
- 作者: 川場隆
- 出版社/メーカー: 秀和システム
- 発売日: 2010/03/25
- メディア: 単行本
- 購入: 4人 クリック: 34回
- この商品を含むブログ (9件) を見る