わかりやすいJava オブジェクト指向編 プログラミング演習 その1
オブジェクト指向でブラックジャックを作成
わかりやすいJava オブジェクト指向編の全17章が終わったので、最後のプログラミング演習をやっていきたいと思います。演習課題はブラックジャックの作成です。GUIでは作りませんが、オブジェクト指向で作成するようです。
カード
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | J | Q | K | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
spade |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
diamond | 1 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
club | 2 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
hart | 3 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 |
次の表のようにカードを設定します。カードは物理番号(1~52)で管理され、物理番号をもとにカードの種類が決まります。物理番号は一意の値をもつので、同じソートで同じ札番号のカードは一枚だけとなります。
Cardクラス
public class Card { private int n; // 1-52の物理番号 static final int RANK = 13; // 1つの種類の情報のカードの枚数 static final int SUIT = 4; // カードの種類の数 public Card(int n) { this.n = n; } public int getNum() { return n; } public int cardNumber() { // 物理番号に対応する札番号(1~13)を返す return (n - 1) % RANK + 1; } public int suitNumber() { // 物理番号に対応する札の種類番号(0~3)を返す return (n - 1) / RANK; } 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() ); } } }