大富豪

タグの編集
投稿者 匿名  (高校生) 投稿日時 2011/9/8 21:38:12
はじめまして。

VBで急遽大富豪を作ることになってしまいました。
自分は今VBを学習中なのですが、まだまだ初心者で作り方がわかりません。

細かいルール等は自力でなんとかするので、
どなたさまか簡単な作り方、ソースコード等教えていただけないでしょうか;;
投稿者 shu  (社会人) 投稿日時 2011/9/9 08:11:00
トランプ全体を表現する配列
各人のもち札を表現する配列(だんだんへっていくのでListの方がよいかも)
場に最後にだされた札を格納する配列(大きさ4あればいいと思う。)
強弱の状況を格納する変数(革命があるので)
順番を表す変数

トランプのシャッフルはいろいろありますが、よくまざる方法としては
0から51(ジョーカー2枚なら52)までまわして、乱数をその数+1から52(53)までから
発生させ最初のインデックスと乱数によるインデックスで交換するといいです。

インデックス0から順に各人の持ち札にコピーしていけば配る処理まで終わります。
投稿者 ks  (その他) 投稿日時 2011/9/9 09:56:07
私もたまたま大富豪を作ってみようと考えていたのですが、
shuさんの返答を参考にしてみたいと思いました。

トランプ全体を表現する配列
各人のもち札を表現する配列(だんだんへっていくのでListの方がよいかも)
場に最後にだされた札を格納する配列(大きさ4あればいいと思う。)
強弱の状況を格納する変数(革命があるので)
順番を表す変数

上の部分もう少し詳しく教えていただけないでしょうか。
投稿者 shu  (社会人) 投稿日時 2011/9/9 11:05:06
トランプを表現するのに簡単な型を使うとしてIntegerで十分表現できます。

マークを例えばハート:0, ダイヤ:1, クローバー:2, スペード:3
とすれば
マーク * 13 + (数字 - 1)
で表現出来ます。
逆aという値からマークと数字を求めるには
マーク = a \ 13
数字 = (a mod 13) + 1
として求めることが出来ます。ジョーカーは52としてしまえばよいでしょう。ジョーカーを0として
1から52までにわりあててしまってもよいと思います。

これがめんどうならマークと数字の情報を持った構造体を使うと良いかと思います。

全体は AllCards(52) as Integer
持ち札は Cards(人数, 52) as Integer とするか Cards(人数) as List(Of Integer)
もしくは List(Of List(Of Integer))とする方法もあると思います。
場に最後に出された札はLastCards(3) as IntegerまたはList(Of Integer)。順番札を何枚まで許すかに
もよる。
強弱は2通りしかないのでbooleanで十分かと思いますが、特殊ルールみたいのをつけるならIntegerにしていろいろ出来るようにしても良いかもしれません。
順番は今誰の番かを表すのでIntegerで良いです。

投稿者 匿名  (高校生) 投稿日時 2011/9/9 11:35:35
本当に初心者で申し訳ないのですが、
画面にどのようにすればトランプを表示させることができるのでしょうか;

スタートをクリックしたらプレイヤー(4人)にカードが配られるようにしたいのです。
カードの画像データは別ファイルに保存してあるので、それを読み込ませる必要があるのですか?
質問ばかりで申し訳ありません・・・
投稿者 shu  (社会人) 投稿日時 2011/9/9 12:46:30
トランプを表示するにはPictureBoxを使用すると良いと思います。
カード1枚につき1つのPictureBoxが入るようにしてもよいのですが
大富豪はトランプの枚数が多くなるので1人当たり1つのPictureBoxを用意すると
よいのではないでしょうか。

カードの画像データは読み込んでもいいし、リソースとして埋め込んでしまうという
方法もあります。
投稿者 るきお  (社会人) 投稿日時 2011/9/9 13:01:01
大富豪ではありませんが、じゃっかん近いちんちろりんの作り方をここに書いています。
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard14.htm

このちんちろりんができたからと言って大富豪が作れるわけではありませんが、
このちんちろりんくらいの仕組みを理解していないと大富豪は作れないと思います。
参考にしてみてください。

画像表示もやっていますよ。