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

質問編集履歴

2

修正

2019/10/28 07:16

投稿

f_r
f_r

スコア4

title CHANGED
File without changes
body CHANGED
@@ -16,78 +16,10 @@
16
16
  JavaScript
17
17
  ソースコード
18
18
  ```
19
- <!DOCTYPE html>
20
- <html lang="ja">
21
- <head>
22
- <meta charset="utf-8">
23
- <title>JSー迷路</title>
24
- <style>
25
- body {
26
- font-family: "Century Gothic";
27
- font-size: 16px;
28
- }
29
- #container {
30
- text-align: center;
31
- margin: 20px auto;
32
- }
33
- #mycanvas {
34
- background: skyblue;
35
- }
36
- .btn {
37
- margin: 3px auto;
38
- width: 200px;
39
- padding: 5px;
40
- background: blue;
41
- color: white;
42
- border-radius: 3px;
43
- cursor: pointer;
44
- }
45
- .btn:hover {
46
- opacity: 0.7;
47
- }
48
- </style>
49
- </head>
50
- <body>
51
- <div id="container">
52
- <canvas width="100" height="100" id="mycanvas">
53
- Canvasに対応したブラウザを用意してください。
54
- </canvas>
55
- <div id="reset" class="btn">RESET</div>
56
- </div>
57
- <script>
58
- (function() {
59
-
60
- var map = [];
61
-
62
- // Canvasで描画
63
- var col = 13;
64
- var row = 13;
65
19
 
66
- for (var x = 0; x < col; x++) {
67
- map[x] = [];
68
- for (var y = 0; y < row; y++) {
69
- map[x][y] = 0;
70
- }
71
- }
72
20
 
73
21
  for (var x = 1; x < col; x += 2) {
74
22
  for (var y = 1; y < row; y += 2) {
75
- map[x][y] = 1;
76
- }
77
- }
78
-
79
- var points = [
80
- [0, -1],
81
- [0, 1],
82
- [1, 0],
83
- [-1, 0] // 左
84
- ];
85
- function rand(n) {
86
- return Math.floor(Math.random() * (n + 1));
87
- }
88
-
89
- for (var x = 1; x < col; x += 2) {
90
- for (var y = 1; y < row; y += 2) {
91
23
  do {
92
24
  if (x === 1) {
93
25
  // 上下左右に倒す
@@ -98,72 +30,7 @@
98
30
  }
99
31
  } while (map[x + r[0]][y + r[1]] === 1);
100
32
  map[x + r[0]][y + r[1]] = 1;
101
- }
102
- }
103
33
 
104
- var startX = 0;
105
- var startY = 0;
106
- var goalX = col - 1;
107
- var goalY = row - 1;
108
-
109
- var wallSize = 10;
110
- var wallColor = '#3261AB';
111
- var routeColor = '#FF0088';
112
-
113
- var canvas = document.getElementById('mycanvas');
114
- if (!canvas || !canvas.getContext) {
115
- return false;
116
- }
117
- var ctx = canvas.getContext('2d');
118
-
119
- canvas.width = (col + 2) * wallSize;
120
- canvas.height = (row + 2) * wallSize;
121
- // 上下の壁
122
- for (var x = 0; x < col + 2; x++) {
123
- drawWall(x, 0);
124
- drawWall(x, row + 1);
125
- }
126
-
127
- // 左右の壁
128
- for (var y = 0; y < row + 2; y++) {
129
- drawWall(0, y);
130
- drawWall(col + 1, y);
131
- }
132
-
133
- // 迷路の内部
134
- for (var x = 0; x < col; x++) {
135
- for (var y = 0; y < row; y++) {
136
- if (map[x][y] === 1) {
137
- drawWall(x + 1, y + 1);
138
- }
139
- if ((x === startX && y === startY) || (x === goalX && y === goalY)) {
140
- drawRoute(x + 1, y + 1);
141
- }
142
- }
143
- }
144
- // 壁を描画
145
- function drawWall(x, y) {
146
- ctx.fillStyle = wallColor;
147
- drawRect(x, y);
148
- }
149
-
150
- function drawRoute(x, y) {
151
- ctx.fillStyle = routeColor;
152
- drawRect(x, y);
153
- }
154
-
155
- function drawRect(x, y) {
156
- ctx.fillRect(
157
- x * wallSize,
158
- y * wallSize,
159
- wallSize,
160
- wallSize);
161
- }
162
-
163
- })();
164
- </script>
165
- </body>
166
- </html>
167
34
  ### 試したこと
168
35
 
169
36
  ここに問題に対して試したことを記載してください。

1

自分のコードに変更

2019/10/28 07:16

投稿

f_r
f_r

スコア4

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
  初心者です。
3
3
  JavaScriptで迷路を作成しています。
4
- ドットインストールの課題を行なっているのですが、ソースコードのWhile文の中身がよくわかりません。(特にr[0],r[1]ころです。)
4
+ ソースコードのWhile文のmap[x + r[0]][y + r[1]]map[x + r[0]][y + r[0]]の挙動の違いがよくわかりません
5
5
  説明していただけると助かります。
6
6
  ### 発生している問題・エラーメッセージ
7
7
 
@@ -20,7 +20,7 @@
20
20
  <html lang="ja">
21
21
  <head>
22
22
  <meta charset="utf-8">
23
- <title>迷路</title>
23
+ <title>JSー迷路</title>
24
24
  <style>
25
25
  body {
26
26
  font-family: "Century Gothic";
@@ -31,19 +31,19 @@
31
31
  margin: 20px auto;
32
32
  }
33
33
  #mycanvas {
34
- background: #AAEDFF;
34
+ background: skyblue;
35
35
  }
36
36
  .btn {
37
37
  margin: 3px auto;
38
38
  width: 200px;
39
39
  padding: 5px;
40
- background: #00AAFF;
40
+ background: blue;
41
- color: #FFFFFF;
41
+ color: white;
42
42
  border-radius: 3px;
43
43
  cursor: pointer;
44
44
  }
45
45
  .btn:hover {
46
- opacity: 0.8;
46
+ opacity: 0.7;
47
47
  }
48
48
  </style>
49
49
  </head>
@@ -56,34 +56,11 @@
56
56
  </div>
57
57
  <script>
58
58
  (function() {
59
- // 迷路を配列で用意
59
+
60
-
61
- /*
62
- 0 0 0
63
- 0 1 0
64
- 0 1 0
65
- map[x][y]
66
- */
67
-
68
- /*
69
- 棒倒し法
70
- (1) 一つ飛びに壁(棒)を作る
71
- (2) 1列目の棒を上下左右のどちらかに倒す
72
- (3) 2列目以降の棒を左以外のどれかに倒す
73
-
74
- 0 0 0 1 0
75
- 1 1 0 1 0
76
- 0 0 0 0 0
77
- 0 1 0 1 1
78
- 0 1 0 0 0
79
- */
80
60
  var map = [];
81
- // map[0] = [0, 0, 0];
61
+
82
- // map[1] = [0, 1, 1];
83
- // map[2] = [0, 0, 0];
84
-
85
62
  // Canvasで描画
86
- var col = 13; // 奇数
63
+ var col = 13;
87
64
  var row = 13;
88
65
 
89
66
  for (var x = 0; x < col; x++) {
@@ -141,7 +118,7 @@
141
118
 
142
119
  canvas.width = (col + 2) * wallSize;
143
120
  canvas.height = (row + 2) * wallSize;
144
- // 上下の壁
121
+ // 上下の壁
145
122
  for (var x = 0; x < col + 2; x++) {
146
123
  drawWall(x, 0);
147
124
  drawWall(x, row + 1);
@@ -187,11 +164,9 @@
187
164
  </script>
188
165
  </body>
189
166
  </html>
190
-
191
167
  ### 試したこと
192
168
 
193
169
  ここに問題に対して試したことを記載してください。
194
170
 
195
171
  ### 補足情報(FW/ツールのバージョンなど)
196
- URL https://dotinstall.com/lessons/maze_js/30909
197
172
  ここにより詳細な情報を記載してください。