質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

765閲覧

作成したいゲームの考え方を教えていただきたいです。

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2021/05/03 07:52

前提・実現したいこと

JavaScriptでポーカーゲームを作成したいです。

前提として、
ジョーカーなし

カード交換なし。
ボタンを押すと自分と相手に5枚ずつ配られ、そのカードの成立役のみで判定。

知りたいことは、役の判定方法です。
とっかかりすら掴めず、考え方がわからないので実装するための方法、考え方を教えていただきたいです。

現状、ボタンをクリックしたら双方に5枚ずつのカードが配られるところまでは書けたのでそのコードを下に記載します。

画像パスの配列の中身は
フォルダ名/cl8.png
フォルダ名/he2.png
のように計52個入っています。

該当のソースコード

<ul id="oya_img"> <li><img src="" class="display_card" id="img1"></li> <li><img src="" class="display_card" id="img2"></li> <li><img src="" class="display_card" id="img3"></li> <li><img src="" class="display_card" id="img4"></li> <li><img src="" class="display_card" id="img5"></li> </ul> <div id="div_btn"><input type="button" id="btn" value="スタート"></div> <ul id="child_img"> <li><img src="" class="display_card" id="img6"></li> <li><img src="" class="display_card" id="img7"></li> <li><img src="" class="display_card" id="img8"></li> <li><img src="" class="display_card" id="img9"></li> <li><img src="" class="display_card" id="img10"></li> </ul> var btn = document.getElementById('btn'); const img_array = ['画像パス1','画像パス2'...,'画像パス52'] var img1 = document.getElementById('img1'); var img2 = document.getElementById('img2'); var img3 = document.getElementById('img3'); var img4 = document.getElementById('img4'); var img5 = document.getElementById('img5'); var img6 = document.getElementById('img6'); var img7 = document.getElementById('img7'); var img8 = document.getElementById('img8'); var img9 = document.getElementById('img9'); var img10 = document.getElementById('img10'); btn.addEventListener('click',function(){ var length = 10; var min = 0, max = 51; var tramp_array = []; function intRandom(min, max){ return Math.floor( Math.random() * (max - min + 1)) + min; } //配列にインデックス0〜51を格納、重複なし for(var i = min; i < length; i++){ while(true){ var tmp = intRandom(min, max); if(!tramp_array.includes(tmp)){ tramp_array.push(tmp); break; } } } // 後で考える。これはエラーになる、 できればループで2人に5枚ずつ表示させたい // for(var k = 1; k <= length; k++){ // ('img' + k).src = img_array[tramp_array[k]]; // } // ループなし img1.src = img_array[tramp_array[0]]; img2.src = img_array[tramp_array[1]]; img3.src = img_array[tramp_array[2]]; img4.src = img_array[tramp_array[3]]; img5.src = img_array[tramp_array[4]]; img6.src = img_array[tramp_array[5]]; img7.src = img_array[tramp_array[6]]; img8.src = img_array[tramp_array[7]]; img9.src = img_array[tramp_array[8]]; img10.src = img_array[tramp_array[9]]; }, false);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/05/03 09:05

このコードをもってどのようなアドバイスを得たいのか具体的に書かれたほうが良いかと思います。
guest

回答1

0

ベストアンサー

プログラム全般に通じるアドバイスですが、まずは「できるだけシンプルなもの」から実装してみましょう。ふつうのポーカーであれば、まずは「ワンペア」あるいは「フラッシュ」あたりから、どうすればいいか考えていってみましょう。

そして、複数の判定を組み合わせる場合は、高いものからやっていったほうがいいです。スリーカードの2枚だけ取り出せばワンペアになっていますが、先にスリーカードの判定をすれば、ワンペアの時にスリーカードを気にする必要がなくなります。

投稿2021/05/03 08:04

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/03 09:34

ありがとうございます。 考えてみます。
退会済みユーザー

退会済みユーザー

2021/05/04 08:59

こんにちは。 無事に解決いたしました。 自己解決にするとベストアンサーにできないので、いつか誰かの役に立つ可能性を考慮してこちらに解決した方法の考え方を載せておきます。 1、img配列とは別に数値で配列を作る(元から画像を使わないならこの配列だけでいい) [101,102,103...201,202,203...301,302,303...412,413] 2、私が上に載せたコードで行ったことを、1で作った数値の配列で行う(ここまでで親と子の手札が5枚ずつ、数値で取得できる) 3、スートと番号(2からエースまで)を格納する配列を作る 4、ループさせてそれぞれの手札を「3」で作った配列に格納(手札の数字を100で割るとスートが取得でき、手札の数字を100で割った余りを求めると番号が取得できる) ここまでで、5枚の内訳が仮に スペード、スペード、ハート、ダイヤ、クラブ だった場合に、 [2(スペード),1(ハート),1(ダイヤ),1(クラブ)] のような配列が出来上がる 5、格納した3の配列を使って条件分岐 細かくは書いていませんが、考え方はこんな感じで解決しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問