ジャンケン

今回は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終了してしまう等の設定をするのも面白いと思います。

ジャンケン自体に相手がどんな手を出してきても絶対に勝てる手を一度だけ使えるものを取り入れたり、

ジャンケンゲームを拡張してアッチ向いてホイゲームにしてみるとか。

紹介したサンプルスクリプトと同じですがコチラどうぞ。

それでわ。