今回は2人限定のジャンケンゲームをしたいと思います。
3人以上だとアイコの判定が面倒になるので2人だけにしたわけです(手抜き?)。
確認ですが…ジャンケンを知らない人なんて…いませんよね?
普通過ぎると面白みに欠けるので、
今回は時間を利用してタイミングよく自分の手を出さないと負けになると言う設定で…。
スクリーンショットは下記の通りです。
sdim hands,11,4 hands="グー","チョキ","パー","出してない" randomize screen 0,320,300 title "ジャンケン" game=1 ; 現在の試合数 *before clrobj 0,2 color 255,255,255 : boxf :color 255 font "MS 明朝",40,1 pos 70,30 : mes "第"+game+"試合目" color font "MS 明朝",18,1 pos 130,100 : mes ""+win+"勝 "+lose+"敗" objsize 100,30 : objmode 2 pos 110,180 : button "開始",start aiko=0 game+ stop *start clrobj 0,2 color 255,255,255 : boxf : color ,,200 myhand=3 ; 出していない手 rnd enemy,3 pos 110,170 : button"グー",hand pos 110,210 : button"チョキ",hand pos 110,250 : button"パー",hand text 200 if aiko==0 : pos 70,30 : mes "ジャーン ケン" : else : pos 60,30 : mes " アーイコで " goto *match *hand myhand=stat ; グーは0,チョキは1,パーは2 *match clrobj 0,2 text 0 if aiko==0 : pos 205 ,30 : mes "ポン !" : else : pos 190,30 : mes "ショ !" color pos 100,80 : mes "自分:"+hands.myhand pos 100,100 : mes "相手:"+hands.enemy color 255 if myhand==enemy : aiko=1 : wait 120 : goto *start ; アイコの場合は試合続行 if myhand-enemy=-1|(myhand-enemy=2) : if myhand!=3 : win+ : pos 100,150 : mes "あなたの勝ち" if myhand-enemy=1|(myhand-enemy=-2)|(myhand==3) : lose+ : pos 100,150 : mes "あなたの負け" pos 110,200 : button "OK",before stop
相手がコンピュータの場合、コンピュータをいくらでも強化することができますね。
インチキでいいなら「*match」のすぐ下に
rnd enemy.1,10 if enemy.1>0 : if myhand==0 : enemy=2 : else : if myhand!=3 : enemy=myhand-1
と入れてみてください。10分の1の確率でユーザーが勝てる可能性があります(^^;
インチキみたいなセコいものではないものにしたい場合、学習型コンピュータにしましょう。
ユーザーが何をよく出すかを学習していくものです。
ユーザーの出す手に規則性がない場合はコンピュータが強くなることはありませんが、
何もないよりかはマシになるかと思います。
「n試合目では〜をよく出す」
「全試合でユーザーが何をよく出す」
「ユーザーが勝った・負けた・アイコの次は〜を出す」
これらをチェックしてユーザーの癖を抑えていきましょう。
こんな文字だけでつまらないと言う方は手の画像を用意したり、音声を付けるとゴージャスになります^^
また〜回コンピュータに勝ったら別ソフトを実行可能にする、
逆の〜回負けるとWindows終了してしまう等の設定をするのも面白いと思います。
ジャンケン自体に相手がどんな手を出してきても絶対に勝てる手を一度だけ使えるものを取り入れたり、
ジャンケンゲームを拡張してアッチ向いてホイゲームにしてみるとか。
紹介したサンプルスクリプトと同じですがコチラどうぞ。
それでわ。