teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

10

追記 2018/03/13

2018/03/13 10:32

投稿

nosonosolife
nosonosolife

スコア42

title CHANGED
File without changes
body CHANGED
@@ -276,4 +276,40 @@
276
276
  }
277
277
  }
278
278
  ```
279
- これでも揃ってしまうことがあります。
279
+ これでも揃ってしまうことがあります。
280
+ 【追記 2018/03/13】
281
+ 以下のように変更してみたのですが、
282
+ ```javascript
283
+ var slipPosY = [0, 0, 0];
284
+ function slotStop(i) {
285
+ //省略
286
+ slipPosY[i] = 0;
287
+ //省略
288
+ }
289
+ function slotMove() {
290
+ //省略
291
+ for (var i = 0, stopCount = 0; i < reelNum; i++) {
292
+ if (!reelStopFlg[i] || reelposY[i] % iconHeight){
293
+ //省略
294
+ } else {
295
+ if(winFlg && winIconArray[i][(reelposY[i] / iconHeight)+stopLineArray[stopLineId][i]] != 1 ||
296
+ stopCount == reelNum-1 && !winFlg && !adjust) {
297
+ if(slipPosY[i] < (iconHeight*3)){
298
+ adjust = slotAdjust();
299
+ slipPosY[i] += iconHeight;
300
+ reelposY[i] += reelMoveSpeedY;
301
+ if (reelposY[i] > 0) reelposY[i] -= reelHeight;
302
+ $('.wrapper').eq(i).css("top", reelposY[i] + "px");
303
+ }else{
304
+ stopCount++;
305
+ }
306
+ }else{
307
+ stopCount++;
308
+ }
309
+ }
310
+ //省略
311
+ }
312
+ }
313
+
314
+ ```
315
+ これでもダメでした。

9

追記 2018/03/12

2018/03/13 10:32

投稿

nosonosolife
nosonosolife

スコア42

title CHANGED
File without changes
body CHANGED
@@ -231,4 +231,49 @@
231
231
  }
232
232
  }
233
233
  ```
234
- 時々止まってしまったり、ボタンを押したときにリールが止まらないことがあります。
234
+ 時々止まってしまったり、ボタンを押したときにリールが止まらないことがあります。
235
+ 【追記 2018/03/12】
236
+ 以下のような関数を作って、
237
+ ```javascript
238
+
239
+ function slotAdjust(reelId) {
240
+ var hitIcon = [[0, 0, 0],[0, 0, 0],[0, 0, 0]];
241
+ for (var i = 0; i < reelNum; i++) {
242
+ for (var j = 0; j < reelNum; j++) {
243
+ hitIcon[i][j] = ((-reelposY[i] / iconHeight) + j);
244
+ if (hitIcon[i][j] >= iconNum) {
245
+ hitIcon[i][j] -= iconNum;
246
+ }
247
+ }
248
+ }
249
+
250
+ for (var c = 0; c < stopLineNum; c++) {
251
+ if (iconArray[0][hitIcon[0][stopLineArray[c][0]]] == iconArray[1][hitIcon[1][stopLineArray[c][1]]] &&
252
+ iconArray[1][hitIcon[1][stopLineArray[c][1]]] == iconArray[2][hitIcon[2][stopLineArray[c][2]]]) {
253
+ return false;
254
+ }else{
255
+ return true;
256
+ }
257
+ }
258
+ }
259
+ ```
260
+ slotMove関数を以下のように変更してみたのですが、
261
+ ```javascript
262
+ //リール回転
263
+ function slotMove() {
264
+ //省略
265
+ var adjust = slotAdjust();
266
+ //省略
267
+ if (stopCount == reelNum) {
268
+ if(adjust){
269
+ $('#startbtn').css("pointer-events", "auto");
270
+ clearInterval(reelmoveAnime);
271
+ slotHits();
272
+ }else{
273
+ reelposY[i] += reelMoveSpeedY;
274
+ if (reelposY[i] > 0) reelposY[i] -= reelHeight;
275
+ $('.wrapper').eq(i).css("top", reelposY[i] + "px");
276
+ }
277
+ }
278
+ ```
279
+ これでも揃ってしまうことがあります。

8

2018/03/12 02:38

投稿

nosonosolife
nosonosolife

スコア42

title CHANGED
File without changes
body CHANGED
@@ -222,7 +222,7 @@
222
222
 
223
223
  stopLineId = Math.floor(Math.random()*stopLineArray.length);
224
224
  for (var i = 0; i < iconNum; i++) {
225
- while (iconArray[0][stopLineArray[stopLineId][i]] != iconArray[1][stopLineArray[stopLineId][i]] &&
225
+ if (iconArray[0][stopLineArray[stopLineId][i]] != iconArray[1][stopLineArray[stopLineId][i]] &&
226
226
  iconArray[1][stopLineArray[stopLineId][i]] != iconArray[2][stopLineArray[stopLineId][i]]) {
227
227
  iArray[0] = iconArray[0][stopLineArray[stopLineId][i]];
228
228
  iArray[1] = iconArray[1][stopLineArray[stopLineId][i]];

7

追記 2018/03/10

2018/03/10 12:03

投稿

nosonosolife
nosonosolife

スコア42

title CHANGED
File without changes
body CHANGED
@@ -7,116 +7,6 @@
7
7
  どうかご提示よろしくお願いいたします。
8
8
 
9
9
  【ソースコード】
10
- ```css
11
- #slotmachinebox {
12
- display: block;
13
- width: 460px;
14
- height: 390px;
15
- margin:0px auto;
16
- padding: 0;
17
- background-image: url(img/slotmainbg.png);
18
- }
19
-
20
- #slotmachinebox #reelbox {
21
- position: absolute;
22
- top: 64px;
23
- left: 30px;
24
- display: block;
25
- overflow: hidden;
26
- width: 430px;
27
- height: 194px;
28
- margin: 0;
29
- padding: 0;
30
- }
31
-
32
- #slotmachinebox #reelbox .reel {
33
- position: absolute;
34
- z-index: 1;
35
- display: block;
36
- overflow: hidden;
37
- width: 120px;
38
- height: 180px;
39
- margin-top: 5px;
40
- margin-left: 15px;
41
- padding: 0;
42
- }
43
-
44
- #slotmachinebox #reelbox .reel0{
45
- top: 0px;
46
- left: 10px;
47
- }
48
-
49
- #slotmachinebox #reelbox .reel1{
50
- top: 0px;
51
- left: 137px;
52
- }
53
-
54
- #slotmachinebox #reelbox .reel2{
55
- top: 0px;
56
- left: 274px;
57
- }
58
-
59
- #slotmachinebox #reelbox .wrapper{
60
- list-style:none outside;
61
- position: absolute;
62
- top: 0px;
63
- left: 0px;
64
- width: 120px;
65
- margin: 0;
66
- padding: 0;
67
- }
68
- #slotmachinebox #reelbox .wrapper .icon0,
69
- #slotmachinebox #reelbox .wrapper .icon1,
70
- #slotmachinebox #reelbox .wrapper .icon2,
71
- #slotmachinebox #reelbox .wrapper .icon3,
72
- #slotmachinebox #reelbox .wrapper .icon4,
73
- #slotmachinebox #reelbox .wrapper .icon5,
74
- #slotmachinebox #reelbox .wrapper .icon6,
75
- #slotmachinebox #reelbox .wrapper .icon7,
76
- #slotmachinebox #reelbox .wrapper .icon8,
77
- #slotmachinebox #reelbox .wrapper .icon9,
78
- #slotmachinebox #reelbox .wrapper .icon10,
79
- #slotmachinebox #reelbox .wrapper .icon11,
80
- #slotmachinebox #reelbox .wrapper .icon12,
81
- #slotmachinebox #reelbox .wrapper .icon13,
82
- #slotmachinebox #reelbox .wrapper .icon14 {
83
- display: block;
84
- width: 120px;
85
- height: 60px;
86
- margin: 0;
87
- padding: 0;
88
- //text-indent: -10000px;
89
- background-image: url(img/sloticons.png);
90
- }
91
-
92
- #slotmachinebox #reelbox .wrapper .icon0{
93
- background-position: 0 0px;
94
- }
95
-
96
- #slotmachinebox #reelbox .wrapper .icon1{
97
- background-position: 0 -60px;
98
- }
99
-
100
- #slotmachinebox #reelbox .wrapper .icon2{
101
- background-position: 0 -120px;
102
- }
103
-
104
- #slotmachinebox #reelbox .wrapper .icon3{
105
- background-position: 0 -180px;
106
- }
107
-
108
- #slotmachinebox #reelbox .wrapper .icon4{
109
- background-position: 0 -240px;
110
- }
111
-
112
- #slotmachinebox #reelbox .wrapper .icon5{
113
- background-position: 0 -300px;
114
- }
115
-
116
- #slotmachinebox #reelbox .wrapper .icon6{
117
- background-position: 0 -360px;
118
- }
119
- ```
120
10
  ```JavaScript
121
11
  // 定数定義
122
12
  var fps = 60; //FPS
@@ -287,29 +177,6 @@
287
177
  }
288
178
 
289
179
  ```
290
- ```html
291
- <html>
292
- <body>
293
- <div id="result"></div>
294
- <div id="slotmachinebox">
295
- <div id="reelbox">
296
- <div class="reel reel0">
297
- <ul class="wrapper">
298
- </ul>
299
- </div>
300
- <div class="reel reel1">
301
- <ul class="wrapper">
302
- </ul>
303
- </div>
304
- <div class="reel reel2">
305
- <ul class="wrapper">
306
- </ul>
307
- </div>
308
- </div>
309
- </div>
310
- </body>
311
- </html>
312
- ```
313
180
 
314
181
  もしお時間があればこちらの質問にも回答していただければ幸いです。
315
182
  [https://teratail.com/questions/114846](https://teratail.com/questions/114846)
@@ -341,4 +208,27 @@
341
208
  中央ラインだけ揃わないようにする方法は簡単ですが、これはリール配列の参照を行わないと実現できないと思うのですが、そのロジックが思いつきません。
342
209
 
343
210
  実際のコードは記載していただかなくても構いませんので、考え方のヒントやアドバイスなどを
344
- よろしくお願い致します。
211
+ よろしくお願い致します。
212
+ 【追記 2018/03/10】
213
+ この部分を
214
+ ```javascript
215
+ iArray[0] = Math.floor(Math.random()*configTable[configId].length);
216
+ iArray[1] = Math.floor(Math.random()*configTable[configId].length);
217
+ iArray[2] = Math.floor(Math.random()*configTable[configId].length);
218
+ ```
219
+ こうしてみたのですが、
220
+ ```JavaScript
221
+ var stopLineArray = [[1,1,1],[0,0,0],[2,2,2],[0,1,2],[2,1,0]]; //停止ライン配列
222
+
223
+ stopLineId = Math.floor(Math.random()*stopLineArray.length);
224
+ for (var i = 0; i < iconNum; i++) {
225
+ while (iconArray[0][stopLineArray[stopLineId][i]] != iconArray[1][stopLineArray[stopLineId][i]] &&
226
+ iconArray[1][stopLineArray[stopLineId][i]] != iconArray[2][stopLineArray[stopLineId][i]]) {
227
+ iArray[0] = iconArray[0][stopLineArray[stopLineId][i]];
228
+ iArray[1] = iconArray[1][stopLineArray[stopLineId][i]];
229
+ iArray[2] = iconArray[2][stopLineArray[stopLineId][i]];
230
+ break;
231
+ }
232
+ }
233
+ ```
234
+ 時々止まってしまったり、ボタンを押したときにリールが止まらないことがあります。

6

2018/03/10 11:19

投稿

nosonosolife
nosonosolife

スコア42

title CHANGED
File without changes
body CHANGED
File without changes

5

2018/03/09 11:13

投稿

nosonosolife
nosonosolife

スコア42

title CHANGED
File without changes
body CHANGED
@@ -338,7 +338,7 @@
338
338
 
339
339
  乱数は中央ラインにしか対応しておらず、上下ライン・左右斜めラインが予期しない形で揃ってしまうことがあるので、それを解消したいというわけです。
340
340
 
341
- これはリール配列の参照を行わないと実現できないと思うのですが、そのロジックが思いつきません。
341
+ 中央ラインだけ揃わないようにする方法は簡単ですが、これはリール配列の参照を行わないと実現できないと思うのですが、そのロジックが思いつきません。
342
342
 
343
343
  実際のコードは記載していただかなくても構いませんので、考え方のヒントやアドバイスなどを
344
344
  よろしくお願い致します。

4

2018/03/09 07:50

投稿

nosonosolife
nosonosolife

スコア42

title CHANGED
File without changes
body CHANGED
@@ -312,4 +312,33 @@
312
312
  ```
313
313
 
314
314
  もしお時間があればこちらの質問にも回答していただければ幸いです。
315
- [https://teratail.com/questions/114846](https://teratail.com/questions/114846)
315
+ [https://teratail.com/questions/114846](https://teratail.com/questions/114846)
316
+
317
+ 【追記】
318
+ ご回答された方申し訳ありません。もう少し詳細な説明をするべきでした。
319
+
320
+ このスロットは、縦3つ・左右斜め3つのラインに絵柄を揃えるルールですので、画面上はこのようになっています。
321
+ [2][4][6]
322
+ [5][8][3]
323
+ [9][7][1]
324
+ ハズレの際の絵柄を決める部分はこうなっています。
325
+ ```javascript
326
+ iArray[0] = Math.floor(Math.random()*configTable[configId].length);
327
+ iArray[1] = Math.floor(Math.random()*configTable[configId].length);
328
+ iArray[2] = Math.floor(Math.random()*configTable[configId].length);
329
+ ```
330
+ その結果出力された乱数は例えば
331
+ iArray[1,3,5]
332
+ だとすると、中央のラインは揃いませんが、画面では
333
+ [2][2][2]
334
+ [1][3][5]
335
+ [4][8][7]
336
+ と、上ラインに2の絵柄が揃ってしまいます。
337
+ ※これは例ですので、実際のリールの配列とは違います
338
+
339
+ 乱数は中央ラインにしか対応しておらず、上下ライン・左右斜めラインが予期しない形で揃ってしまうことがあるので、それを解消したいというわけです。
340
+
341
+ これはリール配列の参照を行わないと実現できないと思うのですが、そのロジックが思いつきません。
342
+
343
+ 実際のコードは記載していただかなくても構いませんので、考え方のヒントやアドバイスなどを
344
+ よろしくお願い致します。

3

2018/03/09 07:45

投稿

nosonosolife
nosonosolife

スコア42

title CHANGED
File without changes
body CHANGED
@@ -309,4 +309,7 @@
309
309
  </div>
310
310
  </body>
311
311
  </html>
312
- ```
312
+ ```
313
+
314
+ もしお時間があればこちらの質問にも回答していただければ幸いです。
315
+ [https://teratail.com/questions/114846](https://teratail.com/questions/114846)

2

2018/03/08 20:00

投稿

nosonosolife
nosonosolife

スコア42

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
  3つの回転するリールを3つのボタンで1つづつ止めて、リールに描かれた絵柄が横3つ・左右斜3つに揃えば当たりという方式で、
3
3
  当たりハズレの抽選はwinLottery関数で行なっており、最大65536の乱数を生成し、配列configTableで指定した範囲内であれば当たりで、3つのリールともに当たった絵柄に止まります。
4
4
  それ以外はハズレで、3つのリールとも乱数で適当に選んだ絵柄に止まるのですが、
5
- 時々ハズレの場合でもたまたま横3つ・左右斜3つに絵柄が揃ってしまうことがあります。
5
+ 時々ハズレの場合でも意図しない形で横3つ・左右斜3つに絵柄が揃ってしまうことがあります。
6
6
  ハズレの際は絵柄が全く揃わないようにするにはどの様な乱数の決め方やチェックを行えばいいでしょうか。
7
7
  どうかご提示よろしくお願いいたします。
8
8
 

1

2018/03/08 19:52

投稿

nosonosolife
nosonosolife

スコア42

title CHANGED
File without changes
body CHANGED
@@ -309,9 +309,4 @@
309
309
  </div>
310
310
  </body>
311
311
  </html>
312
- ```
312
+ ```
313
- 【追記】
314
- リールの移動速度を遅くしたらどうなるのかと思い、
315
- reelMoveSpeedY = Math.floor(iconHeight / 10)
316
- と変更して試して見たのですが、それでも1つだけ止まらない事がありました。
317
- 恐らくストップボタンを押すタイミングが関係しているのではないかと思います。