ポーカーを作りたいのですが、カードを配る所まではなんとか自力で出来たのですが・・・。
肝心のカードの交換が分かりません(T_T)
一応、チェックボックスとイメージを配列で処理しているのですが・・・。

簡単な配列しか分からない私が挑戦するにはまだポーカーは早かったのでしょうか??

このQ&Aに関連する最新のQ&A

A 回答 (2件)

挑戦するのに早いも遅いもないと思いますよ。


難易度はそれなりに高いですが、目的があるだけにいい題材になるとは思います。
結構メジャーなゲームなので、それなりに本などにサンプルが載っているとは思うので、最終的にはこれらを手本に作るといいでしょう。
まずは簡単な、役のチェックのない単純なポーカーを作ってみてはいかがでしょうか。

質問の文章からでは、どのような方法でプログラムを作成されているかわかりませんので、ポーカーを作るにあたって基本から説明します。

ポーカーというゲームを考えたときに、まずはどういうデータが必要かを考えます。
まずはトランプのカードが52枚あります。
これらの数字やマークはすべて違いますから、52個の配列を作成し、それらに数字とマークのデータを入れることになります。
構造体を使うと後々役のチェックにも便利でしょうから、構造体について少し勉強してみるとよいでしょう。
次に自分の手札についてですが、これは5枚のため、5個の配列を作成してやります。
後の説明のために、Yama(52)とTefuda(5)という配列の変数名にするとします。

データ構造が決まれば、あとはカードを配るという作業があります。
まずは、自分の手札にカードを山から5枚取得します。
そして、次にいらないカードを交換します。
ここで考えてほしいのは、手札を配るのも、カードの交換で新しいカードを取るのも、同じ作業であるということです。
つまり、最初の手札を配るということは、Tefuda(1)~Tefuda(5)に対して、Yama(52)からランダムでデータを取り出すことです。
そして、カードを交換するということは、Tefuda(n)に対して、Yama(52)からランダムでデータを取り出すことです。
これから考えると、手札を配るのも、カードの交換も、同じ関数で処理できることがわかります。

とりあえずは、これを参考にプログラムをもう一度見直し、作成されてはどうでしょうか。
    • good
    • 0

早い事はないと思います。


カードの交換より、対コンピュータでゲームをする場合に
コンピュータのアルゴリズムを考えるほうが大変では?

交換の方は、最初にランダムで52+1枚を配列に格納して
配列から順番に配る方法だと
自分手札1 相手手札1 自分手札2 相手手札2 ・・・
という風になるのですが
仮に自分手札 1~5枚がインデックス 1~5
相手手札 1~5枚がインデックス 6~10
として

カードを一枚配るという関数をインデックスを引数に作ってあげれば
最初に配る時も交換するときも要領は同じはずです。

あとは、役の判断ができればなんとか、できるのでは?
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qポーカー ルール

最近、トランプのポーカーという遊びが気になります。

ポーカー ルール で検索を掛けてみたのですが、
用語などで意味がわかりません。


ポーカーにもいろいろな種類があるそうなので、種類と、一般的なポーカーのルールを詳しく教えてください。


お願いします。

Aベストアンサー

http://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%BC%E3%82%AB%E3%83%BC

が整理されて詳しいです。わからないことがあれば具体的に質問してください。

大きく、
・ドローポーカー(上記ページではクローズド・ポーカー) ・・・・ 自分の札は全部非公開で、カードを交換して役を作る
・スタッドポーカー ・・・・ カード交換は無く、自分の札は最初1-2枚非公開で配った後、1枚ずつ公開して配っていく
・その他特殊な物
に分かれます。

私の身の回りで「ポーカー」としてされてたのは、交換回数無制限(誰かが止めるまで続く)のドローポーカーですね。家庭用にチップを掛けないでも遊べるように変形された物でしょう。チップを掛けないので、ポーカーと言えないですが。

QVBA 配列計算について 配列の入力に配列の使用

配列に複数のセル値の合計値を設定したいと思っています。
求める合計値は複数あるため、出力も配列となります。
そこで下記のようにプログラムを考えたのですが、全て同じ値の配列として出力されてしまいます。
VBAではC言語のように配列の古い値に足していくことはできないのでしょうか?

(sum()は0で初期化) (10個飛ばしのデータの合計値を算出)
For i = 0 To 10
For j = 0 To 5
sum(i)= sum(i) + Worksheets(sheetname).Cells(10, 3).Offset(j * 10, 0).Value
Next i
Next j

出力配列例 全て同じ値になってしまいます・・・
1.254
1.254
1.254
・・・

回避方法もしくはうまい計算方法などありませんでしょうか

Aベストアンサー

なにを計算したいんでしょうか?

このコードでは、どのSum(i)にも、
Cells(10,3).Value + Cells(20,3).Value + ・・・・ + Cells(60,3).Value
の値が入るから、同じになるのは当然です。

i ごとにSum(i)を変えたいのなら、
Worksheets(sheetname).Cells(10, 3).Offset(j * 10, 0).Value
の中のどこかに i が入ってないと・・・・

Qポーカーにの「ファイブスタッド」のルール

この間「デビルメイクライ」というアニメでポーカーが出てきたのですが今まで僕がやっていたポーカーとはずいぶん違うルールだったので調べてみると「ファイブスタッド」というルールのようでした。でもいろんなサイトのルール説明をみても専門用語ばっかりでさっぱり分かりません。専門用語なしで分かりやすく教えてください。よろしくお願いします。あとよければ他のポーカーのオススメルールも教えてください。

Aベストアンサー

まず、全員が参加費を支払います(アンティ)。
次に、カードが配られます(裏向きで1枚、表向きで1枚の、計2枚)。

この段階で最初の「ベットラウンド(↓の手順)」があります。
表のカードの内、一番低いカード(数字が同じならスートも見ます。スペード>ハート>ダイヤ>クラブ)をもって居る人が、「ベット(賭け金を賭ける)を行います。これは強制です。
次に左隣の人から順に「レイズ(賭け金を上げる)」「コール(同じ賭け金を賭ける)」「フォールド(ゲームから降りる)」の何れかを順番に行い、場に居るプレイヤーのベット額が同額になるまで続けます。
なお、フォールドを選んだ場合は、そのゲームから降りる事になるので、次のゲームになるまで参加する事は出来ません。

ベットラウンドが終われば、全員に表向きのカードが1枚配られます。
今度は場にあるカードの内一番強いカードを持っている人からベットラウンドを始めます。
この時、その人は強制ベットではなく、「チェック(賭けずに様子見/0を賭ける)」と言う事も出来ます。(もちろんベットも可)
なお、そのラウンド中、自分より前の人が全員チェックなら自分もチェックを選択出来ます。全員チェックしたらラウンド終了です。

同じ事を、手札が5枚になるまで繰り返します。
5枚になった後のベットラウンドが終了すれば、手札を見せ合い、一番強い役の人が勝利します。

ファイブカードスタッドの基本はこんな感じです。

また、同様に、「セブンカードスタッド」というルールもあり、基本は↑と一緒ですが、配るカードが「裏・裏・表(ここでベットラウンド。以降1枚ごとにベットラウンド)・表・表・表・裏」となります。
7枚の内任意の5枚を使って役を作ります。

ベットの最少額等にいろいろ分かりにくい部分が出ますが、文字数が無いのでここでは省略。

まず、全員が参加費を支払います(アンティ)。
次に、カードが配られます(裏向きで1枚、表向きで1枚の、計2枚)。

この段階で最初の「ベットラウンド(↓の手順)」があります。
表のカードの内、一番低いカード(数字が同じならスートも見ます。スペード>ハート>ダイヤ>クラブ)をもって居る人が、「ベット(賭け金を賭ける)を行います。これは強制です。
次に左隣の人から順に「レイズ(賭け金を上げる)」「コール(同じ賭け金を賭ける)」「フォールド(ゲームから降りる)」の何れかを順番に行...続きを読む

Q2次元配列の配列

VisualBasic.NETでプログラムを作っているのですが、2次元配列の配列で行き詰って困っています。
配列1~3を別に定義して、その2次元配列を配列Xという配列にひとまとめにしたいのですが、エラーが出てしまいます。
エラー内容は「配列初期化子の次元が少なすぎます」で、場所は配列Xの第1要素です。
配列1~3以降もどんどん配列を追加していく予定なので、なるべく以下の方法で書いていきたいのですが、解決法はないでしょうか?
また、他にいい方法があればご教授ください。

ソースです。
----------------------------------------
Public 配列1(,) As Integer = _
{ _
{1, 1, 1}, _
{1, 1, 1}, _
{1, 1, 1}, _
{1, 1, 1} _
}

Public 配列2(,) As Integer = _
{ _
{2, 2, 2}, _
{2, 2, 2}, _
{2, 2, 2}, _
{2, 2, 2} _
}

Public 配列3(,) As Integer = _
{ _
{3, 3, 3}, _
{3, 3, 3}, _
{3, 3, 3}, _
{3, 3, 3} _
}

Public 配列X(,)() As Integer = { _
配列1, _     ←ここにエラーが出る
配列2, _
配列3 _
}
----------------------------------------

回答よろしくお願いします。

VisualBasic.NETでプログラムを作っているのですが、2次元配列の配列で行き詰って困っています。
配列1~3を別に定義して、その2次元配列を配列Xという配列にひとまとめにしたいのですが、エラーが出てしまいます。
エラー内容は「配列初期化子の次元が少なすぎます」で、場所は配列Xの第1要素です。
配列1~3以降もどんどん配列を追加していく予定なので、なるべく以下の方法で書いていきたいのですが、解決法はないでしょうか?
また、他にいい方法があればご教授ください。

ソースです。
-------------...続きを読む

Aベストアンサー

Public 配列X()(,) As Integer = { _
 配列1, _
 配列2, _
 配列3 _
}

です。

Qハンゲーム・ポーカーの暗黙の了解ルール

ハンゲームのポーカーを最近始めました。部屋に入ろうとすると「はふだい」とか「自由」とか「さいはふ」とかいろいろ書いてありますよね。遊ぶときの条件だというのは判ったのですが、具体的なルールなんてどこにも書いてないですよね。(これは皆さんどこで知るんでしょう?すごく疑問です。ま、それはともかく・・・)
ここで遊ぶ際の暗黙の了解ルールを、具体的に教えていただけないでしょうか。特に禁止事項『この部屋の場合はこれはしてはいけない』というのを知りたいです。判らずに遊んでいて迷惑かけるのもイヤだし怒られてイヤな思いをするのもイヤです~。
どうぞよろしくお願いします。

Aベストアンサー

こんにちは! 私もハンゲームファンです。
確かに、花札とかポーカーにはユーザー専用ルールがあり、私も最初は訳分からず怒られました。
ですからロビー等で聞くしかないみたいです。

一応私が知る限りのルールです。
「はふだい」:はふ→ハーフ、だい→ダイ
       「ハーフ」か「ダイ」だけでゲームをします。
「さいはふ」:さい→最初、はふ→ハーフ
       ゲームの最初はハーフのみでゲームをします。
「自由」  :ダブルでもダイでも完全自由です。

ついうっかりこのルール以外の掛け金をしてしまった場合は、即座に皆さんに丁重に謝れば罵倒されながらも、許してもらえます。(私の経験談)
私はハンゲでは「shiros」です。よろしくm(._.)m

Q配列作成時の配列の内容

ご存知の方、教えていただけますか?
dim dimension(4,4) as Boolean
で作成した場合、作成直後の値は、期待通り全て Falesでした。
この値は保障された値なのでしょうか?
たまには True が入ってしまうことが有るのでしょうか?
スミマセン。よろしくお願いします。

Aベストアンサー

VBは必ずメモリをゼロクリアしてくれますので
繰り返し使うようなものでない限りは
明示的に初期値を代入しなくてもいいです。

Qトランプのポーカーのルールについて

ポーカーのルールで 質問です。 ワンペアで 引き分けになったとき、 残りの カードに 強いカードが あるほうが 勝ちでいいですか?

たとえば。 2.2.A.3.4.   と。 2.2.K.Q.J のばあい。
 Aが あるから、2.2.A.3.4. が 勝ちでいいでしょうか?

Aベストアンサー

回答します。

それで合っていますよ。

QVBのコントロール配列を二次元配列にする方法

タイトル通りです。
テキストボックスなどをコントロール配列で持つときに二次元配列で持つ方法はないでしょうか?

ご回答の方、宜しくお願いします。

Aベストアンサー

コントロールのIndexプロパティを利用する方法では二次元配列はできません。
しかし、変数としての二次元配列ならできます。

Dim TextBoxes(3, 10) As TextBox

などとすると、テキストボックスの多次元配列ができます。
ただし、この変数にはインスタンスがないので、インスタンスは別に作成してやる必要があります。

以下に例を示します。

名前がTexts、Indexが0のTextBoxを配置します。
フォームモジュールに以下を貼り付けます。

Option Explicit

Private TextBoxes(3, 10) As TextBox

Private Sub Form_Load()

On Error Resume Next
Dim N As Long, M As Long, T As Long

For N = 0 To 2

For M = 0 To 9

T = N * 10 + M
Load Texts(T) 'Load Texts(0)はエラーだが無視される
Set TextBoxes(N, M) = Texts(T)
TextBoxes(N, M).Left = N * 1320
TextBoxes(N, M).Top = M * 300
TextBoxes(N, M).Visible = True

Next M

Next N

End Sub

Private Sub Texts_Click(Index As Integer)

MsgBox "これは(" & (Index \ 10) & ", " & (Index Mod 10) & ")です"

End Sub

この方法を使う場合、TextBoxes(N, M)のIndexプロパティはN * 10 + Mを示すので、注意が必要です。

コントロールのIndexプロパティを利用する方法では二次元配列はできません。
しかし、変数としての二次元配列ならできます。

Dim TextBoxes(3, 10) As TextBox

などとすると、テキストボックスの多次元配列ができます。
ただし、この変数にはインスタンスがないので、インスタンスは別に作成してやる必要があります。

以下に例を示します。

名前がTexts、Indexが0のTextBoxを配置します。
フォームモジュールに以下を貼り付けます。

Option Explicit

Private TextBoxes(3, 10) As TextBox

...続きを読む

Qポーカーのやり方

ポーカーってどういうルールですか?友人に聞いてもあいまいだったんで詳しく知りたいです。
基本的なこと、反則、強くなるには、など、教えてください。

Aベストアンサー

ポーカーはまず「役」を覚えないとなりません(下記参照)。

http://jup.jp/howto/

基本的には、5枚の手持ちのカードを、いらないものを捨て、山札からその分補充して取り替えながらより強い「役」を作って勝負します。

http://toranpu.wiki.fc2.com/wiki/%E3%83%9D%E3%83%BC%E3%82%AB%E3%83%BC

公式ルールは私もよく分かりませんが、遊んでいる人たちの中で共通のルールになっていれば問題ないので、例えばうちは「取り替える回数は三回まで(三回未満で役がそろえば、パス)」とか、ジョーカーを入れて(普通はジョーカーは除く52枚でするらしいです)オールマイティーカードとして使い、役を作りやすくしたりして遊んでいます。

ジョーカー入りで出来た役が、無しで出来た役と被った場合は、数字が小さくても無しの勝ち、という細かいところまで我が家ルールにはあります(笑)。

QVB6.0でコントロール配列の配列順序を変更したい

掲題の件ですが、たとえばオプションボタンでコントロール配列にしたとき
option(0)、option(1)、…
と追加された順番に従って設定されますが、
option(0)→option(2)
などにコードや設定で後から変更することは可能なのでしょうか?

どのようにすれば変更できるでしょうか。
よろしくお願い致します。

Aベストアンサー

コントロールのプロパティのindexの数値を変えることで変更できます。
ただし、すでに使用済みの番号に変える時は、一度使用されていない番号に変更する必要があります。

下記は一例
option(0)→をoption(2)に変えたい場合、先にoption(2)を現在使用されていない番号に変更する。
option(2)のプロパティ→indexの数値を適当に使用されていない番号に変更する。
それから、option(0)のプロパティ→indexの数値を2に変更する。

これで変更することができると思いますが、どうでしょう?


人気Q&Aランキング

おすすめ情報