sample\game\poker.hsp » Plain Format
title "ポーカーゲーム" randomize celload "trump.bmp" trump=stat screen 0,640,480 gosub *creset sdim ylist,1024 dim ybai,16 dim hand,16 dim hand2,16 ylist={"0 なし 1 ツーペア 2 スリーカード 3 ストレート 4 フラッシュ 5 フルハウス 6 フォーカード 7 ストレートフラッシュ 8 ロイヤルストレートフラッシュ "} ybai=0,2,5,10,20,30,50,100,500 credit=30 bet=1 *main cls 1 if credit=0 { dialog "コインがありません" : end } sdim s1,256 dim cbox,5 pos 480,24 color 0,0,120 font msgothic,18,1 mes "残りコイン="+credit yaku=0:gosub *putlist ibet=bet credit=credit-bet objsize 90,24 repeat 5 gosub *cdraw:hand.cnt=a pos cnt*100+22,430 chkbox "そのまま",cbox.cnt loop pos 530,430 button "交換",*change *turn gosub *csort repeat 5 x=cnt*100+20:y=300 a=hand.cnt:gosub *cput loop stop *change clrobj repeat 5 if cbox.cnt=0 { x=cnt*100+20:y=300 gosub *cdraw hand.cnt=a:gosub *cput } loop gosub *csort gosub *putlist plus=ybai.yaku * ibet if plus>0 : dialog "コイン"+plus+"枚が増えました" credit+=plus pos 530,430 button "スタート",*main stop *putlist notesel ylist repeat 9:y=cnt*30+24 noteget s1,cnt:a=ybai(cnt) color 0,0,0 if cnt=yaku : color 255,0,0 pos 24,y:mes s1 pos 320,y:mes "x"+a loop *csort ; 手札をソート dim count,14 mark=hand.0&3:markc=0 yaku=0:pair=0:lastnum=-10:st=0 repeat 5:hand2.cnt=hand.cnt:loop i=0:repeat 52:chk=cnt repeat 5 if hand2.cnt=chk { a=chk/4:count.a++ if lastnum+1=a : st++ lastnum=a a=chk&3:if a=mark : markc++ hand2.cnt=-1 hand.i=chk:i++ } loop if i>=5 : break loop repeat 14:a=count.cnt if a=2 : pair++ if a=3 : yaku=2 if a=4 : yaku=6 loop if (yaku=2)&(pair=1) : yaku=5 if pair=2 { if yaku=0 : yaku=1 } if markc=5 : yaku=4 if (st=3)&(yaku=4) { if lastnum=12 { if hand.0/4=0 : yaku=8 : return } } if st=4 { if yaku=0 : yaku=3 if yaku=4 : yaku=7 } return *creset ; カードをシャッフル dim card,52:cnum=0 repeat 52:card.cnt=cnt:loop repeat 52 a=rnd(52):b=card.cnt card.cnt=card.a:card.a=b loop return *cdraw ; カード1枚を引く if cnum>=52 : gosub *creset a=card.cnum:cnum=cnum+1 return *cput ; カード1枚を表示するサブルーチン px=a/4*96:py=(a&3)*128 gmode 2,96,128 pos x,y:gcopy trump,px,py return