2021.03.31
神経衰弱 その2
神経衰弱のJavaソースコード解説 1回目
それでは、神経衰弱のソースコードを順番に解説していきます。
001 002
// 神経衰弱 public class ShinkeiSuijaku {
003 004 005 006 007 008 009 010 011 012 013 014 015
// カードの状態を表す定数 final static int STATUS_HIDE = 0; // 伏せられた状態 final static int STATUS_OPEN = 1; // オープンの状態 final static int STATUS_PAIR = 2; // 揃った状態 // カード番号を格納する配列 static int[] cards; // カードの状態を格納する配列 static int[] statuses; // オープンしたカードを記憶する配列 static int[] memory;
定数は、カードの以下の3つの状態を表しています。
STATUS_HIDEは、カードが伏せられた状態
STATUS_OPENは、カードをオープンした状態
STATUS_PAIRは、既にペアになっている状態
次に配列の説明です。
配列cardsには、カードの番号を格納します。1~13を4個ずつ計52個の値を格納します。
配列memoryには、1度オープンしたカード番号を格納します。0は記憶なしで、記憶した場合1~13の値が代入されます。
018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037
// カードの初期化 private static void initCards() { // カードを格納する配列 cards = new int[ 52 ]; // カードを配列に格納し、シャフルする for ( int i = 0; i < cards.length; i++ ) cards[ i ] = ( i / 4 ) + 1; for ( int i = 0; i < cards.length; ++ i ) { // 0~(配列cardsの個数-1)の乱数を発生 int rnd = (int)( Math.random() * (double)cards.length ); // cards[ i ]とcards[ rnd ]を入れ替える int w = cards[ i ]; cards[ i ] = cards[ rnd ]; cards[ rnd ] = w; } }
カードを初期化するメソッドです。
040 041 042 043 044 045 046 047
// 状態の初期化 private static void initStatuses() { statuses = new int[ 52 ]; // カードの状態を"隠された状態"にする for ( int i = 0; i < statuses.length; i++ ) statuses[ i ] = STATUS_HIDE; }
カードの状態を初期化するメソッドです。int型の配列statusesの要素数を52で作成し、全ての要素に定数STATUS_HIDEを代入しています。これは全てのカードが伏せられていることを意味します。
050 051 052 053 054 055 056
// 記憶の初期化 private static void initMemory() { memory = new int[ 52 ]; for ( int i = 0; i < memory.length; i++ ) memory[ i ] = 0; }
1度オープンしたカード番号を記憶する配列を初期化するメソッドです。int型の配列memoryの要素数を52で作成し、全ての要素に0を代入しています。0は、まだ記憶していないことを意味しています。記憶されると1~13のいずれかの値が入ります。
続きは、以下の記事を参照してください。