スマホアプリ作るまで続く
長期連載シリーズ
父ちゃん、母ちゃん、
俺、
やっぱゲーム作りたい。
※「俺」も「父ちゃん」も「母ちゃん」も普段使いません。
ゲーム作りたいです。
前回(TECH合同)のおさらい
M⃝riさんの挑発行為
んだとう…?
ということで、NAVER製の
collie - 高速アニメーションJSライブラリ
を作ってJSゲーム制作
Creators'night#14今井
ここまで、
enchant.js
CREATEJS
Collie
Arctic.js
あたりで書いてみた
【結論】
JavaScriptはJavaScript、
そんなにかわんねぇ。
ってことで
今回は
こっちに行ってみた。
∼ The road to a game developer 番外編∼
CoffeeScript+enchant.jsで
書いてみるよ∼
ネットプライスドットコム
NPLab. いまい大すけ
今更だけど…
CoffeeScript
CoffeeScript はプログラミング言語のひとつである。コードはJavaScript の
コードに変換される。
Ruby や Python、Haskell [1] から影響を受けたシンタックスシュガーの導入
により、JavaScript に比べ簡潔さと可読性を向上させたほか、配列内包
(Array comprehensions) やパターンマッチといった機能を追加している。
CoffeeScript により、パフォーマンスを下げることなく、より短いコードでプ
ログラムを記述することができる (JavaScript に比べ 1/3 程度の行数が削減で
きる)[2]。
「CoffeeScript」『フリー百科事典 ウィキペディア日本語版』(http://ja.wikipedia.org/)。
2013年1月25日12時(日本時間)現在での最新版を取得。
結構多用する、
function() {}が、->
this.が、@
だったりして楽、とか
・Classの記述で悩まないとか
・間違ってグローバル変数みた
いなのが防げるとか
・イテレーション楽とか
・「,」とか「;」とか
まあ、色々あれなんですけど、
詳細は加藤さんに
いつも通りjsdo.itで書いたよ
・jsdo.itはJSだけじゃなくて、JSX、
CoffeeScript、TypeScriptで書ける
・保存するとJSにコンパイルして実行
・ちょっとしたテストに最適
で、どうだったの?
書きやすい。
<!DOCTYPE	
  html>	
  
<html>	
  
<head>	
  
	
  	
  	
  	
  <meta	
  http-­‐equiv="Content-­‐Type"	
  content="text/html;	
  charset=UTF-­‐8"	
  />	
  
	
  	
  	
  	
  <script	
  type="text/javascript"	
  src="./enchant.js"></script>	
  
	
  	
  	
  	
  <script	
  type="text/javascript">	
  
	
  	
  	
  	
  	
  	
  	
  	
  enchant();	
  
	
  	
  	
  	
  	
  	
  	
  	
  window.onload	
  =	
  function()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  var	
  game	
  =	
  new	
  Game(320,320);	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  game.preload('a.png');	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  game.onload	
  =	
  function()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  var	
  test	
  =	
  new	
  Sprite(100,100);	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  test.x	
  =	
  10;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  test.y	
  =	
  10;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  test.image	
  =	
  game.assets['a.png'];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  game.rootScene.addChild(test);	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  };	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  game.start();	
  
	
  	
  	
  	
  	
  	
  	
  	
  };	
  
	
  	
  	
  	
  </script>	
  
</head>	
  
<body>	
  
</body>	
  
</html>
スプライト表示までの最低限のコード
enchant();	
  
window.onload	
  =	
  function()	
  {	
  
	
  	
  	
  	
  var	
  game	
  =	
  new	
  Game(320,320);	
  
	
  	
  	
  	
  game.preload('a.png');	
  
	
  	
  	
  	
  game.onload	
  =	
  function()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  var	
  test	
  =	
  new	
  Sprite(100,100);	
  
	
  	
  	
  	
  	
  	
  	
  	
  test.x	
  =	
  10;	
  
	
  	
  	
  	
  	
  	
  	
  	
  test.y	
  =	
  10;	
  
	
  	
  	
  	
  	
  	
  	
  	
  test.image	
  =	
  game.assets['a.png'];	
  
	
  	
  	
  	
  	
  	
  	
  	
  game.rootScene.addChild(test);	
  
	
  	
  	
  	
  };	
  
	
  	
  	
  	
  game.start();	
  
};
スプライト表示までの最低限のコード
enchant()	
  
window.onload	
  =	
  -­‐>	
  
	
  	
  	
  	
  game	
  =	
  new	
  Game(320,320)	
  
	
  	
  	
  	
  game.preload('a.png')	
  
	
  	
  	
  	
  game.onload	
  =	
  -­‐>	
  
	
  	
  	
  	
  	
  	
  	
  	
  test	
  =	
  new	
  Sprite(100,100)	
  
	
  	
  	
  	
  	
  	
  	
  	
  test.x	
  =	
  10	
  
	
  	
  	
  	
  	
  	
  	
  	
  test.y	
  =	
  10	
  
	
  	
  	
  	
  	
  	
  	
  	
  test.image	
  =	
  game.assets['a.png']	
  
	
  	
  	
  	
  	
  	
  	
  	
  game.rootScene.addChild	
  test	
  
	
  	
  	
  	
  game.start()
スプライト表示までの最低限のコード
var	
  Star	
  =	
  enchant.Class.create(enchant.Sprite,	
  {	
  
initialize:	
  function()	
  {	
  
	
   enchant.Sprite.call(this,	
  16,	
  16);	
  
	
   this.image	
  =	
  game.assets['icon0.gif'];	
  
	
   this.frame	
  =	
  30;	
  
	
   this.x	
  =	
  320;	
  
	
   this.y	
  =	
  160;	
  
	
   this.speed	
  =	
  3;	
  
	
   this.addEventListener(Event.ENTER_FRAME,	
  function()	
  {	
  
this.x	
  -­‐=	
  this.speed;	
  
if	
  (this.x	
  <	
  0)	
  {	
  
this.remove();	
  
	
   }	
  
});	
  
},	
  
remove:	
  function()	
  {	
  
	
   delete	
  this;	
  
}	
  
});
スプライト継承のクラスのコード
class	
  Star	
  extends	
  Sprite	
  
constructor:	
  -­‐>	
  
	
   super	
  16,	
  16	
  
	
   @image	
  =	
  Game.instance.assets['icon0.gif']	
  
	
   @frame	
  =	
  30	
  
	
   @x	
  =	
  320	
  
	
   @y	
  =	
  160	
  
	
   @speed	
  =	
  3	
  
onenterframe:	
  (e)	
  -­‐>	
  
@x	
  -­‐=	
  @speed	
  
if	
  @x	
  <	
  0	
  
this.remove()	
  
remove:	
  -­‐>	
  
	
   delete	
  this
スプライト継承のクラスのコード
ずいぶんすっきり。
300行
↓
250行
クマちゃん in the sky
http://jsdo.it/hine.gdw/ofag
全部で4時間くらい
※注)前回も同じくらい
次書けばもっと早い
【注意】
・enchant.js自体がグローバル
な名前領域を前提として作られて
るので、プラグイン動かないこと
がある
・jsdo.itではcoffee -bできな
いから、上記が致命的
感想
・「どう書こう」的なJSの気持ち
悪さがかなり軽減(これはこれで
キモさもあるけど)
・==と===みたいなミスが減るの
も良い
・誰が書いてもある程度綺麗なコー
ドになるだろう
コード書いて、
コンパイルして、
デプロイするまでの
環境構築がキモ
だよね?
【結論】
ゲームのコードも
スッキリな方がいい
ご清聴
ありがとうございました。

More Related Content

PDF
Creators'night#12今井
PPTX
Osakijs #01 「enchant.jsハンズオン資料」
PDF
-入門- enchant.js でゲームを作ろう
PDF
enchant.js meetup Tokyo vol.2 Tutorial
PDF
enchant.jsでゲーム制作をはじめてみよう
PDF
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
PDF
ロールオーバーのいろいろなやり方
KEY
Arctic.js
Creators'night#12今井
Osakijs #01 「enchant.jsハンズオン資料」
-入門- enchant.js でゲームを作ろう
enchant.js meetup Tokyo vol.2 Tutorial
enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
ロールオーバーのいろいろなやり方
Arctic.js

What's hot (7)

PDF
画像を縮小するお話
PDF
ASP.NETを利用したAJAX開発の応用
PDF
Html canvas shooting_and_performanceup
PDF
Canvas de shooting 制作のポイント
PDF
MT meets PHP
PDF
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
PDF
React で CSS カプセル化の可能性を考える
画像を縮小するお話
ASP.NETを利用したAJAX開発の応用
Html canvas shooting_and_performanceup
Canvas de shooting 制作のポイント
MT meets PHP
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
React で CSS カプセル化の可能性を考える
Ad

Viewers also liked (8)

PDF
Creators'night#15今井
PDF
デブコミュ#20150312
PPTX
標的型攻撃にいかに立ち向かうか~巧妙化する脅威に組織がとるべき対策とは~竹内 文孝
PDF
PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~
PDF
S20 t1 stapyのこれまでとこれから
PDF
S18 t0 introduction
PDF
チームで活用するAnaconda入門
PDF
企業ICTのリスクマネジメントを強化する3つの視点 NTTコミュニケーションズセキュリティエバンジェリスト竹内文孝
Creators'night#15今井
デブコミュ#20150312
標的型攻撃にいかに立ち向かうか~巧妙化する脅威に組織がとるべき対策とは~竹内 文孝
PythonからV-Sido CONNECTで ロボットを操る ~ ハードウェアの絡んだ仕組みの制御を考える ~
S20 t1 stapyのこれまでとこれから
S18 t0 introduction
チームで活用するAnaconda入門
企業ICTのリスクマネジメントを強化する3つの視点 NTTコミュニケーションズセキュリティエバンジェリスト竹内文孝
Ad

Similar to Creators'night#14今井 (20)

PDF
enchant.js勉強会
ODP
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
PDF
2012 03-03-titanium plusquicktigame2d
PDF
Creators'night#13 tech#2今井
PDF
Aaなゲームをjsで
PDF
Aaなゲームをjsで
PPTX
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
KEY
Sencha study
PDF
Siv3Dで楽しむゲームとメディアアート開発
PDF
これからのJavaScriptの話
PPTX
Ember.js Tokyo event 2014/09/22 (Japanese)
PDF
How to use animation packages in R(Japanese)
PPTX
Cocos2d-x(JS) ハンズオン #07「新エディタ Cocos Creator v1.0」
PDF
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
PDF
node+socket.io+enchant.jsでチャットゲーを作る
PDF
Genvidセミナー シンプルJava Scriptオーバーレイ編
PDF
FM音源をいじれるWebサービスを作った
PPTX
Unity C#3からC#6に向けて
PDF
ソーシャルアプリ勉強会(第一回資料)配布用
PDF
Unit testing JavaScript with JUnit/JavaFX
enchant.js勉強会
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
2012 03-03-titanium plusquicktigame2d
Creators'night#13 tech#2今井
Aaなゲームをjsで
Aaなゲームをjsで
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Sencha study
Siv3Dで楽しむゲームとメディアアート開発
これからのJavaScriptの話
Ember.js Tokyo event 2014/09/22 (Japanese)
How to use animation packages in R(Japanese)
Cocos2d-x(JS) ハンズオン #07「新エディタ Cocos Creator v1.0」
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
node+socket.io+enchant.jsでチャットゲーを作る
Genvidセミナー シンプルJava Scriptオーバーレイ編
FM音源をいじれるWebサービスを作った
Unity C#3からC#6に向けて
ソーシャルアプリ勉強会(第一回資料)配布用
Unit testing JavaScript with JUnit/JavaFX

More from Daisuke Imai (16)

PDF
Creators'night#10今井
PDF
Creators'night#8今井
PDF
Creators'night#7今井
PDF
Creators'night#6今井
PDF
Creators'night#5今井
PDF
Creators'night#4今井
PDF
Creators'night#3今井
PDF
Creators'night#1今井
PDF
UI研究会#2
PDF
UI研究会#3
PDF
Beenos creators'night#201308今井
PDF
Beenos creators'night#201307今井
PDF
Ui研究会#1
PDF
Beenos creators' night#201305今井
PDF
Beenos creators' night#201306今井
PDF
パソナプレゼン資料
Creators'night#10今井
Creators'night#8今井
Creators'night#7今井
Creators'night#6今井
Creators'night#5今井
Creators'night#4今井
Creators'night#3今井
Creators'night#1今井
UI研究会#2
UI研究会#3
Beenos creators'night#201308今井
Beenos creators'night#201307今井
Ui研究会#1
Beenos creators' night#201305今井
Beenos creators' night#201306今井
パソナプレゼン資料

Creators'night#14今井