SlideShare une entreprise Scribd logo
1  sur  30
MPS 世田谷 第4回(2015/08/23)資料
JavaScript でパックマン!
金子純也
Morning Project Samurai 代表
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
今日の目標
JavaScript (JS) で
ブラウザの画面上に四角形を描く!!
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
要素 (エレメント)
HTML のタグで表される HP の部品を
要素 (エレメント) と呼ぶ
例:
<h1></h1>・・・h1エレメント
<canvas></canvas> ・・・canvasエレメント

<p id=“sample”>・・・id が sampleの p エレメント

id が sampleのエレメント
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
要素 (エレメント)
エレメントは道具箱 !
Canvas

(道具箱)
Context
(道具箱)
メソッド:
• 円を描く機能
• 線を描く機能
• 絵を表示する機能
プロパティ:
• 塗りつぶし色
• 枠線の形式
メソッド:
• context を

取り出す
プロパティ:
• 要素の幅
• 要素の高さ
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
実行結果
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
実行結果
<canvas>要素
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
JS でブラウザ上に絵を描く仕組み
JavaScript
Canvas

(HTML要素)
1. Context の要求
2. Context
Context 3. 線や絵の描画命令
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
JavaScript
Canvas

(HTML要素)
1. Context の要求
2. Context
Context 3. 線や絵の描画命令
線や絵をブラウザ上で
表示するための箱
JS でブラウザ上に絵を描く仕組み
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
JavaScript
Canvas

(HTML要素)
1. Context の要求
2. Context
Context 3. 線や絵の描画命令
線や絵を描くための
紙と道具のセット
JS でブラウザ上に絵を描く仕組み
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
Context のお絵描きツール達
• 四角形を描くツール

context.fillRect(left, top, width, height)
• 円を描くツール

context.arc(cx, cy, r, s_angle, e_angle, c_clockwise)
• 図形の枠線の色を指定するツール

context.strokeStyle = “rgb(255, 0, 0)”

context.strokeStyle = “#FF0000”
• 図形の塗りつぶし色を指定するツール

context.fillStyle = “rgb(255, 0, 0)”

context.fillStyle = “#FF0000”
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
JSでCanvasからContextを取得
JavaScript
Canvas

(HTML要素)
1. Context の要求
2. Context
Context 3. 線や絵の描画命令
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
DOM Tree

(HTML全体)
JSでDOM TreeからCanvasを取得
JavaScript
Canvas

(HTML要素)
1. Context の要求
2. Context
Context 3. 線や絵の描画命令
0-1. Canvas の要求
0-2. Canvas
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
DOM Tree との対話の準備
<html>
<head>
<title>MPS世田谷パックマン</title>
</head>
<body>
<canvas id=“pacman” width="300" height="150">

canvas がサポートされてません。</canvas>
</body>
</html>
ファイル名: mps_setagaya_4.html で保存
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
DOM Treeとの対話の準備
<html>
<head>
<title>MPS世田谷パックマン</title>
</head>
<body>
<canvas id="pacman" width="300" height="150">

canvas がサポートされてません。</canvas>
</body>
</html>
ファイル名: mps_setagaya_4.html で保存
キャンバスのサイズを指定
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
DOM Tree との対話
<body>
<canvas id="pacman" width="300" height="150">

canvas がサポートされてません。</canvas>
<script type="text/javascript">
var cv = document.getElementById("pacman");
</script>
</body>
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
DOM Tree から
idがpackmanのcanvasを取得
document.getElementById("pacman");
プログラム中で
DOM Tree をあらわす
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
document.getElementById("pacman");
DOM Tree に命令を行う
合図

(DOM Tree の持っている

機能を使う合図)
DOM Tree から
idがpackmanのcanvasを取得
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
document.getElementById("pacman");
pacman という id
を持った要素を
取ってこい!
(DOM Tree に

実際にやって

もらうこと)
DOM Tree から
idがpackmanのcanvasを取得
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
document.getElementById("pacman");
プログラム中での
DOM Tree
DOM Tree に命令を行う
(DOM Tree の持っている

機能を使う)
pacman という id
を持った要素を
取ってこい!
(DOM Tree に

実際にやって

もらうこと)
DOM Tree から
idがpackmanのcanvasを取得
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
document.getElementById("pacman");
Canvas

(HTML要素)
Context
DOM Tree から
idがpackmanのcanvasを取得
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
document.getElementById("pacman");
Canvas

(HTML要素)
Context
こいつを
どこかに保存して
おく必要がある
DOM Tree から
idがpackmanのcanvasを取得
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
<body>
<canvas id="pacman" width="300" height="150">

canvas がサポートされてません。</canvas>
<script type="text/javascript">
var cv = document.getElementById("pacman");
cv という名前の入れ物を作って、
= の右側の実行結果 (今回は canvas要素) を保存
DOM Tree から
idがpackmanのcanvasを取得
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
DOM Tree

(HTML全体)
JSでDOM TreeからCanvasを取得
JavaScript
Canvas

(HTML要素)
1. Context の要求
2. Context
Context 3. 線や絵の描画命令
0-1. Canvas の要求
0-2. Canvas
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
Canvas との対話
<body>
<canvas id="pacman" width="300" height="150">

canvas がサポートされてません。</canvas>
<script type="text/javascript">
var cv = document.getElementById(“pacman");
var ctx = cv.getContext("2d");
</script>
</body>
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
DOM Tree

(HTML全体)
JSでDOM TreeからCanvasを取得
JavaScript
Canvas

(HTML要素)
1. Context の要求
2. Context
Context 3. 線や絵の描画命令
0-1. Canvas の要求
0-2. Canvas
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
context との対話
<body>
<canvas id="pacman" width="300" height="150">

canvas がサポートされてません。</canvas>
<script type="text/javascript">
var cv = document.getElementById(“pacman");
var ctx = cv.getContext(“2d");
ctx.fillStyle="#FF0000";
ctx.fillRect(20, 20, 150, 100);
</script>
</body>
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
Context の”紙”の構造
(0, 0) (12, 0)
(12, 12)
ピクセル

(r, g, b) = (255, 0, 0)
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
実行結果
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
なぜかうまく動かない?
Developer Tools
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko
選択 エラーの数
エラーの場所選択
エラーの詳細
MPS 世田谷 第4回(2015/08/23)資料 (c) Junya Kaneko

Contenu connexe

Tendances

組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
Shunji Umetani
 
傾向スコアを使ったキャンペーン効果検証V1
傾向スコアを使ったキャンペーン効果検証V1傾向スコアを使ったキャンペーン効果検証V1
傾向スコアを使ったキャンペーン効果検証V1
Kazuya Obanayama
 

Tendances (20)

組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
 
グラフと木
グラフと木グラフと木
グラフと木
 
CVPR 2018 速報
CVPR 2018 速報CVPR 2018 速報
CVPR 2018 速報
 
機械学習と主成分分析
機械学習と主成分分析機械学習と主成分分析
機械学習と主成分分析
 
オトナのpandas勉強会(資料)
オトナのpandas勉強会(資料)オトナのpandas勉強会(資料)
オトナのpandas勉強会(資料)
 
これがCassandra
これがCassandraこれがCassandra
これがCassandra
 
【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】
【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】
【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
 
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
 
LBFGSの実装
LBFGSの実装LBFGSの実装
LBFGSの実装
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習
 
傾向スコアを使ったキャンペーン効果検証V1
傾向スコアを使ったキャンペーン効果検証V1傾向スコアを使ったキャンペーン効果検証V1
傾向スコアを使ったキャンペーン効果検証V1
 
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
 
C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。
 
Rustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミングRustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミング
 
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
 
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
 
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかお前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
 
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門高速!Clojure Web 開発入門
高速!Clojure Web 開発入門
 

En vedette

En vedette (8)

JavaScript でパックマン!第4回
JavaScript でパックマン!第4回JavaScript でパックマン!第4回
JavaScript でパックマン!第4回
 
JavaScript でパックマン!第7回 (一旦最終回)
JavaScript でパックマン!第7回 (一旦最終回)JavaScript でパックマン!第7回 (一旦最終回)
JavaScript でパックマン!第7回 (一旦最終回)
 
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 2
数学的基礎から学ぶ Deep Learning (with Python) Vol. 2数学的基礎から学ぶ Deep Learning (with Python) Vol. 2
数学的基礎から学ぶ Deep Learning (with Python) Vol. 2
 
Pythonで画像処理をやってみよう!第8回 - Scale-space 第7回 -
Pythonで画像処理をやってみよう!第8回 - Scale-space 第7回 -Pythonで画像処理をやってみよう!第8回 - Scale-space 第7回 -
Pythonで画像処理をやってみよう!第8回 - Scale-space 第7回 -
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 1
数学的基礎から学ぶ Deep Learning (with Python) Vol. 1数学的基礎から学ぶ Deep Learning (with Python) Vol. 1
数学的基礎から学ぶ Deep Learning (with Python) Vol. 1
 
Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -
Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -
Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 12
数学的基礎から学ぶ Deep Learning (with Python) Vol. 12数学的基礎から学ぶ Deep Learning (with Python) Vol. 12
数学的基礎から学ぶ Deep Learning (with Python) Vol. 12
 

Similaire à JavaScript でパックマン!第1回

QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
Jumpei Ogawa
 

Similaire à JavaScript でパックマン!第1回 (8)

JavaScript でパックマン! 第2回
JavaScript でパックマン! 第2回JavaScript でパックマン! 第2回
JavaScript でパックマン! 第2回
 
concrete5 テーマ作成ハンズオン (Ver5.6 まで)
concrete5 テーマ作成ハンズオン (Ver5.6 まで)concrete5 テーマ作成ハンズオン (Ver5.6 まで)
concrete5 テーマ作成ハンズオン (Ver5.6 まで)
 
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
 
PayPayでのk8s活用事例
PayPayでのk8s活用事例PayPayでのk8s活用事例
PayPayでのk8s活用事例
 
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回
 
JavaScript で パックマン! 第5回
JavaScript で パックマン! 第5回JavaScript で パックマン! 第5回
JavaScript で パックマン! 第5回
 
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
 
Bridging between Vision and Language
Bridging between Vision and LanguageBridging between Vision and Language
Bridging between Vision and Language
 

Plus de Project Samurai

Python で画像処理をやってみよう! -SIFT 第5回-
Python で画像処理をやってみよう! -SIFT 第5回-Python で画像処理をやってみよう! -SIFT 第5回-
Python で画像処理をやってみよう! -SIFT 第5回-
Project Samurai
 

Plus de Project Samurai (19)

Python で画像処理をやってみよう! -SIFT 第7回-
Python で画像処理をやってみよう! -SIFT 第7回-Python で画像処理をやってみよう! -SIFT 第7回-
Python で画像処理をやってみよう! -SIFT 第7回-
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 9
数学的基礎から学ぶ Deep Learning (with Python) Vol. 9数学的基礎から学ぶ Deep Learning (with Python) Vol. 9
数学的基礎から学ぶ Deep Learning (with Python) Vol. 9
 
Python で画像処理をやってみよう! -SIFT 第6回-
Python で画像処理をやってみよう! -SIFT 第6回-Python で画像処理をやってみよう! -SIFT 第6回-
Python で画像処理をやってみよう! -SIFT 第6回-
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 8
数学的基礎から学ぶ Deep Learning (with Python) Vol. 8数学的基礎から学ぶ Deep Learning (with Python) Vol. 8
数学的基礎から学ぶ Deep Learning (with Python) Vol. 8
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 7
数学的基礎から学ぶ Deep Learning (with Python) Vol. 7数学的基礎から学ぶ Deep Learning (with Python) Vol. 7
数学的基礎から学ぶ Deep Learning (with Python) Vol. 7
 
Python で画像処理をやってみよう! -SIFT 第5回-
Python で画像処理をやってみよう! -SIFT 第5回-Python で画像処理をやってみよう! -SIFT 第5回-
Python で画像処理をやってみよう! -SIFT 第5回-
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 6
数学的基礎から学ぶ Deep Learning (with Python) Vol. 6数学的基礎から学ぶ Deep Learning (with Python) Vol. 6
数学的基礎から学ぶ Deep Learning (with Python) Vol. 6
 
Mpsy20160423
Mpsy20160423Mpsy20160423
Mpsy20160423
 
Make your Artificial Intelligence
Make your Artificial IntelligenceMake your Artificial Intelligence
Make your Artificial Intelligence
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 4
数学的基礎から学ぶ Deep Learning (with Python) Vol. 4数学的基礎から学ぶ Deep Learning (with Python) Vol. 4
数学的基礎から学ぶ Deep Learning (with Python) Vol. 4
 
数学的基礎から学ぶ Deep Learning (with Python) Vol. 3
数学的基礎から学ぶ Deep Learning (with Python) Vol. 3数学的基礎から学ぶ Deep Learning (with Python) Vol. 3
数学的基礎から学ぶ Deep Learning (with Python) Vol. 3
 
Python で画像処理をやってみよう!第11回 - SIFT Vol.1 キーポイント候補 -
Python で画像処理をやってみよう!第11回 - SIFT Vol.1 キーポイント候補 -Python で画像処理をやってみよう!第11回 - SIFT Vol.1 キーポイント候補 -
Python で画像処理をやってみよう!第11回 - SIFT Vol.1 キーポイント候補 -
 
Instagram API を使ってウェブアプリを作ろう!
Instagram API を使ってウェブアプリを作ろう!Instagram API を使ってウェブアプリを作ろう!
Instagram API を使ってウェブアプリを作ろう!
 
JavaScript でパックマン!第6回
JavaScript でパックマン!第6回JavaScript でパックマン!第6回
JavaScript でパックマン!第6回
 
Pythonで画像処理をやってみよう!第6回 - Scale-space 第3回 -
Pythonで画像処理をやってみよう!第6回 - Scale-space 第3回 -Pythonで画像処理をやってみよう!第6回 - Scale-space 第3回 -
Pythonで画像処理をやってみよう!第6回 - Scale-space 第3回 -
 
JavaScript でパックマン!第3回
JavaScript でパックマン!第3回JavaScript でパックマン!第3回
JavaScript でパックマン!第3回
 
Python で OAuth2 をつかってみよう!
Python で OAuth2 をつかってみよう!Python で OAuth2 をつかってみよう!
Python で OAuth2 をつかってみよう!
 
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第1回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第1回(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第1回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第1回
 
安全なWebアプリ構築1回
安全なWebアプリ構築1回安全なWebアプリ構築1回
安全なWebアプリ構築1回
 

JavaScript でパックマン!第1回