[目次へ][前へ][次へ][表紙へ]
 じゃんけんゲームを作ろう(2/2)

 4.コンピューターの手とプレイヤーの手を表示
	; 手の表示
	mes "私の手:" + gcp(my_hand - 1)
	mes "あなたの手:" + gcp(your_hand - 1)

「私の手:」に続けて「グー」か「チョキ」か「パー」を書かせたいので、プログラムの冒頭で文字列型の配列変数gcp(guu choki paaの略)に文字列"グー"、"チョキ"、"パー"を入れておきます。添え字がmy_hand - 1ですから、my_handが1の時gcp(0)を、my_handが2の時gcp(1)を、my_handが3の時gcp(2)を表示します。「あなたの手:」についても同様です。
 以下のように書いてもいいのですが、この方がすっきりします。

	switch my_hand
	case 1:
		mes "私の手:グー"
		swbreak
	case 2:
		mes "私の手:チョキ"
		swbreak
	case 3:
		mes "私の手:パー"
		swbreak
	swend	
	switch your_hand
	case 1:
		mes "あなたの手:グー"
		swbreak
	case 2:
		mes "あなたの手:チョキ"
		swbreak
	case 3:
		mes "あなたの手:パー"
		swbreak
	swend	
 5.勝敗の判定
	; 勝敗の判定
	switch your_hand
	case 1:
		if my_hand == 1 { mes "あいこ" }
		if my_hand == 2 { mes "あなたの勝ち" }
		if my_hand == 3 { mes "あなたの負け" }
		swbreak
	case 2:
		if my_hand == 2 { mes "あいこ" }
		if my_hand == 3 { mes "あなたの勝ち" }
		if my_hand == 1 { mes "あなたの負け" }
		swbreak
	case 3:
		if my_hand == 3 { mes "あいこ" }
		if my_hand == 1 { mes "あなたの勝ち" }
		if my_hand == 2 { mes "あなたの負け" }
		swbreak
	swend

 your_handとmy_handを比較して「あいこ」か「あなたの勝ち」か「あなたの負け」と表示します。
 例えばyour_handが1(グー)の時、case 1:の処理が該当し、my_handが1(グー)なら「あいこ」、2(チョキ)なら「あなたの勝ち」、3(パー)なら「あなたの負け」となります。

 6.スペースキーを押すと2に戻る
	; スペースキーの入力
	mes "スペースキーを押してください"
*Input_Space
	await 16
	getkey key, 32
	if key == 0 { goto *Input_Space }
	goto *Main_Loop

 ループで解説したものとほとんど同じです。スペースキーが押されたら*Main_Loop行に飛びます。


 まとめますと、以下のようになります。

	;プログラム実行時の初期設定
	randomize
	sdim gcp, 10, 3
	gcp(0) = "グー"
	gcp(1) = "チョキ"
	gcp(2) = "パー"
	
*Main_Loop
	cls
	mes "ジャン、ケン、ポン!"
	mes "1:グー 2:チョキ 3:パー"
	my_hand = rnd(3) + 1
	; 手の入力
	your_hand = 0
*Input_Hand
	await 16
	getkey key, 49
	if key == 1 { your_hand = 1 }
	getkey key, 50
	if key == 1 { your_hand = 2 }
	getkey key, 51
	if key == 1 { your_hand = 3 }
	if your_hand == 0 { goto *Input_Hand }
	; 手の表示
	mes "私の手:" + gcp(my_hand - 1)
	mes "あなたの手:" + gcp(your_hand - 1)
	; 勝敗の判定
	switch your_hand
	case 1:
		if my_hand == 1 { mes "あいこ" }
		if my_hand == 2 { mes "あなたの勝ち" }
		if my_hand == 3 { mes "あなたの負け" }
		swbreak
	case 2:
		if my_hand == 2 { mes "あいこ" }
		if my_hand == 3 { mes "あなたの勝ち" }
		if my_hand == 1 { mes "あなたの負け" }
		swbreak
	case 3:
		if my_hand == 3 { mes "あいこ" }
		if my_hand == 1 { mes "あなたの勝ち" }
		if my_hand == 2 { mes "あなたの負け" }
		swbreak
	swend
	; スペースキーの入力
	mes "スペースキーを押してください"
*Input_Space
	await 16
	getkey key, 32
	if key == 0 { goto *Input_Space }
	goto *Main_Loop

[サンプルをダウンロード]

補足
・コメント文の他の利用方法
	mes "スペースキーを押すとウィンドウが閉じます"
*Input_Space
	await 16
	getkey key, 32
	if key == 0 { goto *Input_Space }
	end
 例えばこのプログラムの「await 16を抜いたらどうなるんだろう」ということをテストしたいとします。
	;await 16
 このように頭に";"をつけてしまえばコメント文となり、実行時には無視されます。これをコメントアウトといいます。後で";"だけ消せばいいのです。
 
・無限ループ
 じゃんけんゲームのメイン・ループは、永久に繰り返します。このようなループを無限ループといいます。通常はループから抜け出す処理を書きます(ESCキーを押すと終了する等)。
 本プログラムの場合は、ウィンドウの右上の×印をクリックすると終了します。

[目次へ][前へ][次へ][表紙へ] inserted by FC2 system