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

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

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

日中、同じ質問をしたのですが、 私の説明力不足で意図がうまく伝わらなかったので、画像つきで再質問させていただきます。 回答してくださった方々、すみません! 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

  • Visual Basic でトランプを引くゲーム

    心理学実験のために、 「シャッフルされたトランプの山から1回100円で 1枚ずつ引いていき、ハートのカードが5枚揃った時点でプレイヤーの勝ち!」 というゲームをVisualBasic2010Expressで作りたいですが、プログラムが分かりません。 VBは初心者です。 Dimの意味がなんとなく分かるくらい・・・ どなたかご指導お願いいたします。

  • 課題研究でVisual C#でトランプゲームを作成したいのですが

    課題研究でVisual C#でトランプゲームを作成したいのですが C#ははじめでやる言語でなかなか進みません・・・ C言語とVBは習いました。 C#のゲームプログラミングの本も結構あるのですが たくさんあってどれを選べばいいのかわかりません 高い本なので失敗はしたくありません・・・ もし、オススメの本などがありましたら教えていただけませんか? Visual Studioは2005を使っています。 ちなみに作りたいトランプゲームは大富豪です。大貧民ともいいますね

  • トランプのカードについて。

    トランプのカードについて。 トランプのカードは、スペード・ハート・ダイヤ・クローバーの柄に1から13までの数字が ありますが、何かのゲームって決めない場合「強さ」ってのはあるんですか? 今まで、何の疑問もなくスペードのエースが最も強く(大きい?)クローバーの2が 最も弱い(小さい?)と思っていたのですが… そもそも、ゲームをしていない場合強さは関係ないんでしょうか?

  • 【トランプ】大富豪の勝率の求め方

    「大富豪」というトランプを使ったカードゲームがあります。 ルールは単純。 先にカードを無くし上がった順に、大富豪、富豪、貧民、大貧民、と順位が決定しますが、どのようにすれば勝率を求めることができるのでしょうか? ※勝ちとするのは1位のみで2位は除きます。 以下は、私がオンラインゲームで大富豪を1000回プレイしたデータです。 ----------- 1位:371 2位:158 3位:191 4位:280 ----------- もし分かる方がいらっしゃったら教えていただけないでしょうか?よろしくお願いします。

  • ロシアのトランプ

    先日、ロシア旅行(サハリンのノグリキ)の際、お土産にと思い駅の売店でカード(トランプ)を買いました。箱を見ると「1組:36枚」と書いてあります。中を改めると、6~10までの数字と4種類の文字カードがそれぞれ、ハート・ダイヤ・スペード・クローバーと4枚ずつ計36枚入っていました。 ロシアではトランプは36枚が当たり前なのでしょうか? これでゲームをして面白いのでしょうか? お詳しい方、よろしくお願いします。

  • こんなトランプゲームの名前を知りたい

    こんなトランプゲームの名前を知りたいです。 賭けでやったんですが、もともとそういうものかも よくわかりません。 ・最初に全員に4枚配って、出していきなくなったら  勝ちです。 ・イメージ的にはUNO(PageOne)に近いくて、前に出されたカードの  数字かマークが同じものを出せます。  出せなかったら山からとります。 ・上がりの条件は、手持ちのカードの合計が  自分以外のプレイヤーが出したカードの数字と  一致してたら勝ち。 ・「2」がDRAW 2、「8」がオールマイティカード、  「9」がリバース、「1」がスキップ  という風にUNO(PageOne)と同じような特殊カードがある。 このゲームの名前を知っている人がいましたら 教えてください。

  • 携帯のトランプゲームの名前が知りたい

    つい最近、携帯を壊してしまって、お気に入りのゲームの名前が分からず、再ダウンロードができません。 携帯で使えるゲームで、トランプのゲームなのですが、カードのマークごとに、一から順番にカードを重ねていくものです。 右上にカードを重ねる場所(4マス)、左上に一時カードを置く場所(4マス)、下半分は、カードが、何列かランダムに配布されます。 なんというゲームでしたっけ? 出来れば、URLもわかればいいのですが、、

  • ビジュアルベーシックでゲームを作っています

    パソコンのビジュアルベーシックでゲームを作っています。 サイコロの目、1~6をランダムに表示して、自分がテキストボックスに打った数字とサイコロの目が一致したらメッセージボックスで『あたり』、違ったら『はずれ』という表示をだしたいのですが、どのような式を入力すればいいのでしょうか? サイコロはランダムにでるようになったのですが、メッセージボックスが一致しません(´・_・`)

  • トランプを4人に配ったとき

    確立の問題です。 ジョーカーを除く、52枚のカードを13枚づつ4人に配りました。 この時、4人全員が1種類のカードだけになる、つまりAさんはダイヤだけ13枚、Bさんはハートだけ13枚・・・という感じになる確率は? 実際、このような珍事があったと、Webで話題になったことがあります。その時書かれていた数値はわすれましたが、その算出方法を知りたいです。 同じく、ジョーカーを除く、52枚のカードで、神経衰弱ゲームを行い、最初の人が1回ですべてのカードを引き当てる確立は?もちろん、イカサマはなしで。 これは、(1/51)*(1/49)*(1/47)・・・で良いのでしょうか?

  • Visual Basic 2005 Express Edition の「Button」

    今までVBやってはいたんですが、Microsoft Visual Basic 2005と今まで使っていたVBの違いに困っています・・・。 現在、「ボタンを押すたびにC(変数名)が増え、Cの内容をLabel1に表示」というごく基本的な命令すら書けないです。 Private Sub Button1_Click(略 Dim c As Integer c = c + 1 Label1.Text = c End Sub こう書いて、何度Button1をクリックしてもC(Labelに表示される)が最初の1回しか増えません。 何かもっと書かないといけないことがあるのでしょうか? どうか教えてください。お願いします!

専門家に質問してみよう