[目次へ]|[前へ]|[次へ]|[表紙へ]
; 手の表示
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
; 勝敗の判定
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(パー)なら「あなたの負け」となります。
; スペースキーの入力
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キーを押すと終了する等)。
本プログラムの場合は、ウィンドウの右上の×印をクリックすると終了します。
|
[目次へ]|[前へ]|[次へ]|[表紙へ]