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

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

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

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

Q&A

1回答

476閲覧

jsを使って簡単なゲームを作成しています。

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2018/09/28 21:47

前提・実現したいこと

jsで簡単なゲームを作っています。
ゲーム開始ボタンをクリックすると、joker以外の52枚からランダムで画像が5枚表示されます。
ランダムで5枚表示された画像の役を表示させたいのですが、上手く条件分岐ができていないせいか、
フラッシュのみしか出ません。
どなたか回答お願い致します。
ソースコードも載せていただけるとありがたいです。

該当のソースコード

js

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="utf-8"> 5<title>練習</title> 6</head> 7<body> 8 <p id="charName">役名</p> 9 10 11 12 <img id="parentCard1" src="image/parent.jpg" width="100"> 13 <img id="parentCard2" src="image/parent.jpg" width="100"> 14 <img id="parentCard3" src="image/parent.jpg" width="100"> 15 <img id="parentCard4" src="image/parent.jpg" width="100"> 16 <img id="parentCard5" src="image/parent.jpg" width="100"> 17 18 <input type="button" value="ゲーム開始" onclick="start()"> 19<script> 20function start(){ 21 //ランダムで5枚画像表示 22 parentCard=[]; 23 var parentArray=["image/c01.jpg","image/c02.jpg", 24 "image/c03.jpg","image/c04.jpg","image/c05.jpg", 25 "image/c06.jpg","image/c07.jpg","image/c08.jpg", 26 "image/c09.jpg","image/c10.jpg","image/c11.jpg", 27 "image/c12.jpg","image/c13.jpg","image/d01.jpg", 28 "image/d02.jpg","image/d03.jpg","image/d04.jpg", 29 "image/d05.jpg","image/d06.jpg","image/d07.jpg", 30 "image/d08.jpg","image/d09.jpg","image/d10.jpg", 31 "image/d11.jpg","image/d12.jpg","image/d13.jpg", 32 "image/h01.jpg","image/h02.jpg","image/h03.jpg", 33 "image/h04.jpg","image/h05.jpg","image/h06.jpg", 34 "image/h07.jpg","image/h08.jpg","image/h09.jpg", 35 "image/h10.jpg","image/h11.jpg","image/h12.jpg", 36 "image/h13.jpg","image/s01.jpg","image/s02.jpg", 37 "image/s03.jpg","image/s04.jpg","image/s05.jpg", 38 "image/s06.jpg","image/s07.jpg","image/s08.jpg", 39 "image/s09.jpg","image/s10.jpg","image/s11.jpg", 40 "image/s12.jpg","image/s13.jpg",]; 41for(var i=0;i<5;i++){ 42parentCard[i]=parentArray.splice(Math.floor(Math.random()*parentArray.length),1); 43document.getElementById("parentCard"+(i+1)).src=parentCard[i]; 44} 45 46var suit=["heart","dia","club","spade"]; 47 48 //昇順ソート 49 parentCard.sort(function(a, b) { 50 if (a.num < b.num) return -1; 51 if (a.num > b.num) return 1; 52 return 0; 53 }); 54 //役判定 55 if ((parentCard[0].suit === parentCard[1].suit) && (parentCard[1].suit === parentCard[2].suit) && (parentCard[2].suit === parentCard[3].suit) && (parentCard[3].suit === parentCard[4].suit)) { 56 if (parentCard[0].num === 10) { 57 document.getElementById("charName").innerHTML = "ロイヤルストレートフラッシュ"; 58 } else if ((parentCard[4].num - parentCard[0].num) === 4) { 59 document.getElementById("charName").innerHTML = "ストレートフラッシュ"; 60 } else { 61 document.getElementById("charName").innerHTML = "フラッシュ"; 62 } 63 }else if ((parentCard[0].num === parentCard[3].num) || (parentCard[1].num === parentCard[4].num)) { 64 document.getElementById("charName").innerHTML = "フォーカード"; 65 66 } else if (((parentCard[0].num === parentCard[2].num) && (parentCard[3].num === parentCard[4].num)) || ((parentCard[0].num === parentCard[1].num) && (parentCard[2].num === parentCard[4].num))) { 67 document.getElementById("charName").innerHTML = "フルハウス"; 68 69 } else if ((parentCard[4].num - parentCard[3].num === 1) && (parentCard[3].num - parentCard[2].num === 1) && (parentCard[2].num - parentCard[1].num === 1) && (parentCard[1].num - parentCard[0].num === 1)) { 70 document.getElementById("charName").innerHTML = "ストレート"; 71 } else if ((parentCard[0].num == parentCard[2].num) || (parentCard[1].num === parentCard[3].num) || (parentCard[2].num === parentCard[4].num)) { 72 document.getElementById("charName").innerHTML = "スリーカード"; 73 } else if (((parentCard[0].num == parentCard[1].num) && (parentCard[2].num === parentCard[3].num)) || ((parentCard[1].num === parentCard[2].num) && (parentCard[3].num === parentCard[4].num)) || 74 ((parentCard[0].num === parentCard[1].num) && (parentCard[4].num == parentCard[5].num))) { 75 document.getElementById("charName").innerHTML = "ツーペア"; 76 } else if ((parentCard[0].num == parentCard[1].num) || (parentCard[1].num === parentCard[2].num) || (parentCard[2].num === parentCard[3].num) || (parentCard[3].num === parentCard[4].num)) { 77 document.getElementById("charName").innerHTML = "ワンペア"; 78 }else{ 79 document.getElementById("charName").innerHTML = "ハイカード"; 80 } 81} 82 83 84 85</script> 86</body> 87</html> 88 89

試したこと

ここに問題に対して試したことを記載してください。

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

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

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

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

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

Takumiboo

2018/09/29 02:17 編集

「フラッシュ」という表示しかしないという意味なのか、実際のカードの画像がフラッシュの役しか出ないのか、どちらでしょうか。(おそらく前者だとは思いますが)
退会済みユーザー

退会済みユーザー

2018/09/28 22:54

役の判定がフラッシュしか表示されないということです!後者になります。わかりにくくてすいません。
m.ts10806

2018/09/28 23:49 編集

質問は編集できますので要件部分は適宜編集して追記してください。1つ後の質問でも指摘しましたが、タイトル部分もご対応願います。
Takumiboo

2018/09/29 02:16

どうでもいいんですけど「役の判定がフラッシュしか表示されない」なら前者ですよね
退会済みユーザー

退会済みユーザー

2018/09/29 02:18

前者でした!申し訳ありません。。
guest

回答1

0

parentCard[0].suitparentCard[0].numのようにスートや番号を取得しようとしていることはわかりましたが、そもそもそれらを設定しているところがありません。
for文の中でparentCard[i]にカード画像のパスを詰め込んでいますが、そのカードのスートや番号も一緒に入れてあげる必要があるのでは。

そもそもparentArrayの定義の時点で、

js

1var parentArray = [ 2 {suit: 'club', num: 1, img: 'image/c01.jpg'}, 3 {suit: }, 4 ... 5]

といったような定義にしてしまった方が扱いやすいと思います。

投稿2018/09/28 22:22

spookybird

総合スコア1803

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

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

退会済みユーザー

退会済みユーザー

2018/09/29 00:44

回答ありがとうございます。 試してみたのですが画像が表示されなくなってしまいます。
Takumiboo

2018/09/29 02:18

もし回答の部分そのままにしたなら当たり前でしょう。「document.getElementById("parentCard"+(i+1)).src=parentCard[i];」の部分も合わせて変更する必要があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問