大富豪 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 るきお  (社会人) 投稿日時 2011/9/9 13:01:01
大富豪ではありませんが、じゃっかん近いちんちろりんの作り方をここに書いています。
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard14.htm

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

画像表示もやっていますよ。
投稿者 shu  (社会人) 投稿日時 2011/9/9 12:46:30
トランプを表示するにはPictureBoxを使用すると良いと思います。
カード1枚につき1つのPictureBoxが入るようにしてもよいのですが
大富豪はトランプの枚数が多くなるので1人当たり1つのPictureBoxを用意すると
よいのではないでしょうか。

カードの画像データは読み込んでもいいし、リソースとして埋め込んでしまうという
方法もあります。
投稿者 匿名  (高校生) 投稿日時 2011/9/9 11:35:35
本当に初心者で申し訳ないのですが、
画面にどのようにすればトランプを表示させることができるのでしょうか;

スタートをクリックしたらプレイヤー(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で良いです。

投稿者 ks  (その他) 投稿日時 2011/9/9 09:56:07
私もたまたま大富豪を作ってみようと考えていたのですが、
shuさんの返答を参考にしてみたいと思いました。

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

上の部分もう少し詳しく教えていただけないでしょうか。
投稿者 shu  (社会人) 投稿日時 2011/9/9 08:11:00
トランプ全体を表現する配列
各人のもち札を表現する配列(だんだんへっていくのでListの方がよいかも)
場に最後にだされた札を格納する配列(大きさ4あればいいと思う。)
強弱の状況を格納する変数(革命があるので)
順番を表す変数

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

インデックス0から順に各人の持ち札にコピーしていけば配る処理まで終わります。
投稿者 匿名  (高校生) 投稿日時 2011/9/8 21:38:12
はじめまして。

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

細かいルール等は自力でなんとかするので、
どなたさまか簡単な作り方、ソースコード等教えていただけないでしょうか;;