ドットインストール - 3分動画でマスターできるプログラミング学習サービス
レッスン一覧
料金プラン
レッスン一覧
料金プラン
ログイン
運営からのお知らせ
2025/03/27
NEW
【週刊ドットインストール】 Nuxt入門のレッスンをリリースしました
2025/03/24
NEW
『Nuxt入門 基礎編』をリリースしました
2024/05/07
NEW
あなただけの学習ロードマップを作成します 【随時受付中】
PREMIUM
JavaScriptで15パズルを作ろう
JavaScriptのクラス構文を使って15パズルを作る方法を見ていきます。
0%
動画レッスン一覧
(25)
質問と回答
(30)
#01 15パズルを作ってみよう
(02:13)
無料公開中
完成版の確認
index.htmlの作成
未完了
#02 Canvas要素を配置しよう
(01:43)
無料公開中
canvasの配置
canvasのスタイリング
未完了
#03 Puzzleクラスを作っていこう
(02:21)
無料公開中
main.jsの作成
canvasの設定
Puzzleクラスの作成
未完了
#04 指定したタイルを切り出そう
(02:36)
無料公開中
画像の読み込み
renderTile()の実装
未完了
#05 実装方針を確認しよう
(02:58)
無料公開中
実装方針の確認
未完了
#06 drawImageで画像を切り出そう
(01:55)
drawImage()
タイルの切り出し
未完了
#07 すべてのタイルを描画しよう
(02:20)
tilesの描画
未完了
#08 クリックイベントを設定しよう
(02:30)
e.clientX
e.clientY
getBoundingClientRect()
未完了
#09 クリックした位置を求めよう
(01:44)
列と行の取得
未完了
#10 上下左右のタイルを調べよう
(03:01)
空白だった場合の処理
上下左右の列と行の取得
未完了
#11 クリックしたタイルを入れ替えよう
(01:45)
範囲のチェック
タイルの入れ替え
未完了
#12 空白のタイルを動かしてみよう
(02:11)
shuffle()
空白の移動先の取得
未完了
#13 タイルをシャッフルしてみよう
(02:58)
範囲のチェック
タイルのシャッフル
未完了
#14 switch文を書き換えてみよう
(01:59)
UDLRの導入
未完了
#15 移動距離の差分を配列にまとめよう
(02:04)
destCol、destRowの取得
switch文の書き換え
未完了
#16 swapTilesも書き換えてみよう
(01:55)
UDLRのプロパティ化
swapTiles()への適応
未完了
#17 重複したコードをメソッドにまとめよう
(01:52)
isOutside()の実装
未完了
#18 ゲームクリア画面を作ろう
(02:07)
renderGameClear()の実装
未完了
#19 クリア判定を実装していこう
(02:36)
isComplete()の実装
shuffle()の修正
未完了
#20 不具合を修正していこう
(01:13)
ゲームの状態管理
不具合の修正
未完了
#21 描画処理を別クラスに切り出そう
(02:02)
PuzzleRendererクラスの作成
描画関連処理の移動
未完了
#22 Puzzleクラスにアクセスしよう
(02:39)
プロパティの書き換え
メソッドの実装
未完了
#23 画像を差し替えてみよう
(02:50)
画像の差し替え
renderTile()の修正
未完了
#24 マジックナンバーを無くそう
(03:01)
マジックナンバーの書き換え
メソッドの実装
未完了
#25 15パズルを完成させよう
(02:20)
マジックナンバーの書き換え
条件の書き換え
15パズルの完成
未完了
#01 15パズルを作ってみよう
「ファイルへのアクセスが拒否されました」と表示されます
2022年5月24日
#02 Canvas要素を配置しよう
中央ぞろえにするのに、なぜdisplay:block;にするのですか?
2022年1月27日
#03 Puzzleクラスを作っていこう
今までのレッスンでは this.canvas = canvas は書かなかったと思うのですが...
2022年1月27日
#04 指定したタイルを切り出そう
JavaScript でパスを指定する時は、index.html を起点とするのでしょうか?
2023年6月8日
renderTile 、drawImage の仕組みがよくわかりません
2022年1月27日
sx sy dx dyは何の略ですか?
2022年1月27日
#05 実装方針を確認しよう
sx, sy と dx, dy の違いがわかりません
2022年1月27日
整数の余りについて教えて下さい
2022年1月27日
#06 drawImageで画像を切り出そう
15puzzle.pngの画像が表示されません
2022年1月27日
#07 すべてのタイルを描画しよう
なぜ「15」が描画されないのですか?
2022年2月16日
this.tiles[row][col] でタイルの数値を表せるのはなぜですか?
2022年1月27日
#08 クリックイベントを設定しよう
canvas と ctx は違うものですか?
2022年1月27日
座標が小数点以下も含めて表示されます
2022年1月27日
#09 クリックした位置を求めよう
何列目を求める計算がよくわからない
2022年1月27日
#11 クリックしたタイルを入れ替えよう
離れている数字のタイルでも、分割代入を使えば入れ替えることができるのですか?
2022年1月27日
71行目の break は何をしているのですか?
2022年1月27日
#12 空白のタイルを動かしてみよう
const と let のどちらを使用するかはどう判断すればいいですか?
2022年1月27日
shuffleメソッドの定数dirは何の略でしょうか?
2022年1月27日
#13 タイルをシャッフルしてみよう
分割代入で何をしているのかわかりません
2022年1月27日
コンストラクタ内でthis.shuffle()が最後でもいいのはなぜですか?
2022年1月27日
変数や定数の宣言をなぜそこでするのか教えて下さい
2022年1月27日
#14 switch文を書き換えてみよう
画像がロードされるタイミングについて教えてください
2022年2月18日
shuffle メソッドの後ろに render メソッドは書かなくてよいのですか?
2022年1月27日
#15 移動距離の差分を配列にまとめよう
switch 文のコードを UDLR という配列で置き換えている箇所について詳しく教えてください
2022年1月27日
#16 swapTilesも書き換えてみよう
なぜconstでいいのですか?
2022年1月27日
#19 クリア判定を実装していこう
isComplete()の判定について教えて下さい
2022年1月27日
「this.tiles[row][col] !== i++」について教えて下さい
2022年1月27日
#20 不具合を修正していこう
this.isCompleted = false; を let isCompleted = false; としてはいけないのですか?
2022年1月27日
this.isCompletedをわざわざ使う理由はなぜですか?
2022年1月27日
#22 Puzzleクラスにアクセスしよう
クラス外部から直接プロパティを参照するのが推奨されていないのはなぜですか?
2022年1月27日
リリース情報(note)
今週は『JavaScriptで15パズルを作ろう』をリリースしました
詳細情報
最終更新日
2020年10月12日
バージョン情報
Chrome 85.0 / Visual Studio Code 1.49.2