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

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

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

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

1255閲覧

スロット(絵柄合わせ)をある確率で揃うようにしたいです。

NULE

総合スコア12

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/03/28 12:04

編集2019/04/01 03:16

前提・実現したいこと

初めまして、プログラミング初心者です。
現在、「HTML」,「CSS」,「jQuery」のみでスロット(横に3列並んだもの=横回転のもの)を作成しています。
【現状】
・スタートボタンを押すと上から順に絵柄(各5つ)が回転が始まる。
・ストップボタンを押すと画像が上から順に止まる。
・閉じるボタンでウィンドウが閉じる。
というように、1連の流れはできました。

【実現したいこと】
★ 確率に応じて以下のとおりに絵柄が揃う(3つのパーツが合わさったときに1つの絵になる)ようにしたいです。
(30%の確率で絵柄A、10%=B、6%=C、3%=D、1%=E)

★ リーチのときとそうでないときで、最後のリールが止まる時間を調整したいです。

【追記・・・2019/4/1】
★ jQueryの改訂したコードで動くのですが、「回転するスピード」と「最後のリールが止まる時間」を変更しても変化しません。エラーは出ません。

ご教授よろしくお願いいたします。

HTML

1 <div id="box"> 2 <div id="board"><div id="msg"></div></div> 3 4 <div id="reel"> 5 6 <div id="reel1"> 7 <img src="img/0.png"> 8 <img src="img/3.png"> 9 <img src="img/6.png"> 10 <img src="img/9.png"> 11 <img src="img/12.png"> 12 </div> 13 14 <div id="reel2"> 15 <img src="img/1.png"> 16 <img src="img/4.png"> 17 <img src="img/7.png"> 18 <img src="img/10.png"> 19 <img src="img/13.png"> 20 </div> 21 22 <div id="reel3"> 23 <img src="img/2.png"> 24 <img src="img/5.png"> 25 <img src="img/8.png"> 26 <img src="img/11.png"> 27 <img src="img/14.png"> 28 </div> 29 30 </div> 31 32 <button id="btn"><div id=txt>START</div></button> 33 34 </div>

jQuery

1***改正前*** 2 3<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 4<script type="text/javascript" src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script> 5<script type="text/javascript" src="slick/slick.min.js"></script> 6<script> 7$(function(){ 8//メッセージを点滅させる処理 9setInterval(function(){ 10$("#msg").fadeOut(1000,function(){ 11$(this).fadeIn(800) 12});5000; 13}); 14 15var num=0; 16$("#btn").on("click", function(){ 17$(this).data("click", ++num); 18var click=$(this).data("click"); 19if(click===1){ 20//スタートボタンを押した時の処理 21$("#txt").fadeOut(300); 22$("#btn").width("131.67px") .height('42px'); 23$("#msg").html(''); 24$("#msg").css("color", '#006'); 25$("#btn").prop("disabled", true); 26 27//リール1の回転処理 28$("#reel1").slick({ 29autoplay:true, 30autoplaySpeed:0, 31slidesToShow:1, 32initialSlide:0, 33arrows:false, 34speed:105, 35infinite:true, 36cssEase:"linear", 37pauseOnFocus:false, 38pauseOnHover:false, 39}); 40 41//リール2の回転処理 42setTimeout(function(){ 43$("#reel2").slick({ 44autoplay:true, 45autoplaySpeed:0, 46slidesToShow:1, 47initialSlide:0, 48arrows:false, 49speed:85, 50infinite:true, 51cssEase:"linear", 52pauseOnFocus:false, 53pauseOnHover:false, 54}); 55}, 800), 56 57//リール3の回転処理 58setTimeout(function(){ 59$("#reel3").slick({ 60autoplay:true, 61autoplaySpeed:0, 62slidesToShow:1, 63initialSlide:0, 64arrows:false, 65speed:90, 66infinite:true, 67cssEase:"linear", 68rtl:false, 69pauseOnFocus:false, 70pauseOnHover:false, 71}); 72}, 2000), 73 74//ボタンの有効化 75setTimeout(function(){ 76$("#btn").prop("disabled", false); 77$("#txt").html('STOP'); 78$("#txt").fadeIn(300); 79}, 2300) 80 81 82}if(click===2){ 83//ストップボタンを押した時の処理 84$("#txt").html('CLOSE'); 85$("#btn").prop("disabled", true); 86$("#btn").width("131.67px") .height('42px'); 87 88//リール1の処理 89$("#reel1").slick("slickPause"); 90 91//リール2の処理 92setTimeout(function(){ 93$("#reel2").slick("slickPause"); 94}, 1000), 95 96//リール3の処理 97setTimeout(function(){ 98$("#reel3").slick("slickPause"); 99}, 2000), 100 101//ボタンの有効化 102setTimeout(function(){ 103$("#btn").prop("disabled", false); 104}, 2000) 105 106}if(click===3){ 107window.close(); 108} 109}); 110 111}); 112 113</script>

jQuery

1***改正版(2019/4/ 1)*** 2 3<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 4<script type="text/javascript" src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script> 5<script type="text/javascript" src="slick/slick.min.js"></script> 6<script> 7$(function(){ 8//メッセージを点滅させる処理 9 setInterval(function(){ 10 $("#msg").fadeOut(1000,function(){ 11 $(this).fadeIn(800) 12 });5000; 13 }); 14 var Reel=document.getElementById("#reel"); 15 //画像の配列 16 var img=["img/0.pmg", "img/3.pmg", "img/6.pmg", "img/9.pmg", "img/12.pmg", 17 "img/1.pmg", "img/4.pmg", "img/7.pmg", "img/10.pmg", "img/13.pmg", 18 "img/2.pmg", "img/5.pmg", "img/8.pmg", "img/11.pmg", "img/14.pmg"]; 19 20 //当たりとなる変数 21 var set1=img[0, 1, 2]; 22 var set2=img[3, 4, 5]; 23 var set3=img[6, 7, 8]; 24 var set4=img[9, 10, 11]; 25 var set5=img[12, 13, 14]; 26 27 //リーチのときの変数(3番目のリールが止まる時間を延ばすため) 28 var closeset=img[ 29 [0, 1, 5], [0, 1, 8], [0, 1, 11], [0, 1, 14], 30 [3, 4, 2], [3, 4, 8], [3, 4, 11], [3, 4, 14], 31 [6, 7, 2], [6, 7, 5], [6, 7, 11], [6, 7, 14], 32 [9, 10, 2], [9, 10, 5], [9, 10, 8], [9, 10, 14], 33 [12, 13, 2], [12, 13, 5], [12, 13, 8], [12, 13, 11] 34 ]; 35 //ハズレの変数(3番目のリールが止まる時間を早くするため) 36 var noset=img[ 37 [0, 4, 2], [0, 4, 5], [0, 4, 8], [0, 4, 11], [0, 4, 14], 38 [0, 7, 2], [0, 7, 5], [0, 7, 8], [0, 7, 11], [0, 7, 14], 39 [0, 10, 2], [0, 10, 5], [0, 10, 8], [0, 10, 11], [0, 10, 14], 40 [0, 13, 2], [0, 13, 5], [0, 13, 8], [0, 13, 11], [0, 13, 14], 41 [3, 1, 2], [3, 1, 5], [3, 1, 8], [3, 1, 11], [3, 1, 14], 42 [3, 7, 2], [3, 7, 5], [3, 7, 8], [3, 7, 11], [3, 7, 14], 43 [3, 10, 2], [3, 10, 5], [3, 10, 8], [3, 10, 11], [3, 10, 14], 44 [3, 13, 2], [3, 13, 5], [3, 13, 8], [3, 13, 11], [3, 13, 14], 45 [6, 1, 2], [6, 1, 5], [6, 1, 8], [6, 1, 11], [6, 1, 14], 46 [6, 4, 2], [6, 4, 5], [6, 4, 8], [6, 4, 11], [6, 4, 14], 47 [6, 10, 2], [6, 10, 5], [6, 10, 8], [6, 10, 11], [6, 10, 14], 48 [6, 13, 2], [6, 13, 5], [6, 13, 8], [6, 13, 11], [6, 13, 14], 49 [9, 1, 2], [9, 1, 5], [9, 1, 8], [9, 1, 11], [9, 1, 14], 50 [9, 4, 2], [9, 4, 5], [9, 4, 8], [9, 4, 11], [9, 4, 14], 51 [9, 7, 2], [9, 7, 5], [9, 7, 8], [9, 7, 11], [9, 7, 14], 52 [9, 13, 2], [9, 13, 5], [9, 13, 8], [9, 13, 11], [9, 13, 14], 53 [12, 1, 2], [12, 1, 5], [12, 1, 8], [12, 1, 11], [12, 1, 14], 54 [12, 4, 2], [12, 4, 5], [12, 4, 8], [12, 4, 11], [12, 4, 14], 55 [12, 7, 2], [12, 7, 5], [12, 7, 8], [12, 7, 11], [12, 7, 14], 56 [12, 10, 2], [12, 10, 5], [12, 10, 8], [12, 10, 11], [12, 10, 14] 57 ]; 58 //出現確率 59 var chance=Math.floor(Math.random()*(set1+set2+set3+set4+set5 60 +closeset+noset).length); 61 if(chance===0){ 62 $("#reel").attr('src', set5); 63 }else if(chance>=1&&chance<=2) { 64 $("#reel").attr('src', set4); 65 }else if(chance>=3&&chance<=8) { 66 $("#reel").attr('src', set3); 67 }else if(chance>=9&&chance<=18) { 68 $("#reel").attr('src', set2); 69 }else if(chance>=19&&chance<=38) { 70 $("#reel").attr('src', set1); 71 }else{ 72 $("#reel").attr('src', closeset && noset); 73 } 74 75 //リール3がストップする時の変数 76 var reachimg=img[ 77 [0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11], [12, 13, 14], 78 [0, 1, 5], [0, 1, 8], [0, 1, 11], [0, 1, 14], 79 [3, 4, 2], [3, 4, 8], [3, 4, 11], [3, 4, 14], 80 [6, 7, 2], [6, 7, 5], [6, 7, 11], [6, 7, 14], 81 [9, 10, 2], [9, 10, 5], [9, 10, 8], [9, 10, 14], 82 [12, 13, 2], [12, 13, 5], [12, 13, 8], [12, 13, 11] 83 ]; 84 85var num=0; 86 $("#btn").on("click", function(){ 87 $(this).data("click", ++num); 88 var click=$(this).data("click"); 89if(click===1){ 90 //スタートボタンを押した時の処理 91 $("#txt").fadeOut(300); 92 $("#btn").width("131.67px") .height('42px'); 93 $("#msg").css("color", '#006'); 94 $("#btn").prop("disabled", true); 95 96 //リール1の回転処理 97 $("#reel1").slick({ 98 autoplay:true, 99 autoplaySpeed:0, 100 slidesToShow:1, 101 initialSlide:0, 102 arrows:false, 103 speed:60, 104 infinite:true, 105 cssEase:"linear", 106 pauseOnFocus:false, 107 pauseOnHover:false, 108 }); 109 110 //リール2の回転処理 111 setTimeout(function(){ 112 $("#reel2").slick({ 113 autoplay:true, 114 autoplaySpeed:0, 115 slidesToShow:1, 116 initialSlide:0, 117 arrows:false, 118 speed:65, 119 infinite:true, 120 cssEase:"linear", 121 pauseOnFocus:false, 122 pauseOnHover:false, 123 }); 124 }, 800), 125 126 //リール3の回転処理 127 setTimeout(function(){ 128 $("#reel3").slick({ 129 autoplay:true, 130 autoplaySpeed:0, 131 slidesToShow:1, 132 initialSlide:0, 133 arrows:false, 134 speed:55, 135 infinite:true, 136 cssEase:"linear", 137 rtl:false, 138 pauseOnFocus:false, 139 pauseOnHover:false, 140 }); 141 }, 2000), 142 143 //ボタンの有効化 144 setTimeout(function(){ 145 $("#btn").prop("disabled", false); 146 $("#txt").html('STOP'); 147 $("#txt").fadeIn(300); 148 $("#msg").html('STOPを押してね!'); 149 }, 2300) 150 151 152}if(click===2){ 153 //ストップボタンを押した時の処理 154 $("#txt").html('CLOSE'); 155 $("#btn").prop("disabled", true); 156 $("#btn").width("131.67px") .height('42px'); 157 158 //リール1の処理 159 $("#reel1").slick("slickPause"); 160 161 //リール2の処理 162 setTimeout(function(){ 163 $("#reel2").slick("slickPause"); 164 }, 1000), 165 166 //リール3の処理 167 //要素に応じて最後のリールが止まる時間をずらす処理 168 $("#reel").each(function(){ 169 if(reachimg===0 && reachimg<25){ 170 setTimeout(function(){ 171 $("#reel3").slick("slickPause"); 172 }, 5000); 173 }else{ 174 setTimeout(function(){ 175 $("#reel3").slick("slickPause"); 176 }, 2000); 177 } 178 }); 179 //ボタンの有効化 180 setTimeout(function(){ 181 $("#btn").prop("disabled", false); 182 $("#msg").html('CLOSEを押してね!'); 183 }, 2000) 184 185}if(click===3){ 186 window.close(); 187 } 188}); 189 190}); 191 192</script> 193

試したこと

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

guest

回答1

0

簡単に考えるのであれば、役と画像のセットを先に定義するのがいいと思います。

A=画像0,1,2
B=画像3,4,5
C=画像6,7,8
D=画像9,10,11
E=画像12,13,14

ハズレも同様にセットしておくと作り易そうです。

F0=画像0,1,5
F1=画像3,1,8
等々。

アタリとハズレ(A~Fn)の確率が合計100%になるようにして、STARTボタンを押したときに抽選し、
表示するタイミングで、そのセットの画像を表示します。

ただしJavaScriptであればだれでもソースを見ることができ、抽選の仕組みがバレますので
ご注意ください。
抽選の仕組みを隠したい場合は、サーバ(PHP等)で抽選するようにしてAjaxで抽選結果を取得する
のがいいと思います。

投稿2019/03/28 23:58

tabuu

総合スコア2449

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

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

NULE

2019/03/31 16:59 編集

ご回答いただきありがとうございました。 PHPやAjaxについては無知なため、まずはアドバイスいただいたことをjQuery上で下記のように作成してみました。 ちなみに『if (reachimg===0; reachimg<25;){』のがエラーになっていますが、原因がわかりません。 ご教授お願いいたします。
tabuu

2019/03/31 02:44

reachimg===0、かつ、reachimg<25 であれば if (reachimg===0 && reachimg<25){ ですかね。 コメント欄にソースコード書いてもインデント反映されないので、 質問本文を編集して書いていただくほうが分かり易いのでおすすめです。
NULE

2019/04/01 03:26

ありがとうございます。 コードを直したところ、エラーが表示されなくなりました。 ですが、条件に応じて最後のリールが止まる時間を変更しても、「if」の条件が反映されず、全て「else」の条件になってしまいます。また、リールの回転するスピード(slick.js内)も数字を変えても変化せず、 エラーが出ないため原因がわかりません。 アドバイスよろしくお願いいたします。
tabuu

2019/04/01 06:48

JavaScriptは苦手なのであまりアドバイスできませんが、 >if (reachimg===0 && reachimg<25){ これだと0かつ25より小さいなので、0の場合しか真にならないですね。 想定する条件で書き直してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問