• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Visual Basicでトランプ版ガチャガチャ)

Visual Basicでトランプ版ガチャガチャ

このQ&Aのポイント
  • Visual Basic 2010 Express を使って、トランプの山からランダムに、1枚ずつ1回100円でカードを引いていき、最終的にハートのカードが5枚揃ったら、プレイヤーの勝ちが表示されるゲームを作りたいです。
  • 要は、トランプ版ガチャガチャです。所持金を消費し、運に任せてハートを集めるゲームです。当たったハートのカードは、下に表示されます。他のカードは破棄ですが、再びひくこともあります。
  • VBは4,5回大学で習った程度の初心者。プログラミングはVB以外触ったことなし。Dimの意味がやっと分かるくらい。画面レイアウトを載せておきます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは 私の読解力不足で、ゲームのルールがよく掴めてませんが、想像で作成してみました。 >トランプの山からランダムに~~~~~勝ちが表示されるゲーム」 コンピュータとの対戦ではなさそうですね。 >ガチャガチャ 「ガチャガチャ」ってなにかな~ >所持金 所持金はいくらなのかわかりませんでしたので、ComboBoxで選択できるようにしました。 >他のカードは破棄ですが、再びひくこともあります。 「他のカードは破棄」はわかりますが、「再びひくこともあります。」はわかりませんでしたので、プログラムには反映してません。 >VBは4,5回大学で習った程度の初心者。プログラミングはVB以外触ったことなし。 「大学で習った」なんてすごいですね。私は趣味で、去年の夏頃から始めましたので、やっと初心者から卒業(技術面はまだ初心者)しました。でもJavaも勉強してます(趣味で)。 Dimは本当は必要ありまよね。 int test=0;←Java  これでInteger型になります。 >画像つきで 画像の出し方がわかりませんので、適当に作成しました。 すいません、画像の出し方を教えてください。 ゲームですが #最初にComboBoxから、持ち点の選択をしなければ「スタート」ボタンが押せないようになっています。 持ち点を選択したら「確定」をクリックしてください。 #「スタート」ボタンをクリックするたびに、カードを引くことになります。 「スタート」ボタンをクリックするたびに、引いたカードが右側に表示されます。 ハートのカードを引くと、フォームの真ん中より少し下に表示されます。 #持ち点がなくなった場合と、ハートのカードが5枚揃った時点で、終了です。 #もう1度ゲームを再開する場合は、「再スタート」をクリックしてください。 もう1度ComboBoxから、持ち点の選択して「確定」をクリック、「スタート」ボタンをクリックです。 トランプの画像は下記のURLからダウンロードしてください。 http://kagoturikentarou.dousetsu.com/ncsoretomo2.html 他の画像を使う場合は、ハートのカードのファイル名の先頭の文字を"h"に変更してください。 左側の画像は、プレー中の画像です、右側の画像はデザイナー画面の画像です。 サンプルコードは、文字制限のためここに掲載できませんので、次の回答に掲載します。

l1on-heart
質問者

お礼

大変遅くなってしまいすみません。 まさにbybalsendercase様の画像にそっくりなものを作ろうとしていました。 いくつかコードを真似させていただき、無事に作ることができましたので ベストアンサーとさせていただきます。 拙い説明でしたのに回答していただき本当にありがとうございました!

その他の回答 (3)

回答No.4

続き2 下記のコードを「続き1」のコードの下に追加してください。 'Clickイベント Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Button3.Enabled = False tranpcount = ar.Count 'トランプの枚数の枚数を数える 'PictureBoxに描画するサイズの設定 PictureBox1.SizeMode = PictureBoxSizeMode.Zoom PictureBox2.SizeMode = PictureBoxSizeMode.Zoom PictureBox3.SizeMode = PictureBoxSizeMode.Zoom PictureBox4.SizeMode = PictureBoxSizeMode.Zoom PictureBox5.SizeMode = PictureBoxSizeMode.Zoom PictureBox6.SizeMode = PictureBoxSizeMode.Zoom 'ランダムな数字の変数 Dim rndm1 As Integer '0からtranpcount-1までのランダムな数字を取得 rndm1 = rndm.Next(tranpcount) 'リストにある項目が見つかるまでループする Do If ar.Contains(ar(rndm1)) Then Exit Do End If Loop '上記で取得した値からプレイヤーが引いたトランプをPictureBoxに描画 PictureBox1.Image = Image.FromFile(DIR_NAME & "\" & ar(rndm1)) Dim head1 As String 'ファイル名の先頭の文字を取得 head1 = ar(rndm1).Substring(0, 1) '(ハード)のトランプ判断 ファイル名の先頭の文字が"h"かどうか調べる If head1 = "h" Then victry += 1 '先頭の文字が同一であればカウントする      playercount += 100 bank += 100 '当たったハートのカードは、下に表示する If victry = 1 Then PictureBox2.Image = Image.FromFile(DIR_NAME & "\" & ar(rndm1)) ElseIf victry = 2 Then PictureBox3.Image = Image.FromFile(DIR_NAME & "\" & ar(rndm1)) ElseIf victry = 3 Then PictureBox4.Image = Image.FromFile(DIR_NAME & "\" & ar(rndm1)) ElseIf victry = 4 Then PictureBox5.Image = Image.FromFile(DIR_NAME & "\" & ar(rndm1)) ElseIf victry = 5 Then PictureBox6.Image = Image.FromFile(DIR_NAME & "\" & ar(rndm1)) End If Else 'それ以外にカウントする playercount -= 100 bank -= 100 End If '1度使ったトランプは破棄 ar.RemoveAt(rndm1) '各ラベルに表示 Label3.Text = bank 'プレイヤーの勝ちを判断 If victry = 5 Then MsgBox("プレイヤーの勝ち!") Button1.Enabled = False Button2.Enabled = True Button3.Enabled = False ar.Clear() 'リストをクリアする Exit Sub End If '持ち点がなくなった場合 If bank <= 0 Then MsgBox("持ち点がありません。") Button1.Enabled = False Button2.Enabled = True Button3.Enabled = False ar.Clear() 'リストをクリアする Exit Sub End If If tranpcount < 2 Then MsgBox("トランプがありません、終了です。") Button1.Enabled = False Button2.Enabled = True Button3.Enabled = False ar.Clear() 'リストをクリアする Exit Sub End If End Sub '初期化 Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click ComboBox1.Text = "" ComboBox1.Items.Clear() Button3.Enabled = True f1() PictureBox1.Image = Nothing PictureBox2.Image = Nothing PictureBox3.Image = Nothing PictureBox4.Image = Nothing PictureBox5.Image = Nothing PictureBox6.Image = Nothing End Sub End Class わからないところや、違うところがありましたら、お手数ですが返信してください。

回答No.3

続き1 文字制限のため、サンプルは2回に分けますので、後で繋いでください。 Public Class Form1 Const DIR_NAME As String = "C:\test" 'フォルダーパス Dim rndm As New Random 'Randomのインスタンス Dim ar As New List(Of String) 'トランプをリストにする Dim tranpcount As Integer 'トランプの枚数 Dim victry As Integer 'ハートのカードが出たときのカウンター Dim bank As Integer '持ち点 Dim playercount As Integer 'プレイヤーの得点 Private Sub f1() Handles MyBase.Shown victry = 0 bank = 0 playercount = 0 Button1.Enabled = False Button2.Enabled = False 'ComboBoxに持ち点を登録 ComboBox1.Items.Add("1000") ComboBox1.Items.Add("2000") ComboBox1.Items.Add("3000") 'ファイルの検索 Dim ofolder As New IO.DirectoryInfo(DIR_NAME) Dim ofile As IO.FileInfo 'ループでファイル名をリストにAddする() For Each ofile In ofolder.GetFiles("*", IO.SearchOption.AllDirectories) ar.Add(ofile.Name) Next End Sub 'ComboBoxから値を選ぶ Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click 'ComboBoxの値をLabel3に表示 Dim comst As String comst = ComboBox1.SelectedItem Label3.Text = comst bank = CInt(comst) 'StringからIntegerに変換 If CInt(comst) = 0 Then MsgBox("持ち点を選んでください。") Return End If Button1.Enabled = True End Sub 次の投稿のコードを上記の下に追加してください。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

課題を丸投げ?所持金の上限など、仕様が不完全。 しかも「画面レイアウト」見えないし。 トランプの山からランダムに ・ゲーム開始時に配列内にランダムに格納しておく 1枚ずつ1回100円でカードを引いていき、 ・所持金がある限り、上記の配列からから取り出す 最終的にハートのカードが5枚揃ったら ・所持金と獲得したカード枚数を保持する変数が必要 プレイヤーの勝ちが表示されるゲーム ・You Win!でいいのかな? ・破産orあきらめるボタンはどうするの? プレイヤーの所持金・獲得カード枚数の変数 カードを格納する配列変数(スートの必要なので2次元配列か)

l1on-heart
質問者

お礼

遅くなってしまいすみません。 技術不足説明不足にも関わらず、ご回答いただきどうもありがとうございます。 無事に作ることができました。

関連するQ&A