問題タブ [playing-cards]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
139 参照

c - C:ポインタを使用する場合、メモリはどのように割り当てられますか?

私はちょうどDeitelからのこの例を見ていました:

char *charへのポインタがあるようですが、 ...を使用して文字列を保存できるとは思っていませんでした。

問題は、メモリはここでどのように処理されるかということです。なぜなら、のようなものは見当たらなかったからですchar word[50]

0 投票する
4 に答える
407 参照

java - 私の方法は効果的に機能していますか?

カードのデッキをシャッフルするカードのデッキのコードを書いています。私はコードをテストしましたが、それが実際に正しく実行されているはずのことを実行しているかどうかは本当にわかりませんか?どう思いますか?

これは、シャッフルメソッドのコードです。

私の出力はその数がシャッフルされているように見えますが、スペードのハートなどのカードの名前ではありません、

たとえば、これはコードをテストしたときの出力です。

いつも繰り返される名前があるように。シャッフルのポイントはそれを混ぜることなので間違っていますか?

これが実際の質問です。カードをプレイするときは、もちろん、デッキをシャッフルすること、つまり、カードがランダムな順序で配られるように物事を配置することが重要です。これを達成する方法はいくつかあります。1つの戦略は、デッキからランダムにカードを繰り返し選び、それを最後に移動することです。次のコードは、Randomクラス(オンラインコースの「ArrayLists」セクションの8ページで会った)を使用して、そのような「選択して最後に移動」操作を実行します。

デッキを効果的にシャッフルするには、この操作を何度も(たとえば500回)繰り返す必要があります。単一のRandomオブジェクトとforループを使用してmyDeckをシャッフルするDeckクラスの新しいインスタンスメソッドshuffleを作成します。mainメソッドを適切に変更した後、それを使用して新しいコードをテストします。

だから私の主な質問は:私はこれを間違っているのですか?

0 投票する
1 に答える
786 参照

prolog - Sicstus Prolog: Deck of Cards クエリ

私はこの質問に取り組んでいます:

ブリッジの 4 人用ゲームでは、各プレイヤーは 13 枚のカードを順番に配られます。deal(Cards, H1, H2, H3, H4)最初の引数としてデッキを取り、H1ディールでプレイヤー 1 が受け取った 13 枚のカードにバインドすることで成功する述語を記述します。

deal1ヒント: 1 つの戦略は、プレイヤー 1 にdeal2対処する、プレイヤー 2 に対処するなどの 4 つのヘルパー述語を記述することです。

与えられたコードは次のとおりです。

これが私の答えです:

私の答えは正しいとほぼ確信していますが、クエリに問題があります。

クエリは戻ってきますが、動作failする代わりに実際のカードのリストを入れdeckます。リストではないデッキを挿入しようとしているところに問題があると思いますが、 でリストに入る方法がわかりませんdeck。私は Prolog を初めて使用するので、単純な修正に過ぎないことを願っています。ありがとう

編集:

以下の提案を追加した後。私の新しい答えは

0 投票する
1 に答える
1602 参照

algorithm - カードを一連のルールに一致させるアルゴリズム

私は頭を包むことができないように見える独特の問題に遭遇しました。すぐに始めます。

問題は、一連のカードを一連のルールに一致させることです。

一連のルールを文字列として定義することができます。のコンマ区切りのタプルで構成されます<suit>:<value>。たとえばH:4, S:1、ハートの 4 つとスペードのエースに一致する必要があります。ワイルドカードを使用することもできます。たとえば、*:*任意のカードにD:*一致し、ダイヤのスーツの任意のカードに一致*:2し、任意のスーツの 2 に一致します。ルールはカンマで組み合わせることができます: *:*,*:*,H:42 枚のランダムなカードとハートの 4 を保持している場合、カードのセットに一致します。

ここまでは順調ですね。このためのパーサーは、簡単に書くことができます。ここがトリッキーな部分です。

これらのルールを簡単に構成できるようにするために、スーツと値に対してさらに 2 つの構文を使用できます。これらは<(スーツと値に対して有効) および+n(値に対してのみ有効) であり、n は数字です。<は「前の試合と同じ」を+n意味し、「前の試合より n 高い」を意味します。例:

意味: 任意のカードと一致し、次に最初の一致と同じスートのカードと一致し、次に 2 番目の一致と同じ値の別のカードと一致します。このハンドは次のようにマッチします:

Hearts of Four と Hearts of Eight は同じスートであり、Eight of Hearts と Eight of Clubs は同じ値だからです。

すべてのルールが一致する限り、より多くのカードを持つことができます (したがって、C:10上記の手札に追加してもルールは一致します)。

これを解決するための私の最初のアプローチは、基本的に、一致する必要があるカードのセットを取得し、最初のルールをそれに適用しようとすることです。一致した場合は、次のルールに進み、カードのセットから一致させようとしました。すべてのルールが一致するか、一致しないルールが見つかるまで、これを繰り返しました。このアプローチには (少なくとも) 1 つの欠陥があります。上記の例を考慮*:*,<:*,*:<してください:H:8,C:8,H:4

  • 最初のルールの H:8 に一致します。Matched: H:8
  • 次に、同じスーツ (ハート) を持つものを見つけようとします。ハートの4があります。Matched: H:8, H:4
  • 次に、同じ値 (4) のカードを見つけようとしましたが、失敗しました。

上記の例のように、一連のカードの順序が結果に影響を与える方法は望んでいません。どんなルールセットでもうまく機能する優れた戦略を思いつくことができれば、カードセットを並べ替えることができます.

私はカードの枚数やルールの数について何も知らないので、ブルート フォース アプローチは実行できません。

ここまで読んでくれてありがとう、ヒントや洞察に感謝します。

0 投票する
4 に答える
1429 参照

html - HTMLの特殊文字

iOS用のhtmlページを作成しています。ここに「♠、♥、♦、および♣」を配置する必要があります。これらはカードのシンボルです。

しかし、これは通常のテキストではないため、iPhoneのテキストは通常​​とは異なるテキストとして表示されます。私のhtmlコードでこれらの記号を使用するためのhtmlコードを提案してください。

0 投票する
1 に答える
835 参照

java - Android カードゲーム Random()

java/androidでカードゲームを作っています。アイデアは単純で、ランダムなカードが選ばれて表示され、プレーヤーは次のカードが高くなるか低くなるかを選択する必要があります。私の質問は、カードが選択されるとそれ以上使用できないようにするにはどうすればよいですか?

私の計画は、配列 0-51 を作成することでした。次に、すべての可能性に対して切り替えとケースを行います。

0 投票する
1 に答える
885 参照

java - カードゲームのMVCデザイン

カードゲームを作ろうとしています。

私が持っているいくつかのクラスは次のとおりです。CardModel、CardView; DeckModel、DeckView。

デッキモデルにはカードモデルのリストがあります。MVCによると、カードをデッキに送信したい場合は、カードモデルをデッキモデルに追加でき、イベントによってカードビューがデッキビューに追加されます。ハンドラ。

したがって、DeckModelクラスにaddCard(CardModel m)がありますが、そのモデルのカードビューをデッキビューに追加するイベントを送信する場合は、モデルにビューへの参照があることだけを知っています。

したがって、問題は次のとおりです。カードモデルとデッキモデルがそれを行うためにビュークラスへの参照を持っている必要がある場合はどうでしょうか。そうでない場合、それをより良くする方法は?

コードを更新します。

0 投票する
1 に答える
1488 参照

c#-4.0 - 3人用カードゲーム

重複の可能性:
3 プレイヤー カード ゲームのターン システム

GUI 3 プレーヤー カード ゲーム (1 人の人間と 2 台のコンピューター) を作成しています。各プレイヤーは 3 枚の手札を持っています。各ラウンドにはディーラーがいて、最初にカードをプレイするのはディーラーの右側のプレイヤーです。各プレイヤーは、左のプレイヤーがプレイした後にのみプレイできます。(カードゲームの基本です)

各プレイヤーが 3 枚のカードをテーブルに置いた後。ディーラー ボタンが右側のプレイヤーに渡され、新しいラウンドが始まります。

ターンを制御する機能を実行するには、助けが必要です。これにより、誰のターンをプレイするかを確認できます。私は人間の番で、入力を待ちます。コンピュータのターンであれば、calss のアクション関数を呼び出します。

私が今持っているのは、Suit と Value を持つ Card クラスです。

カードのリストである Deck クラス (このクラスには、suffle 機能とドローカード機能があります)

カードのリストを持つ Table クラスがあります (これは、プレイヤーがカードをプレイするときにカードが移動する場所です)

私は Player クラスを持っています (同じクラスが人間とコンピュータのプレーヤー用です - これは良いですか?)

プレーヤー クラスにはハンド クラスがあります (プレーヤーの 3 枚のカードがある場所)。

Game クラスには、1 つのデッキ、1 つのテーブル、および 3 人のプレイヤーがいます。

私は、人間が最初にプレイして 1 枚のカードをテーブルに移動し、次に 2 人のコンピューター プレイヤーがそれぞれ 1 枚のカードを移動するという機能を持っています。これは、人間のプレイヤーが最初にプレイする場合にのみ機能します。各プレイヤーの 3 枚のカードがプレイされると、別のラウンドが開始されます。このラウンドでは、プレイヤーではなく、コンピューターが最初にプレイします。

これを制御する 1 つのシステムを作成する方法がわかりません。私が欲しいのはコードではなく、アイデアそのものです。

ありがとう

0 投票する
1 に答える
146 参照

c# - ループをステップスルーしない限り、ループは実行されません

ひどい文法とつづりでごめんなさいと言うことから始めましょう。

デッキを作成して52枚のカードを追加するMVC3プロジェクトがあります。次に、シャッフルメソッドでループをステップスルーしたときにのみ機能するシャッフル機能を追加しました。

私のクラスのデッキでは、52個のPlayingCardオブジェクトを保持する配列を作成します。Deckには、ビューに表示されているリストに配列をコピーするメソッドがあり、リストをシャッフルするメソッドもあります。

説明するのは簡単ではありませんが、コードをステップスルーしない限り、コードは1回しか実行されません。

デッキモデルでのシャッフル方法。

ステップスルーなしで、シャッフル後に出力します。

*4ダイヤモンド 1ハート2ハート3ハート4ハート5ハート6ハート7ハート8ハート9ハート10ハート11ハート12ハート13ハート1スペード2スペード3スペード4スペード5スペード6スペード7スペード8スペード9スペード10スペード11スペード12スペード13スペード1クラブ2クラブ3クラブ4クラブ5クラブ6クラブ7クラブ8クラブ9クラブ10クラブ11クラブ12クラブ13クラブ1ダイヤモンド2ダイヤモンド 12ダイヤモンド 3ダイヤモンド5ダイヤモンド6ダイヤモンド7ダイヤモンド8ダイヤモンド9ダイヤモンド10ダイヤモンド11ダイヤモンド13ダイヤモンド*

15回のステップスルー後の出力:

2スペード3クラブ5スペード3ダイヤモンド12ダイヤモンド13ハート11ハート1スペード6クラブ5ダイヤモンド1クラブ12ハート7クラブ13スペード2クラブ10ハート3スペード4スペード3ハート6スペード7スペード8スペード9スペード10スペード11スペード12スペード8ハート7ハート1ハート2ハート4クラブ5クラブ9ハート6ハート8クラブ9クラブ10クラブ11クラブ12クラブ13クラブ1ダイヤモンド2ダイヤモンド4ハート4ダイヤモンド5ハート6ダイヤモンド7ダイヤモンド8ダイヤモンド9ダイヤモンド10ダイヤモンド11ダイヤモンド13ダイヤモンド

ループ全体をステップスルーした後の出力:

10ハート6クラブ8ハート5ハート5クラブ7ダイヤモンド5スペード11ダイヤモンド12スペード12クラブ8ダイヤモンド5ダイヤモンド1クラブ9スペード10ダイヤモンド12ハート8スペード9クラブ13クラブ6ハート1スペード11スペード1ハート12ダイヤモンド4クラブ3クラブ8クラブ9ダイヤモンド7クラブ2クラブ3ダイヤモンド1ダイヤモンド7スペード10スペード2ハート6スペード13スペード4スペード2スペード6ダイヤモンド4ハート2ダイヤモンド4ダイヤモンド11クラブ7ハート11ハート3スペード3ハート10クラブ13ハート9ハート13ダイヤモンド

示されているように、ループは私がそれをステップスルーしたときにのみ実行されます。私はさまざまなループを試し、新しいプロジェクトを作成し、シャッフル機能をコントローラーに移動しましたが、何も役に立ちません。

誰かが私がこれをどのように解決すべきか考えていますか?

0 投票する
1 に答える
422 参照

c++ - C++ で同じカードが引かれる問題

C++ クラス用に Spades ゲームを作成しています。私はそれのほとんどを解決しました。ただし、デッキからカードを引くと、プログラム全体で同じカードになります。2枚目のカードなどをランダムなカードに戻す方法がわかりません。どんな助けでも大歓迎です。また、ほとんどのコードがおそらく適切に記述されておらず、一部の領域をより簡単に記述する方法があることもわかっていますが、特定の基準に従う必要がありました。