神経衰弱 その5

神経衰弱のJavaソースコード解説 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
224
			// カードをランダムに1枚オープン
			int cardnum1 = openCard();

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

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

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

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

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

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

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

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

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

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

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

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

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

以上です。

関連コンテンツ

自動で神経衰弱を行うJavaのソースコードを紹介しています。興味のある方は、ご覧ください。

2021.03.31

トランプゲームの1つポーカーの役を判定をプログラムを作成してみませんか?。興味のある方は、ご覧ください。

2020.08.27

トランプ(カード)を扱うクラスを紹介しています。

2019.08.05

配列に格納されている数値をランダムに並び替える方法を詳しく解説しています。ソースコード付きです。

2016.01.31

式の値によって処理を分岐する方法を詳しく解説しています。

2016.08.04

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

乱数の意味と、Math.randomメソッドの使い方をソースコードを使って詳しく解説しています。

2015.12.27

1から6のサイコロの目が出る確率を割り出すプログラムの作りかたを解説しています。

2020.05.07

2つのサイコロを振って同じ目が出る確率を割り出すプログラムの作り方を解説しています。

2020.08.25

処理を繰り返すために使用するfor文について解説しています。

2020.03.23

条件式を判断して処理を分岐する方法を詳しく説明しています。

2023.03.20

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

Javaのプログラムを作ってみませんか?プログラミングに必要なものの用意から実行までを説明しています。

2020.03.23

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

Swingパッケージを使ってグラフィック表示を行う方法を解説しています。

2020.03.23

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

繰り返し処理を使ったJavaのソースコードサンプルを紹介しています。

2020.03.23

配列を使うJavaソースコードを多数紹介しています。

2021.05.18

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

三角形、台形、円などいろいろな図形の面積を計算するプログラムを紹介しています。詳しくは、記事をご覧ください。

2021.05.18

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

プログラミング、ITに関する用語をまとめています。

2022.10.17

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

同じ型の変数(データ)を複数個まとめて管理するデータの持ちかたがあります。これが配列です。くわしくは、記事をご覧ください。

2016.01.14

繰り返し処理の作り方を解説しています。

2016.03.02

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

繰り返し処理(ループ)から強制的に抜けかたについて解説しています。

2017.07.14

「ゆるゆるプログラム」のコンテンツを紹介しています。興味のある方はこの記事をご覧ください。

2020.03.23

広告