Javaプログラミング学習サイト ゆるゆるプログラミング

2020/03/23 公開

・神経衰弱 その5

ここでは神経衰弱のソースコードを解説しています。4回目です。「神経衰弱」

前の説明はこちらを参照してください。「神経衰弱 その4」

それでは、神経衰弱のソースコードを続きを解説していきます。

203:    	// メイン
204:    	public static void main( String[] args ) {

このmainメソッドからプログラムを実行します。

205:    		// カードの初期化
206:    		initCards();

カードを初期化します。配列cardsに1~13を4個づつ格納し、乱数を使って並び変えます。

208:    		// 状態の初期化
209:    		initStatuses();

カードの状態を初期化します。配列statuesにSTATUS_HIDEを格納します。

211:    		// 記憶の初期化
212:    		initMemory();

1度オープンしたカードの記憶を初期化します。配列memoryに0を格納します。

214:    		// 神経衰弱本体
215:    		// 無限ループを作成(ループを抜ける条件をなし)
216:    		for ( int turn = 1; ; ++ turn ) {

ここから神経衰弱の本体です。for文無限ループを作っています。変数turnはカードをめくる回数を表しています。

217:    			// ターン番号の出力
218:    			System.out.println( "ターン:" + turn );

カードをめくった回数を出力しています。

220:    			// カードを出力(オープン前の状態)
221:    			outputCards();

現在のカードの状態を出力しています。

223:    			// カードをランダムに1枚オープン
224:    			int cardnum1 = openCard();

カードをランダムに1枚オープンしています。オープンしたカード番号を変数crdnum1に代入しています。

226:    			// 記憶しているカードがあればそのカードをオープン
227:    			if ( !openMemoryCard( cardnum1 ) ) {
228:    				// カードをランダムに1枚オープン
229:    				int cardnum2 = openCard();
230:    			}
231:    			else {
232:    				System.out.println( "記憶からカードをオープン!" );
233:    			}

オープンしたカード番号crdnum1をopenMemoryCardメソッドに渡しています。カード番号crdnum1が記憶されている場合、openMemoryCardメソッドの中でカードをオープンします。

記憶していない場合、 openCardメソッドランダムに1枚のカードをオープンします。

235:    			// カードを出力(オープン後の状態)
236:    			outputCards();

オープンしたカードの状態を出力しています。

238:    			// オープンしているカードがペアかどうか判定
239:    			if ( isPair() )
240:    				replaceStatus( STATUS_OPEN, STATUS_PAIR );
241:    			else
242:    				replaceStatus( STATUS_OPEN, STATUS_HIDE );

オープンした2枚のカード番号が同じかを判定し、同じであればオープンしたカードを揃った状態に変更しています。(STATUS_OPENからSTATUS_PAIR

違う場合、オープンしたカードを伏せた状態にもどします。(STATUS_OPENからSTATUS_HIDE

244:    			// 全てペアになったらループを抜ける
245:    			if ( 52 == getStatusNumber( STATUS_PAIR ) )
246:    				break;

全てのカードが揃った状態の場合、break文無限ループを抜けます。52枚のカードの状態がSTATUS_PAIRであることで全て揃ったと判定しています。

249:    		// カードの最終結果を出力
250:    		System.out.println( "最終結果" );
251:    		outputCards();

最後にカードの状態を出力して終了します。

以上です。

■関連コンテンツ

神経衰弱 1人で神経衰弱
ポーカーの役判定 ポーカーの役を判定
トランプの操作 トランプを操作するクラス
配列の並び替え 配列をランダムに並び替える方法を解説
switch文 式による処理の分岐に使用するswitch文について解説
値のコンソール表示 print()、println()とは?
Math.randomの使い方について解説-画像

乱数 random

Math.randomメソッドを使って乱数を発生する方法を解説します。指定範囲の乱数の発生方法も解説しています。

サイコロの目のでる確率は?-画像

サイコロの出目確率

乱数で1から6の数を発生し、それぞれの数値が出現する回数を調べます。

サイコロの目のでる確率は?-画像

ゾロ目の出る確率

2つのサイコロの出目を乱数で1から6の数を発生し、出目が同じときの回数と出現率を調べます。

繰り返し処理に使用するfor文について解説-画像

for文

繰り返し処理に使用するfor文をJavaのソースコードを使って説明しています。

条件による処理の分岐に使用するif文について解説-画像

if文

条件による処理の分岐に使用するif文について解説

■新着情報

2022.07.07 外部プログラムの実行 exeファイル実行
2022.07.06 完全数 6=1+2+3

■広告

Topへ