ババ抜き への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 チャッピー  (高校生)
投稿日時
2014/1/28 14:22:21
お疲れサマンサ
投稿者 チャッピー  (高校生)
投稿日時
2014/1/15 10:53:33
今までありがとうございました。ババ抜きは何とか完成することができました。
投稿者 チャッピー  (高校生)
投稿日時
2014/1/14 14:12:29
返信遅れてすみません。
自分なりに考えてやってきたのですがどのようにしたら良いのかわかりません。
なのでどのように作ったらババ抜きが作れるのかをソースで教えてください。
よろしくお願いします。
このページに載っているソースを使ってもらえると有難いです。
我儘なこと言ってすみません。よろしくお願いします。
自分なりに考えてやってきたのですがどのようにしたら良いのかわかりません。
なのでどのように作ったらババ抜きが作れるのかをソースで教えてください。
よろしくお願いします。
このページに載っているソースを使ってもらえると有難いです。
我儘なこと言ってすみません。よろしくお願いします。
投稿者 たかし  (社会人)
投稿日時
2014/1/6 11:10:03
まだその課題(?)終わってなかったんですね…。
あなた全編通して「ババ抜きのコードくれ」しか言ってませんね。
1回目もおそらくこの掲示板で出てきたのをそのままコピペかなにかして提出して再提出を命じられたのでしょう。
これだけ丁寧に教えて貰って出来ないならもう諦めましょう。
あと、書き込みの削除はミスした時以外しない方がいいですよ。
後から来た人がどういう流れで今どうなってるのか分からなくなるので
あなた全編通して「ババ抜きのコードくれ」しか言ってませんね。
1回目もおそらくこの掲示板で出てきたのをそのままコピペかなにかして提出して再提出を命じられたのでしょう。
これだけ丁寧に教えて貰って出来ないならもう諦めましょう。
あと、書き込みの削除はミスした時以外しない方がいいですよ。
後から来た人がどういう流れで今どうなってるのか分からなくなるので
投稿者 チャッピー  (高校生)
投稿日時
2014/1/6 10:26:02
このページに載っているソースを使ってもらえると有難いです。
我儘なこと言ってすみません。よろしくお願いします。
我儘なこと言ってすみません。よろしくお願いします。
投稿者 チャッピー  (高校生)
投稿日時
2014/1/6 09:52:57
返信遅れてすみません。
自分なりに考えてやってきたのですがどのようにしたら良いのかわかりません。
なのでどのように作ったらババ抜きが作れるのかをソースで教えてください。
よろしくお願いします。
自分なりに考えてやってきたのですがどのようにしたら良いのかわかりません。
なのでどのように作ったらババ抜きが作れるのかをソースで教えてください。
よろしくお願いします。
投稿者 (削除されました)  ()
投稿日時
2014/1/6 09:42:29
(削除されました)
投稿者 zakiYoshi  (高校生)
投稿日時
2013/12/15 14:26:58
まず、「プレイヤーにカードを配る」という手順を......
(1) カードの山から1枚カードを取る。
(2) そのカードをプレイヤーに渡す。
といった感じに細かく分けてみましょう。これをプログラムとして書くと......
(1) 変数 cards の1番目にあるカードを取り出す。
(2) プレイヤーの手持ちカード Cards にそのカードを追加する。
といった感じになると思います。
こうやってやりたいことを分けていくと、解決策を考えやすくなると思いますよ♪
(1) カードの山から1枚カードを取る。
(2) そのカードをプレイヤーに渡す。
といった感じに細かく分けてみましょう。これをプログラムとして書くと......
(1) 変数 cards の1番目にあるカードを取り出す。
(2) プレイヤーの手持ちカード Cards にそのカードを追加する。
といった感じになると思います。
こうやってやりたいことを分けていくと、解決策を考えやすくなると思いますよ♪
投稿者 (削除されました)  ()
投稿日時
2013/12/12 15:18:37
(削除されました)
投稿者 チャッピー  (高校生)
投稿日時
2013/12/12 14:47:52
生成はこんなにしてみたのですが、3番がよくわからなかったので解説よろしくお願いします。
Dim taro As New List(Of Card)
Dim jiro As New List(Of Card)
Dim taro As New List(Of Card)
Dim jiro As New List(Of Card)
投稿者 (削除されました)  ()
投稿日時
2013/12/12 14:05:12
(削除されました)
投稿者 るきお  (社会人)
投稿日時
2013/12/12 12:20:24
では次の3つの順番で考えましょう。
順番1.taroという名前(変数名)のプレイヤーを生成してください。
順番2.同じくjiroという名前(変数名)のプレイヤーを生成してください。
順番3.taroにカードを1枚配る
このプログラムを書いてみてください。
順番1.taroという名前(変数名)のプレイヤーを生成してください。
順番2.同じくjiroという名前(変数名)のプレイヤーを生成してください。
順番3.taroにカードを1枚配る
このプログラムを書いてみてください。
投稿者 (削除されました)  ()
投稿日時
2013/12/12 08:01:59
(削除されました)
投稿者 (削除されました)  ()
投稿日時
2013/12/12 08:01:45
(削除されました)
投稿者 (削除されました)  ()
投稿日時
2013/12/12 08:01:41
(削除されました)
投稿者 (削除されました)  ()
投稿日時
2013/12/12 08:01:11
(削除されました)
投稿者 チャッピー  (高校生)
投稿日時
2013/12/12 08:00:46
書けると思います。
投稿者 るきお  (社会人)
投稿日時
2013/12/12 07:39:57
では26枚ではなく、taroに1枚だけカードを配るプログラムは書けますか?
投稿者 チャッピー  (高校生)
投稿日時
2013/12/11 22:11:16
返答ありがとうございます。
手順3,4のやり方がよくわからないのでプログラムを教えてもらえるとありがたいです。
手順3,4のやり方がよくわからないのでプログラムを教えてもらえるとありがたいです。
投稿者 るきお  (社会人)
投稿日時
2013/12/11 12:36:34
>Public Class Player
> Public Property Cards As New List(Of Card)
>End Class
>などを使うのはわかる
それでいいと思いますよ。
では、次に
>配るカードを2人分(1人あたり26枚)にし、
なので、ここにカードを配る必要がありますね。
カードが配られた状態とはPleryクラスのインスタンスのCardsプロパティにカードがセットされている上体を指すことになります。
以前のカードを配らないバージョンのプログラムではこうなっていました。
カードはシャッフルした後、表示する前に配るものなので、この間にプログラムを追加して見ましょう。
次の順番にプログラムを追加してみてください。
順番1.taroという名前(変数名)のプレイヤーを生成してください。
順番2.同じくjiroという名前(変数名)のプレイヤーを生成してください。
順番3.シャッフルしたカードの中から26枚をtaroのCardsに設定してください。
順番4.シャッフルしたカードの中から26枚をjiroのCardsに設定してください。
> Public Property Cards As New List(Of Card)
>End Class
>などを使うのはわかる
それでいいと思いますよ。
では、次に
>配るカードを2人分(1人あたり26枚)にし、
なので、ここにカードを配る必要がありますね。
カードが配られた状態とはPleryクラスのインスタンスのCardsプロパティにカードがセットされている上体を指すことになります。
以前のカードを配らないバージョンのプログラムではこうなっていました。
'カードを生成
For i As Integer = 1 To 13
cards.Add(New Card With {.Number = i, .Mark = "スペード"})
cards.Add(New Card With {.Number = i, .Mark = "ダイヤ"})
cards.Add(New Card With {.Number = i, .Mark = "クラブ"})
cards.Add(New Card With {.Number = i, .Mark = "ハート"})
Next
cards.Add(New Card With {.Mark = "ババ"})
'カードをシャッフル
Shuffle(cards)
'PictureBox1~12に画像を表示
Dim imagePath As String = Application.StartupPath & "\images"
'以下略
カードはシャッフルした後、表示する前に配るものなので、この間にプログラムを追加して見ましょう。
次の順番にプログラムを追加してみてください。
順番1.taroという名前(変数名)のプレイヤーを生成してください。
順番2.同じくjiroという名前(変数名)のプレイヤーを生成してください。
順番3.シャッフルしたカードの中から26枚をtaroのCardsに設定してください。
順番4.シャッフルしたカードの中から26枚をjiroのCardsに設定してください。
投稿者 チャッピー  (高校生)
投稿日時
2013/12/11 09:42:26
すみません。
Public Class Player
Public Property Cards As New List(Of Card)
End Class
などを使うのはわかるのですが、よくわかりません。教えてくださいよろしくお願します。
Public Class Player
Public Property Cards As New List(Of Card)
End Class
などを使うのはわかるのですが、よくわかりません。教えてくださいよろしくお願します。
投稿者 るきお  (社会人)
投稿日時
2013/12/10 13:58:56
>できますか?
できます。
一度に全部やるのは大変なので1つずつ考えて見ましょう。
まずは、
>配るカードを2人分(1人あたり26枚)にし
の部分ですね。
はじめてプレイヤーという存在が出てきます。
また、プレイヤーはカードを持つことが前提になっています。
まずはカードを持てるプレイヤーをプログラムしてみてください。
※もっともこの順番で作ってばば抜きが完成するかどうかは保障できません。もっと良い順番があると思いますが、それは以前回答でふれたとおりです。
なお、今回のご質問は 2013/12/4 08:20:47 の投稿と同じものですから、
このときの回答 2013/12/3 22:32:57 も参考になると思います。
このときはチャッピーさんは「返答ありがとうございました。」とのことですね。
できます。
一度に全部やるのは大変なので1つずつ考えて見ましょう。
まずは、
>配るカードを2人分(1人あたり26枚)にし
の部分ですね。
はじめてプレイヤーという存在が出てきます。
また、プレイヤーはカードを持つことが前提になっています。
まずはカードを持てるプレイヤーをプログラムしてみてください。
※もっともこの順番で作ってばば抜きが完成するかどうかは保障できません。もっと良い順番があると思いますが、それは以前回答でふれたとおりです。
なお、今回のご質問は 2013/12/4 08:20:47 の投稿と同じものですから、
このときの回答 2013/12/3 22:32:57 も参考になると思います。
このときはチャッピーさんは「返答ありがとうございました。」とのことですね。
投稿者 チャッピー  (高校生)
投稿日時
2013/12/10 10:35:52
今までのプログラムは1人分のカード(12枚)を配り、同じ数字があったら消えるという
プログラムでしたが、配るカードを2人分(1人あたり26枚)にし、自分のカードの中に同じ数字があったら消え、左にソートし、同じ数字が全て消えたら相手のカードを選択し自分のピクチャーボックスに持ってくることってできますか?
できるのであればぜひ教えて下さい。
よろしくお願いいたします(@_@)!!
プログラムでしたが、配るカードを2人分(1人あたり26枚)にし、自分のカードの中に同じ数字があったら消え、左にソートし、同じ数字が全て消えたら相手のカードを選択し自分のピクチャーボックスに持ってくることってできますか?
できるのであればぜひ教えて下さい。
よろしくお願いいたします(@_@)!!
投稿者 (削除されました)  ()
投稿日時
2013/12/9 09:54:20
(削除されました)
投稿者 shu  (社会人)
投稿日時
2013/12/5 08:20:01
るきおさんが提示したコードをそのまま使って
解説も人が書いたものをそのまま使って
レポートなのかなんなのか分かりませんが作るのは
どうかと思います。
しっかりと自分で理解出来るものを作成された方がよいです。
一応
Dimは変数の宣言でcardsがカードリスト、rがランダム発生用、
imagePath が画像保存フォルダ、iがループ用変数、pictureBox が表示対象のピクチャーボックス、
card2がピクチャーボックスに割り当てられているカード、targetがランダムに入れ替えるときの入れ替え
先、tempが入れ替える為の片方の値を保存するための一時用
配列、乱数発生については前回答で済
処理順についてはコメントが入っているので分かるかと思います。
重複チェックとは同じ数字があったら捨てるババ抜きのルール部分のことでしょうか?
If card1.Number = card2.Number Then
だとしたらこれですね。なぜこのループでチェックが出来るかはソースを追ってみて下さい。
カードをシャッフルするときの話でしたら入れ替えを行っているだけなので重複チェックは
発生しません。
解説も人が書いたものをそのまま使って
レポートなのかなんなのか分かりませんが作るのは
どうかと思います。
しっかりと自分で理解出来るものを作成された方がよいです。
一応
Dimは変数の宣言でcardsがカードリスト、rがランダム発生用、
imagePath が画像保存フォルダ、iがループ用変数、pictureBox が表示対象のピクチャーボックス、
card2がピクチャーボックスに割り当てられているカード、targetがランダムに入れ替えるときの入れ替え
先、tempが入れ替える為の片方の値を保存するための一時用
配列、乱数発生については前回答で済
処理順についてはコメントが入っているので分かるかと思います。
重複チェックとは同じ数字があったら捨てるババ抜きのルール部分のことでしょうか?
If card1.Number = card2.Number Then
だとしたらこれですね。なぜこのループでチェックが出来るかはソースを追ってみて下さい。
カードをシャッフルするときの話でしたら入れ替えを行っているだけなので重複チェックは
発生しません。
投稿者 チャッピー  (高校生)
投稿日時
2013/12/4 21:54:52
そうですね。そうしてもらえると嬉しいです。
また、パワーポイントでこのソースの配列から乱数発生・重複チェックのところまでまとめることになってしまったので、配列がどのように格納されていて、どのように乱数を発生させていて重複チェックをしているのかをわかりやすく教えてもらいたいです。よろしくお願いします!!
また、パワーポイントでこのソースの配列から乱数発生・重複チェックのところまでまとめることになってしまったので、配列がどのように格納されていて、どのように乱数を発生させていて重複チェックをしているのかをわかりやすく教えてもらいたいです。よろしくお願いします!!
投稿者 shu  (社会人)
投稿日時
2013/12/4 11:38:14
> そのプログラムの配列はどのようになっているのか、また
Dim cards As New List(Of Card)
が配列の代わりで
> どのようにして乱数を発生させているのか
Sub Shuffle
にて
Dim r As New Random
と
r.Next(0, cards.Count)
で0以上cards.Count未満の乱数を発生させています。
> 素人に教えるように詳しく教えてもらえませんか?
質問の内容が詳しくなくどの程度分からないのか分からないので
難しいのではないでしょうか。Dimの説明からしますか?
Dim cards As New List(Of Card)
が配列の代わりで
> どのようにして乱数を発生させているのか
Sub Shuffle
にて
Dim r As New Random
と
r.Next(0, cards.Count)
で0以上cards.Count未満の乱数を発生させています。
> 素人に教えるように詳しく教えてもらえませんか?
質問の内容が詳しくなくどの程度分からないのか分からないので
難しいのではないでしょうか。Dimの説明からしますか?
投稿者 チャッピー  (高校生)
投稿日時
2013/12/4 08:20:47
返答ありがとうございました。
また、違う質問になるのですがこのページに載っている
プログラムありますよね?
そのプログラムの配列はどのようになっているのか、また
どのようにして乱数を発生させているのかを素人に教えるよう
に詳しく教えてもらえませんか?
教えて下さい。よろしくお願いいたします(@_@)
また、違う質問になるのですがこのページに載っている
プログラムありますよね?
そのプログラムの配列はどのようになっているのか、また
どのようにして乱数を発生させているのかを素人に教えるよう
に詳しく教えてもらえませんか?
教えて下さい。よろしくお願いいたします(@_@)
投稿者 zakiYoshi  (高校生)
投稿日時
2013/12/3 22:32:57
はじめまして。Zakiyoshi です。
>自分のカードの中に同じ数字があったら消え、左にソートし、
プレイヤーの持つカードのリストを用意し、同じ数字のカードを Remove メソッドで削除する というのはいかがでしょう。
>同じ数字が全て消えたら相手のカードを選択し自分のピクチャーボックスに持ってくることってできますか?
選択されたカードを、相手のカードのリストから削除し、自分のカードのリストに Add メソッドで追加といったところでしょうか。
>自分のカードの中に同じ数字があったら消え、左にソートし、
プレイヤーの持つカードのリストを用意し、同じ数字のカードを Remove メソッドで削除する というのはいかがでしょう。
>同じ数字が全て消えたら相手のカードを選択し自分のピクチャーボックスに持ってくることってできますか?
選択されたカードを、相手のカードのリストから削除し、自分のカードのリストに Add メソッドで追加といったところでしょうか。
投稿者 チャッピー  (高校生)
投稿日時
2013/12/3 18:49:35
よろしくお願いいたします
投稿者 チャッピー  (高校生)
投稿日時
2013/12/2 23:04:27
すみません。質問が変でしたね。
タイマーのプログラムの方も教えてもらえると嬉しいです。
また、今までのプログラムは1人分のカード(12枚)を配り、同じ数字があったら消えるという
プログラムでしたが、配るカードを2人分(1人あたり26枚)にし、自分のカードの中に同じ数字があったら消え、左にソートし、同じ数字が全て消えたら相手のカードを選択し自分のピクチャーボックスに持ってくることってできますか?
できるのであればぜひ教えて下さい。
よろしくお願いいたします(@_@)!!
タイマーのプログラムの方も教えてもらえると嬉しいです。
また、今までのプログラムは1人分のカード(12枚)を配り、同じ数字があったら消えるという
プログラムでしたが、配るカードを2人分(1人あたり26枚)にし、自分のカードの中に同じ数字があったら消え、左にソートし、同じ数字が全て消えたら相手のカードを選択し自分のピクチャーボックスに持ってくることってできますか?
できるのであればぜひ教えて下さい。
よろしくお願いいたします(@_@)!!
投稿者 (削除されました)  ()
投稿日時
2013/12/2 21:54:39
(削除されました)
投稿者 るきお  (社会人)
投稿日時
2013/12/2 21:44:05
>タイマーについて詳しくお願いいたします(@_@)
ずばりのプログラムよりも、タイマーについての詳しい説明の方が良いということですね?
●私が言うTimerはButtonやTextBoxと同じコントロールの1種であり、ツールバーからフォームに貼りつけて使います。(ツールバーの「コンポーネント」のところにあります。)
●フォームに貼り付けると、フォームの下の領域に表示されます。
●Timerを使うと、一定の時間ごとに処理を繰り返して実行することができます。たとえば、5秒ごとに同じ処理を繰り返すことができます。
●Timerの有効・無効は Enabledプロパティで切り替えられるので、何度も処理を繰り返したくない場合はEnabledプロパティをFalseにすることで、それ以降処理を繰り返さないようにできます。
●Timerが実行する処理はTickイベントに記述します。
●Timerが処理を呼び出す時間間隔はIntervalプロパティで設定します。Intervalプロパティでは1000は1秒の意味になります。
つまり、
>カードを表示させてからカードが消えるまでの時間をちょっと長くしたいのですができますか?
カードを消す処理を TimerのTick イベントに記述し、
カードを表示させた直後にTimerのEnabledプロパティをTrueにすれば、
Intervalプロパティで設定した時間が経過した後でカードが消えることになります。
何度も同じ処理を繰り返さないために1度目のTickイベントでEnabledプロパティをFalseにしてしまうのがよいでしょう。
こんなところでどうでしょうか?
.NET Framework には「Timer」という名前のクラスがいくつか(多分4つ)あるので、Googleなどで情報を探すときは注意してください。
私が言っているTimer (System.Windows.Forms.Timer)についての公式の説明はここにあります。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.timer(v=vs.110).aspx
ずばりのプログラムよりも、タイマーについての詳しい説明の方が良いということですね?
●私が言うTimerはButtonやTextBoxと同じコントロールの1種であり、ツールバーからフォームに貼りつけて使います。(ツールバーの「コンポーネント」のところにあります。)
●フォームに貼り付けると、フォームの下の領域に表示されます。
●Timerを使うと、一定の時間ごとに処理を繰り返して実行することができます。たとえば、5秒ごとに同じ処理を繰り返すことができます。
●Timerの有効・無効は Enabledプロパティで切り替えられるので、何度も処理を繰り返したくない場合はEnabledプロパティをFalseにすることで、それ以降処理を繰り返さないようにできます。
●Timerが実行する処理はTickイベントに記述します。
●Timerが処理を呼び出す時間間隔はIntervalプロパティで設定します。Intervalプロパティでは1000は1秒の意味になります。
つまり、
>カードを表示させてからカードが消えるまでの時間をちょっと長くしたいのですができますか?
カードを消す処理を TimerのTick イベントに記述し、
カードを表示させた直後にTimerのEnabledプロパティをTrueにすれば、
Intervalプロパティで設定した時間が経過した後でカードが消えることになります。
何度も同じ処理を繰り返さないために1度目のTickイベントでEnabledプロパティをFalseにしてしまうのがよいでしょう。
こんなところでどうでしょうか?
.NET Framework には「Timer」という名前のクラスがいくつか(多分4つ)あるので、Googleなどで情報を探すときは注意してください。
私が言っているTimer (System.Windows.Forms.Timer)についての公式の説明はここにあります。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.timer(v=vs.110).aspx
投稿者 チャッピー  (高校生)
投稿日時
2013/12/2 19:50:05
タイマーについて詳しくお願いいたします(@_@)
投稿者 チャッピー  (高校生)
投稿日時
2013/12/2 09:29:09
お願いします。
投稿者 るきお  (社会人)
投稿日時
2013/12/2 07:31:26
できますよ。
Timerを使うのが簡単だと思います。
ずばりなプログラムを紹介した方がいいですか?
Timerを使うのが簡単だと思います。
ずばりなプログラムを紹介した方がいいですか?
投稿者 チャッピー  (高校生)
投稿日時
2013/12/1 22:22:15
いつも変な質問してすみません。
カードを表示させて、同じ数字のカードがあったら消えるようになったんですけど
カードを表示させてからカードが消えるまでの時間をちょっと長くしたいのですができますか?
カードを表示させて、同じ数字のカードがあったら消えるようになったんですけど
カードを表示させてからカードが消えるまでの時間をちょっと長くしたいのですができますか?
投稿者 るきお  (社会人)
投稿日時
2013/12/1 20:43:00
ファイル名にもよりますが、こんな感じです。
この場合、ファイル名は 「s01.png」のような名前でexeがある位置にimagesフォルダーの中に格納されている前提です。
ただ、ババ抜きを作る前提で質問の順番があまりよくないと思いますよ。
最初が
>まず最初に2人分のカードを配るためにコレクションを作る
で、次が、
>トランプの画像(53枚)をランダムにピクチャーボックス1~12に表示させ
>もし表示させた中に同じ数字の画像があったら非表示にしたいのですがどうしたら良いですか?
ですね。
もし、私が1からババ抜きの方法を教えてくださいと言われた場合はもっと違う順番で考えていきます。
とはいえ、チャッピーさんの順番でもババ抜きが完成しないほど悪くはないです。まずはつっぱしってみてもいいかもしれません。
何より自分で考えることの方が重要です。
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim cards As New List(Of Card)
'カードを生成
For i As Integer = 1 To 13
cards.Add(New Card With {.Number = i, .Mark = "スペード"})
cards.Add(New Card With {.Number = i, .Mark = "ダイヤ"})
cards.Add(New Card With {.Number = i, .Mark = "クラブ"})
cards.Add(New Card With {.Number = i, .Mark = "ハート"})
Next
cards.Add(New Card With {.Mark = "ババ"})
'カードをシャッフル
Shuffle(cards)
'PictureBox1~12に画像を表示
Dim imagePath As String = Application.StartupPath & "\images"
For i As Integer = 1 To 12
Dim pictureBox = DirectCast(Me.Controls("PictureBox" & i.ToString), PictureBox)
pictureBox.Image = Image.FromFile(imagePath & "\" & cards(i - 1).FileName)
pictureBox.Tag = cards(i - 1)
Next
'同じ数字の画像を非表示にする
For i As Integer = 1 To 12
Dim pictureBox1 = DirectCast(Me.Controls("PictureBox" & i.ToString), PictureBox)
If pictureBox1.Visible = False Then
Continue For
End If
Dim card1 = DirectCast(pictureBox1.Tag, Card)
For j As Integer = i + 1 To 12
Dim pictureBox2 = DirectCast(Me.Controls("PictureBox" & j.ToString), PictureBox)
If pictureBox2.Visible = False Then
Continue For
End If
Dim card2 = DirectCast(pictureBox2.Tag, Card)
If card1.Number = card2.Number Then
pictureBox1.Visible = False
pictureBox2.Visible = False
Exit For
End If
Next
Next
End Sub
''' <summary>カードをシャッフルします。</summary>
Public Sub Shuffle(cards As List(Of Card))
Dim r As New Random
For i As Integer = 0 To cards.Count - 1
Dim target As Integer = r.Next(0, cards.Count)
Dim temp As Card = cards(target)
cards(target) = cards(i)
cards(i) = temp
Next
End Sub
End Class
Public Class Card
Public Property Number As Integer
Public Property Mark As String
Public ReadOnly Property FileName As String
Get
Select Case Mark
Case "スペード"
Return "s" & Number.ToString("00") & ".png"
Case "ダイヤ"
Return "d" & Number.ToString("00") & ".png"
Case "クラブ"
Return "c" & Number.ToString("00") & ".png"
Case "ハート"
Return "h" & Number.ToString("00") & ".png"
Case Else
Return "joker.png"
End Select
End Get
End Property
End Class
この場合、ファイル名は 「s01.png」のような名前でexeがある位置にimagesフォルダーの中に格納されている前提です。
ただ、ババ抜きを作る前提で質問の順番があまりよくないと思いますよ。
最初が
>まず最初に2人分のカードを配るためにコレクションを作る
で、次が、
>トランプの画像(53枚)をランダムにピクチャーボックス1~12に表示させ
>もし表示させた中に同じ数字の画像があったら非表示にしたいのですがどうしたら良いですか?
ですね。
もし、私が1からババ抜きの方法を教えてくださいと言われた場合はもっと違う順番で考えていきます。
とはいえ、チャッピーさんの順番でもババ抜きが完成しないほど悪くはないです。まずはつっぱしってみてもいいかもしれません。
何より自分で考えることの方が重要です。
投稿者 (削除されました)  ()
投稿日時
2013/12/1 19:52:11
(削除されました)
投稿者 チャッピー  (高校生)
投稿日時
2013/12/1 19:52:08
すみません。
トランプの画像(53枚)をランダムにピクチャーボックス1~12に表示させ
もし表示させた中に同じ数字の画像があったら非表示にしたいのですがどうしたら良いですか?
トランプの画像(53枚)をランダムにピクチャーボックス1~12に表示させ
もし表示させた中に同じ数字の画像があったら非表示にしたいのですがどうしたら良いですか?
投稿者 るきお  (社会人)
投稿日時
2013/12/1 19:20:46
>また、その続きの情報を教えてくれるありがたいです。
追加で知りたいことがあるということでしょうか?
それとも、今度質問したときに引き続き情報提供を依頼するという意味でしょうか?
どうも、文章の裏を読むということが苦手なのではっきり教えてもらえると助かります。
追加で知りたいことがあるということでしょうか?
それとも、今度質問したときに引き続き情報提供を依頼するという意味でしょうか?
どうも、文章の裏を読むということが苦手なのではっきり教えてもらえると助かります。
投稿者 チャッピー  (高校生)
投稿日時
2013/12/1 19:14:03
返答ありがとうございました。
また、その続きの情報を教えてくれるありがたいです。
また、その続きの情報を教えてくれるありがたいです。
投稿者 るきお  (社会人)
投稿日時
2013/12/1 18:39:15
ちなみに、もっといろいろ紹介することもできるのですが、
チャッピーさんの投稿内容から、自分で考えてプログラムを作りたいので余計なことは書かない方が良いと判断しました。
もし、そうではないならそうおっしゃっていただければ、できる範囲で協力します。
なお、1つ理解していただきたいのは、ババ抜きの作り方はたくさんあるというところです。
だから、この後、カードを配ったり、捨てたり、表示したりということが必要になってきますが、
Aさんからカードを配る方法を教えてもらい、Bさんからカードを捨てる方法を教えてもらい、組み合わせるとまったく動かないプログラム(具体的には何らかのエラー)になります。
そうならないように質問するのはなかなかの苦労です。
チャッピーさんの投稿内容から、自分で考えてプログラムを作りたいので余計なことは書かない方が良いと判断しました。
もし、そうではないならそうおっしゃっていただければ、できる範囲で協力します。
なお、1つ理解していただきたいのは、ババ抜きの作り方はたくさんあるというところです。
だから、この後、カードを配ったり、捨てたり、表示したりということが必要になってきますが、
Aさんからカードを配る方法を教えてもらい、Bさんからカードを捨てる方法を教えてもらい、組み合わせるとまったく動かないプログラム(具体的には何らかのエラー)になります。
そうならないように質問するのはなかなかの苦労です。
投稿者 るきお  (社会人)
投稿日時
2013/12/1 18:32:03
はじめのうちはシンプルに考えて、必要に応じてプログラムを追加・修正していくのが良いと思います。
そうすると、
>2人分のカードを配るためにコレクションを作るところから
「カード」が存在することが前提ですから、カードをプログラムで定義します。
次のようになります。
さらに、プレイヤーが存在することになりますから次のようなプログラムになります。
最後に、プレイヤーにはカードが配られるので、チャッピーさんが言うようにこれはコレクションで管理するのが良いでしょう。
このために、PlayerクラスはCard型のコレクションを持つことになります。
次の通りです。
以上で、複数のプレイヤーがカードを持てる構造が完成です。
ババ抜きのプログラムが進むと、この構造に機能を追加したり、修正したりといったことが発生してくると思います。
そうすると、
>2人分のカードを配るためにコレクションを作るところから
「カード」が存在することが前提ですから、カードをプログラムで定義します。
次のようになります。
Public Class Card
End Class
さらに、プレイヤーが存在することになりますから次のようなプログラムになります。
Public Class Player
End Class
最後に、プレイヤーにはカードが配られるので、チャッピーさんが言うようにこれはコレクションで管理するのが良いでしょう。
このために、PlayerクラスはCard型のコレクションを持つことになります。
次の通りです。
Public Class Player
Public Property Cards As New List(Of Card)
End Class
以上で、複数のプレイヤーがカードを持てる構造が完成です。
ババ抜きのプログラムが進むと、この構造に機能を追加したり、修正したりといったことが発生してくると思います。
投稿者 チャッピー  (高校生)
投稿日時
2013/12/1 15:03:58
すみません。またババ抜きを最初から作ることになりました。
では質問させていただきます。
「ババ抜きを前提に、VBのプログラムでカードを表現する最適な方法は何ですか?」
まず最初に2人分のカードを配るためにコレクションを作るところから教えてもらいたいのですが
よろしいですか?よろしくお願いします。!!
では質問させていただきます。
「ババ抜きを前提に、VBのプログラムでカードを表現する最適な方法は何ですか?」
まず最初に2人分のカードを配るためにコレクションを作るところから教えてもらいたいのですが
よろしいですか?よろしくお願いします。!!