Dim card(52), keta(10), yaku(5), z, tokuten, start_flag
Private Sub CommandButton1_Click()
start_flag = 0
TextBox1 = "カードを切っています"
y = 1
Do While y < 10
Rem y<52
x = Int(Rnd() * 52 + 1)
flag = 0
For z = 1 To 10
Rem z<52
If card(z) = x Then flag = 1
Next z If flag = 0 Then
card(y) = x
y = y + 1
End If
Loop
For y = 1 To 52
Cells(y, 1) = card(y)
Next y
For y = 1 To 52
If card(y) > 13 And card(y) <= 26 Then card(y) = card(y) + 100 - 13
If card(y) > 26 And card(y) <= 39 Then card(y) = card(y) + 200 - 26
If card(y) > 39 And card(y) <= 52 Then card(y) = card(y) + 300 - 39
Cells(y, 2) = card(y)
Next y
Image54.Picture = Image53.Picture
Image55.Picture = Image53.Picture
Image56.Picture = Image53.Picture
Image57.Picture = Image53.Picture
Image58.Picture = Image53.Picture
TextBox1 = "ゲームができます"
start_flag = 1
End Sub
Private Sub card_hai()
If z = 1 Then Image59.Picture = Image1.Picture
If z = 2 Then Image59.Picture = Image2.Picture
If z = 3 Then Image59.Picture = Image3.Picture
If z = 4 Then Image59.Picture = Image4.Picture
If z = 5 Then Image59.Picture = Image5.Picture
If z = 6 Then Image59.Picture = Image6.Picture
If z = 7 Then Image59.Picture = Image7.Picture
If z = 8 Then Image59.Picture = Image8.Picture
If z = 9 Then Image59.Picture = Image9.Picture
If z = 10 Then Image59.Picture = Image10.Picture
If z = 11 Then Image59.Picture = Image11.Picture
If z = 12 Then Image59.Picture = Image12.Picture
If z = 13 Then Image59.Picture = Image13.Picture
If z = 101 Then Image59.Picture = Image14.Picture
If z = 102 Then Image59.Picture = Image15.Picture
If z = 103 Then Image59.Picture = Image16.Picture
If z = 104 Then Image59.Picture = Image17.Picture
If z = 105 Then Image59.Picture = Image18.Picture
If z = 106 Then Image59.Picture = Image19.Picture
If z = 107 Then Image59.Picture = Image20.Picture
If z = 108 Then Image59.Picture = Image21.Picture
If z = 109 Then Image59.Picture = Image22.Picture
If z = 110 Then Image59.Picture = Image23.Picture
If z = 111 Then Image59.Picture = Image24.Picture
If z = 112 Then Image59.Picture = Image25.Picture
If z = 113 Then Image59.Picture = Image26.Picture
If z = 201 Then Image59.Picture = Image27.Picture
If z = 202 Then Image59.Picture = Image28.Picture
If z = 203 Then Image59.Picture = Image29.Picture
If z = 204 Then Image59.Picture = Image30.Picture
If z = 205 Then Image59.Picture = Image31.Picture
If z = 206 Then Image59.Picture = Image32.Picture
If z = 207 Then Image59.Picture = Image33.Picture
If z = 208 Then Image59.Picture = Image34.Picture
If z = 209 Then Image59.Picture = Image35.Picture
If z = 210 Then Image59.Picture = Image36.Picture
If z = 211 Then Image59.Picture = Image37.Picture
If z = 212 Then Image59.Picture = Image38.Picture
If z = 213 Then Image59.Picture = Image39.Picture
If z = 301 Then Image59.Picture = Image40.Picture
If z = 302 Then Image59.Picture = Image41.Picture
If z = 303 Then Image59.Picture = Image42.Picture
If z = 304 Then Image59.Picture = Image43.Picture
If z = 305 Then Image59.Picture = Image44.Picture
If z = 306 Then Image59.Picture = Image45.Picture
If z = 307 Then Image59.Picture = Image46.Picture
If z = 308 Then Image59.Picture = Image47.Picture
If z = 309 Then Image59.Picture = Image48.Picture
If z = 310 Then Image59.Picture = Image49.Picture
If z = 311 Then Image59.Picture = Image50.Picture
If z = 312 Then Image59.Picture = Image51.Picture
If z = 313 Then Image59.Picture = Image52.Picture
End Sub
Private Sub disp()
z = card(1)
Call card_hai
Image54.Picture = Image59.Picture
z = card(2)
Call card_hai
Image55.Picture = Image59.Picture
z = card(3)
Call card_hai
Image56.Picture = Image59.Picture
z = card(4)
Call card_hai
Image57.Picture = Image59.Picture
z = card(5) Call card_hai
Image58.Picture = Image59.Picture
End Sub
Private Sub CommandButton2_Click()
If start_flag = 1 Then
TextBox1 = ""
Call disp
start_flag = 2
End If
End Sub
Private Sub CommandButton3_Click()
If start_flag = 2 Then
TextBox1 = "ブタです"
x = 6
If CheckBox1 = False Then
card(1) = card(x)
x = x + 1
End If
If CheckBox2 = False Then
card(2) = card(x)
x = x + 1
End If
If CheckBox3 = False Then
card(3) = card(x)
x = x + 1
End If
If CheckBox4 = False Then
card(4) = card(x)
x = x + 1
End If
If CheckBox5 = False Then
card(5) = card(x)
End If
Call disp
Rem 役解析
Rem フラッシュ
clab = 0
daiya = 0
harto = 0
supedo = 0
flash = 0
For x = 1 To 5
If card(x) > 0 And card(x) <= 13 Then clab = clab + 1
If card(x) > 100 And card(x) <= 113 Then daiya = daiya + 1
If card(x) > 200 And card(x) <= 213 Then harto = harto + 1
If card(x) > 300 And card(x) <= 313 Then supedo = supedo + 1
Next x
If clab = 5 Then
TextBox1 = "クラブのフラッシュ"
flash = 1
tokuten = tokuten + 509
End If
If daiya = 5 Then
TextBox1 = "ダイヤのフラッシュ"
flash = 1
tokuten = tokuten + 509
End If
If hart = 5 Then
TextBox1 = "ハートのフラッシュ"
flash = 1
tokuten = tokuten + 509
End If
If supedo = 5 Then
TextBox1 = "スペードのフラッシュ"
flash = 1
tokuten = tokuten + 509
End If
Rem ペアー
For x = 6 To 10
keta(x) = 0
Next x
For x = 1 To 5
y = card(x)
Cells(x, 3) = y
If card(x) > 100 Then y = card(x) - 100
If card(x) > 200 Then y = card(x) - 200
If card(x) > 300 Then y = card(x) - 300
Cells(x, 4) = y
keta(x) = y
Next x
For x = 1 To 5
yaku(x) = 0
For w = 1 To 5
If keta(x) = keta(w) Then yaku(x) = yaku(x) + 1
Next w
Cells(x, 5) = yaku(x)
Next x
twopai = 0
threepai = 0
For x = 1 To 5
If yaku(x) = 2 Then twopai = twopai + 1
If yaku(x) = 3 Then threepai = 1
If yaku(x) = 4 Then
TextBox1 = "フォーカード"
tokuten = tokuten + 4165
End If
Next x
If twopai = 2 Then
TextBox1 = "ワンペーア"
tokuten = tokuten + 3
End If
If twopai = 4 Then
TextBox1 = "ツーペーア"
tokuten = tokuten + 21
End If
If threepai = 1 Then
TextBox1 = "スリーカード"
tokuten = tokuten + 47
End If
If twopai = 2 And threepai = 1 Then
TextBox1 = "フルハウス"
tokuten = tokuten + 694
End If
Rem ストレート
For x = 1 To 5
For y = 1 To 5
If keta(x) < keta(y) Then
oitoku = keta(x)
keta(x) = keta(y)
keta(y) = oitoku
End If
Next y
Next x
For x = 1 To 5
Cells(x, 6) = keta(x)
Next x
If keta(1) = 1 Then
For x = 1 To 5
If keta(x) = x Then
keta(x + 5) = keta(x) + 13
Cells(x + 5, 7) = keta(x) + 13
End If
Next x
End If
flag = 0
For x = 1 To 9
If keta(x) = keta(x + 1) - 1 Then flag = flag + 1
Next x
If flag >= 4 Then
TextBox1 = " ストレート"
tokuten = tokuten + 255
If flash = 1 Then
tokuten = tokuten + 72193 - 255
TextBox1 = " ストレート"
End if
End If
If flash = 1 And flag >= 4 And keta(1) = 1 And keta(5) = 13 Then
TextBox1 = "ローヤルストレートフラッシュ"
tokuten = tokuten + 649740
End If
TextBox2 = tokuten
start_flag = 3
End If
End Sub
Private Sub CommandButton4_Click()
card(1) = 1
card(2) = 11
card(3) = 12
card(4) = 13
card(5) = 2
End Sub
|
配列宣言
コマンドボタン1を押した場合のプログラム【ゲーム開始】
カード配布の秩序を制御する変数0
テキストボックス1に表示
52枚をだぶらないように配布
y = 1
y < 52に成るまでLOOPの間を繰り返す 本来は52であるが
トラブルを起こすため10とした
Rnd() 0から0.999の乱数
Rnd() * 52 0から51.99の乱数
Int(Rnd() * 52 + 1)
1から52までの乱数
旗変数を0とする
zを1から52まで繰り返す
トラブルを起こすため10とした
card(z)の中に発生させた乱数と同じ数が含まれていたら旗を1とする
52回繰り返す【今は10】
旗が0の場合、すなわち発生した乱数と配列52card(z)の中に保存されている数と異なっている場合
配列card(z)に乱数を保存する
loop数yを1増加させる
If flag = 0 Thenの終了
Do While y < 52の終了
結果をセルA列に表示
1から52まで繰り返す
セルA列にカードを入れる
繰り返し終了
1から52のカードをわかりやすく
1−13 101−113 201−213 301−313に変更
13以下はクラブ
card(y) > 13の場合card(y)に100を足し13を引く たとえば 14の場合101となる。ダイヤとする
card(y) > 26の場合card(y)に200を足し26を引く たとえば 27の場合202となる。ハートとする
card(y) > 39の場合card(y)に300を足し39を引く たとえば 41の場合303となる。スペードとする
セルB列に表示し確認する
52の繰り返し終了
テキストボックス1を消す
5枚のトランプをイメージ53裏のカードとする
テキストボックス1に表示
ここが通過したトランプを切ったことになるその準備が完了したのでstart_flag = 1とした
コマンドボタン1を押した場合プログラム
終了
カード補助表示ルーチン
5枚のカードをうまく表示するため一旦、イメージ59に保存する
z=1の時、Image59.Pictureにクラブの1を置く
z=2の時、Image59.Pictureにクラブの2を置く
z=13の時、Image59.Pictureにクラブのキングを置く
z=101の時、Image59.Pictureにダイヤの1を置く
z=113の時、Image59.Pictureにダイヤのキングを置く
z=201の時、Image59.Pictureにハートの1を置く
z=212の時、Image59.Pictureにハートのクイーンを置く
z=303の時、Image59.Pictureにスペードの3を置く
z=311の時、Image59.Pictureにスペードのジャックを置く
トランプ補助表示ルーチン終わり
カード表示ルーチン
5枚のカードを表示する
zに配列の1番目を入れ
カード補助表示ルーチンを呼ぶ
カード補助表示ルーチンで設定された
Image59.Pictureを右上1枚目のカードとして表示する
zに配列の2番目を入れ
カード補助表示ルーチンを呼ぶ
カード補助表示ルーチンで設定された
Image59.Pictureを右上2枚目のカードとして表示する
zに配列の3番目を入れ
カード補助表示ルーチンを呼ぶ
カード補助表示ルーチンで設定された
Image59.Pictureを右上3枚目のカードとして表示する
zに配列の4番目を入れ
カード補助表示ルーチンを呼ぶ
カード補助表示ルーチンで設定された
Image59.Pictureを右上4枚目のカードとして表示する
zに配列の5番目を入れ
カード補助表示ルーチンを呼ぶ
カード補助表示ルーチンで設定された
Image59.Pictureを最後の5枚目のカードとして表示する
カード表示ルーチン終了
コマンドボタン2を押した場合のプログラム【カード配布】
start_flag = 0のときは実行されないすなわちまだカードが配布されていない
テキストボックス1の表示を消す
カード表示ルーチンを呼ぶ
start_flag = 2としてトランプヲ表示したことを告げる
コマンドボタン2を押した場合の
プログラム【カード配布】終了
コマンドボタン3を押した場合のプログラム【カード交換】
トランプが表示されたならばstart_flag = 2になっているので
次を実行
テキストボックス1にブダを入れておく【下記の実行速度が速いため表示が見えない】役がなかった場合
ブタが最後に見える
x = 6
チェックボク1にチェックが付いていない場合[カード交換となる]
card(6) 配列6番目を1枚目とする
x = 7
If CheckBox1 = False Then終わり
チェックボク2にチェックが付いていない場合[カード交換となる]
card(7) 配列7番目を2枚目とする
x = 8
If CheckBox2 = False Then終わり
チェックボク3にチェックが付いていない場合[カード交換となる]
card(8) 配列8番目を3枚目とする
x = 9
If CheckBox3 = False Then終わり
チェックボク4にチェックが付いていない場合[カード交換となる]
card(9) 配列9番目を4枚目とする
x = 10
If CheckBox4 = False Then終わり
チェックボク4にチェックが付いていない場合[カード交換となる]
card(10) 配列10番目を5枚目とする
If CheckBox4 = False Then終わり
x = x + 1とした理由は 2回以上カードを交換できるように臨機応変にした。今回は1回だけ交換なので特に意味がなくx=9と書いても同じ
カード表示ルーチンを呼び交換したカードを表示する。
Rem 実行しないコメント
役解析
フラッシュの処理
色が同じか判断する
変数クラブ、ダイヤ、ハート、スペードを0とする
変数フラッシュを0とする
xを1から5まで繰り返す
card(x)が0より大きく13以下の場合
クラブなので変数クラブを1増加する。
card(x)が100より大きく113以下の場合ダイヤなので変数ダイヤを1増加する。
card(x)が200より大きく213以下の場合ハートなので変数ハートを1増加する。
card(x)が300より大きく313以下の場合クラブなので変数クラブを1増加する。
xを1から5まで繰り返し終了
もし変数クラブが5になっている場合5枚ともクラブとの判断でフラッシュとなる
テキストボックス1にクラブのフラッシュと表示する
変数フラッシュを1とする。後でストレートとこの変数を比較しストレートフラッシュか判断するため
フラッシュの確率は509のため得点に509を増加させる。
If clab = 5 Thenの終了
もし変数ダイヤが5になっている場合5枚ともダイヤとの判断でフラッシュとなる
テキストボックス1にダイヤのフラッシュと表示する
変数フラッシュを1とする。後でストレートとこの変数を比較しストレートフラッシュか判断するため
フラッシュの確率は509のため得点に509を増加させる。
If daiya = 5 Thenの終了
もし変数ハートが5になっている場合5枚ともハートとの判断でフラッシュとなる
テキストボックス1にハートのフラッシュと表示する
変数フラッシュを1とする。後でストレートとこの変数を比較しストレートフラッシュか判断するため
フラッシュの確率は509のため得点に509を増加させる。
If hart = 5 Then の終了
もし変数スペードが5になっている場合5枚ともクラブとの判断でフラッシュとなる
テキストボックス1にスペードのフラッシュと表示する
変数フラッシュを1とする。後でストレートとこの変数を比較しストレートフラッシュか判断するため
フラッシュの確率は509のため得点に509を増加させる。
If supedo = 5 Thenの終了
コメント ペアー
keta(x)のxは1から5までは毎回代入されるが6から10は前のものが残るので0に初期化する
5枚のカードを順次読む
xが1から5まで繰り返す
yに順次5枚のカードを入れていく
確認すすためセルC列に表示する
ペアーの確認をするため
下一桁にする
100より大きい場合100を引く
200より大きい場合200を引く
300より大きい場合300を引く
確認すすためセルD列に表示する
この5枚を配列keta(x)に代入し
解析に使う
For x = 1 To 5繰り返しの終了
解析開始
同じカードがないか判断する
xが1から5まで繰り返す
5個の配列yaku(x)を0にする
wが1から5まで繰り返す
同じカードが有ればyaku(x)を1増加する
※ア欄外に解説あり
For w = 1 To 5繰り返しの終了
確認すすためセルE列に表示する
For x = 1 To 5繰り返しの終了
ツーペアー変数を0に
スリカード変数を0に
For x = 1 To 5繰り返し
yaku(x)が2の場合同じカードが2枚有ったのでツーペアー変数を1増加
yaku(x)が3の場合同じカードが3枚有ったのでスリカード変数を1にして通知
yaku(x)が4の場合同じカードが4枚有ったのでテキストボックス1にフォーカードを表示
フォーカードなので得点に4165点を足す
If yaku(x) = 4 Then終了
For x = 1 To 5繰り返し終了
ツーペアー変数が2の場合
テキストボックス1にワンペーアを表示
ワンペーアなので得点に3点を足す
If twopai = 2 Thenの終了
ツーペアー変数が4の場合
テキストボックス1にツーペーアを表示
ツーペーアなので得点に21点を足す
If twopai =4 Thenの終了
スリカード変数が1の場合
テキストボックス1にスリーカードを表示
スリーカードなので得点に47点を足す
If threepai = 1 Thenの終了
ツーペアー変数が2でかつスリカード変数が1の場合
テキストボックス1にフルハウスを表示
フルハウスなので得点に694点を足す
If twopai = 2 And threepai = 1 Then終了
コメント ストレート
小さい順に並び替えをする
For x = 1 To 5繰り返し
For y = 1 To 5繰り返し
小さいか比較
オイトク変数に小さいカードを入れる
大き方に小さいものを代入
小さい方にオイトク変数を代入
比較終了
For y = 1 To 5繰り返し
For x = 1 To 5繰り返し
結果をセルで確認
For x = 1 To 5繰り返し
セルF列に並び替えたものを表示
For x = 1 To 5繰り返し終了
ストレート1がある場合の処理
最初に1がある場合
セル6行目に14として収納
繰り返すことにより
次の2はセル7行目に15として収納
旗変数を0とする
1がある場合5枚ではなく追加された4枚も見るため9回繰り返す
今のカードと次のカードが連番になっている場合旗変数を1増加する
繰り返し終了
旗変数が4以上の場合はストレートとなる
テキストボックス1に表示する
得点を255点増加させる
役としてすでにフラッシュがある場合
得点に72193−255を増加させる
ストレートフラッシュ処理終了
ストレートフラッシュで最初1になっていて5番目が13の時
テキストボックス1にローヤルストレートフラッシュと表示する
得点に649740点を増加する
得点をテキストボックス2に表示
ここが通過したらstart_flag = 3にして証拠を残す
ローヤルストレートフラッシュ終了
コマンドボタン3の終了
カード交換および役の解析終了
確認ルーチン 好きな数を入れる
4枚目のカードをクラブの12にしてみる
5枚目のカードをスペードのキングにしてみる
終
|