SlideShare a Scribd company logo
MPS Setagaya 第8回 (2015/10/23) ミーティング
JavaScript でパックマン! 第5回
金子純也
Morning Project Samurai 代表
MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko
本日の目標
パックマンを追いかけるアカベーを作る!
• オブジェクトを理解して、キャラクターを

オブジェクトとして表現する
• オブジェクト間のメッセージを理解する
MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko
ECMAScript
(European Computer Manufacturers Association Script)
• Netscape と Microsoft が主となって策定した

言語仕様
• JavaScript はこの仕様に則って作られた

言語の一つ
• ECMAScript はオブジェクト指向
MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko
ECMAScript
(European Computer Manufacturers Association Script)
• Netscape と Microsoft が主となって策定した

言語仕様
• JavaScript はこの仕様に則って作られた

言語の一つ
• ECMAScript はオブジェクト指向
デファクトスタンダード

例: Python, Java, Ruby, etc.
MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko
オブジェクト指向
プログラムをオブジェクトの集合と
オブジェクト間のメッセージのやり取りで構築
オブジェクト: 属性とメソッドの集合
どこ?
x = 50, y=50
パックマンオブジェクト アカベーオブジェクト
MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko
今までのコード
function drawPacman(ctx ,cx, cy, theta){
ctx.strokeStyle="#FF0000";
ctx.fillStyle="#FF0000";
ctx.beginPath();
ctx.arc(cx, cy, 50, theta * Math.PI / 180, 

(360 - theta) * Math.PI / 180);
ctx.lineTo(cx, cy);
ctx.lineTo(cx + 50 * Math.cos(theta * Math.PI / 180),

cy + 50 * Math.sin(theta * Math.PI / 180));
ctx.fill();
}
パックマンを描くという関数 (機能) をブラウザに組み込んだ 
   パックマンというモノは明確には存在していない
MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko
オブジェクトの作り方・使い方
• コンストラクタ (オブジェクトのレシピを

持ったコックさん) を定義する
• コンストラクタにインスタンス (オブジェクト)
を作ってもらう
Pacman の コンストラクタ

属性
• 位置
• 口の開き具合
メソッド
• 移動
• 口パク
パックマン
インスタンス
生成
(インスタンス化)
MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko
アカベーの例
Akabei の コンストラクタ

属性
• 位置
メソッド
• 移動
インスタンス化
インスタンス化
インスタンス化
それぞれのアカベーはメモリの別々の領域に存在
MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko
コンストラクタの定義と使い方
var Pacman = function(cx, cy, speed, theta) {
this.position = [cx, cy];
this.movingDirection = [0, 0];
this.speed = speed;
this.theta = theta;
}
Pacman.prototype = {
get_position: function () { 

return this.position;
}
}
pacman = new Pacman(50, 50, 2, 30);
position = pacman.get_position();MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko
コンストラクタの定義と使い方
var Pacman = function(cx, cy, speed, theta) {
this.position = [cx, cy];
this.movingDirection = [0, 0];
this.speed = speed;
this.theta = theta;
}
Pacman.prototype = {
move: function () { 

this.position = [cx + 1, this.cy];
}
}
var pacman = new Pacman(50, 50, 2, 30);
pacman.move();
パックマンの属性とともに
コンストラクタを定義して
Pacman という名前をつける
MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko
コンストラクタの定義と使い方
var Pacman = function(cx, cy, speed, theta) {
this.position = [cx, cy];
this.movingDirection = [0, 0];
this.speed = speed;
this.theta = theta;
}
Pacman.prototype = {
move: function () { 

this.position = [cx + 1, this.cy];
}
}
var pacman = new Pacman(50, 50, 2, 30);
pacman.move();
定義した Pacman コンストラクタ
にメソッドを定義
MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko
コンストラクタの定義と使い方
var Pacman = function(cx, cy, speed, theta) {
this.position = [cx, cy];
this.movingDirection = [0, 0];
this.speed = speed;
this.theta = theta;
}
Pacman.prototype = {
move: function () { 

this.position = [cx + 1, this.cy];
}
}
var pacman = new Pacman(50, 50, 2, 30);
pacman.move();
定義した Pacman コンストラクタを用いて
インスタンスを作り、pacman と命名
MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko
コンストラクタの定義と使い方
var Pacman = function(cx, cy, speed, theta) {
this.position = [cx, cy];
this.movingDirection = [0, 0];
this.speed = speed;
this.theta = theta;
}
Pacman.prototype = {
move: function () { 

this.position = [cx + 1, this.cy];
}
}
var pacman = new Pacman(50, 50, 2, 30);
pacman.move();
pacman に move() とメッセージを送信
MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko
ソースコードの在り処
https://github.com/morningprojectsamurai/mpssd_pacman20151024
ソースコードにコメントが書いてあるので、
それを見ながら自分で作ってみよう !
まずは 20151024.html を見てみよう !
MPS Setagaya 第8回 (2015/10/24) ミーティング (c) Junya Kaneko

More Related Content

PDF
JavaScript でパックマン!第7回 (一旦最終回)
PDF
JavaScript でパックマン! 第2回
PDF
JavaScript でパックマン!第1回
PDF
JavaScript でパックマン!第4回
PDF
JavaScript でパックマン!第3回
PDF
JavaScript でパックマン!第6回
PPTX
backbone としての timm 入門
ODP
plot beta dist
JavaScript でパックマン!第7回 (一旦最終回)
JavaScript でパックマン! 第2回
JavaScript でパックマン!第1回
JavaScript でパックマン!第4回
JavaScript でパックマン!第3回
JavaScript でパックマン!第6回
backbone としての timm 入門
plot beta dist

What's hot (7)

PPTX
VRボドゲ実装の話
PPTX
みんなが知らない pytorch-pfn-extras
PDF
Linqで画像処理
PDF
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
PDF
第3回 JavaScriptから始めるプログラミング2016
PDF
第四回 JavaScriptから始めるプログラミング2016
PDF
第2回 JavaScriptから始めるプログラミング2016
VRボドゲ実装の話
みんなが知らない pytorch-pfn-extras
Linqで画像処理
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
第3回 JavaScriptから始めるプログラミング2016
第四回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016
Ad

Similar to JavaScript で パックマン! 第5回 (10)

PDF
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
PDF
プログラミングで少し世界を広げよう(MPS)
PDF
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第1回
PDF
「深層学習」勉強会LT資料 "Chainer使ってみた"
PDF
Python で画像処理をしてみよう!
 第3回 - 画像認識 -
PDF
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
PDF
Amebaにおけるレコメンデーションシステムの紹介
PDF
Pythonで画像処理をしてみよう!第4回 - Scale-space 第1回-
PDF
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-
KEY
#upcamp '12 Hack-a-thon Result
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
プログラミングで少し世界を広げよう(MPS)
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第1回
「深層学習」勉強会LT資料 "Chainer使ってみた"
Python で画像処理をしてみよう!
 第3回 - 画像認識 -
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
Amebaにおけるレコメンデーションシステムの紹介
Pythonで画像処理をしてみよう!第4回 - Scale-space 第1回-
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-
#upcamp '12 Hack-a-thon Result
Ad

More from Project Samurai (20)

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

JavaScript で パックマン! 第5回