2020/03/23 公開
・神経衰弱 その2
ここでは神経衰弱のソースコードを解説しています。「神経衰弱」
このプログラムでは、カードの管理は要素数52個の1次元の配列で行います。結果を出力するときに横に13枚、縦に4枚に並べます。
それでは、神経衰弱のソースコードを順番に解説していきます。
001: // 神経衰弱 002: public class ShinkeiSuijaku {
トランプを操作するクラス名を、ShinkeiSuijakuとしています。
003: // カードの状態を表す定数 004: final static int STATUS_HIDE = 0; // 伏せられた状態 005: final static int STATUS_OPEN = 1; // オープンの状態 006: final static int STATUS_PAIR = 2; // 揃った状態 007: 008: // カード番号を格納する配列 009: static int[] cards; 010: 011: // カードの状態を格納する配列 012: static int[] statuses; 013: 014: // オープンしたカードを記憶する配列 015: static int[] memory;
定数は、カードの以下の3つの状態を表しています。
STATUS_HIDEは、カードが伏せられた状態
STATUS_OPENは、カードをオープンした状態
STATUS_PAIRは、既にペアになっている状態
次に配列の説明です。
配列cardsには、カードの番号を格納します。1~13を4個ずつ計52個の値を格納します。
配列statusesには、カードの状態をを格納します。上記の3つの定数のいずれかを格納します。
配列memoryには、1度オープンしたカード番号を格納します。0は記憶なしで、記憶した場合1~13の値が代入されます。
018: // カードの初期化 019: private static void initCards() 020: { 021: // カードを格納する配列 022: cards = new int[ 52 ]; 023: 024: // カードを配列に格納し、シャフルする 025: for ( int i = 0; i < cards.length; i++ ) 026: cards[ i ] = ( i / 4 ) + 1; 027: 028: for ( int i = 0; i < cards.length; ++ i ) { 029: // 0~(配列cardsの個数-1)の乱数を発生 030: int rnd = (int)( Math.random() * (double)cards.length ); 031: 032: // cards[ i ]とcards[ rnd ]を入れ替える 033: int w = cards[ i ]; 034: cards[ i ] = cards[ rnd ]; 035: cards[ rnd ] = w; 036: } 037: }
カードを初期化するメソッドです。
int型の配列cardsに1~13を4個ずつ格納し、乱数を使って並び替えています。
並び替えはこちらを参考にしてください。「配列の並び替え」
040: // 状態の初期化 041: private static void initStatuses() 042: { 043: statuses = new int[ 52 ]; 044: // カードの状態を"隠された状態"にする 045: for ( int i = 0; i < statuses.length; i++ ) 046: statuses[ i ] = STATUS_HIDE; 047: }
カードの状態を初期化するメソッドです。int型の配列statusesの要素数を52で作成し、全ての要素に定数STATUS_HIDEを代入しています。これは全てのカードが伏せられていることを意味します。
050: // 記憶の初期化 051: private static void initMemory() 052: { 053: memory = new int[ 52 ]; 054: for ( int i = 0; i < memory.length; i++ ) 055: memory[ i ] = 0; 056: }
1度オープンしたカード番号を記憶する配列を初期化するメソッドです。int型の配列memoryの要素数を52で作成し、全ての要素に0を代入しています。0は、まだ記憶していないことを意味しています。記憶されると1~13のいずれかの値が入ります。
続きはこちらです。「神経衰弱 その3」
■関連コンテンツ
ポーカーの役判定 | ポーカーの役を判定 |
トランプの操作 | トランプを操作するクラス |
配列の並び替え | 配列をランダムに並び替える方法を解説 |
switch文 | 式による処理の分岐に使用するswitch文について解説 |
値のコンソール表示 | print()、println()とは? |
乱数 randomMath.randomメソッドを使って乱数を発生する方法を解説します。指定範囲の乱数の発生方法も解説しています。 |
|
サイコロの出目確率乱数で1から6の数を発生し、それぞれの数値が出現する回数を調べます。 |
|
ゾロ目の出る確率2つのサイコロの出目を乱数で1から6の数を発生し、出目が同じときの回数と出現率を調べます。 |
|
for文繰り返し処理に使用するfor文をJavaのソースコードを使って説明しています。 |
|
if文条件による処理の分岐に使用するif文について解説 |
■新着情報
2022.07.07 | 外部プログラムの実行 | exeファイル実行 |
2022.07.06 | 完全数 | 6=1+2+3 |
■広告