rapidgame
Version:
A cross-platform commandline tool that prebuilds cocos2d-x libraries for Windows, Mac, Linux, Android and iOS. Also a game templating system.
221 lines (168 loc) • 12.3 kB
HTML
<html>
<head>
<title>GameScene.js</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" media="all" href="public/stylesheets/normalize.css" />
<link rel="stylesheet" media="all" href="docco.css" />
</head>
<body>
<div class="container">
<div class="page">
<h2 class="title">RapidGame</h2>
<h2 class="contact"></h2>
<div class="header">
<h1>GameScene.js</h1>
<div class="toc"><a href="#toc">Jump to Table of Contents</a></div>
</div>
<blockquote>
</blockquote>
<div class='highlight'><pre>
<span class="hljs-keyword">var</span> GameScene = cc.Scene.extend({
layer: <span class="hljs-literal">null</span>,
onEnter: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">this</span>._super();
<span class="hljs-keyword">this</span>.layer = <span class="hljs-keyword">new</span> GameLayer();
<span class="hljs-keyword">this</span>.layer.init();
<span class="hljs-keyword">this</span>.addChild(<span class="hljs-keyword">this</span>.layer);
}
});
<span class="hljs-keyword">var</span> GameLayer = cc.Layer.extend({
collisionTypeBall: <span class="hljs-number">1</span>,
collisionTypeWall: <span class="hljs-number">2</span>,
ballSpeed: <span class="hljs-number">1500</span>,
gravity: -<span class="hljs-number">2500</span>,
labelPadding: <span class="hljs-number">60</span>,
wallThickness: <span class="hljs-number">40</span>,
bg: <span class="hljs-literal">null</span>,
bg2: <span class="hljs-literal">null</span>,
ball: <span class="hljs-literal">null</span>,
scoreLabel: <span class="hljs-literal">null</span>,
sceneLabel: <span class="hljs-literal">null</span>,
x1: <span class="hljs-number">0</span>,
x2: <span class="hljs-number">0</span>,
y1: <span class="hljs-number">1</span>,
y2: <span class="hljs-number">1</span>,
walls: [],
init: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">var</span> self = <span class="hljs-keyword">this</span>, i, x, y, w, h;
<span class="hljs-keyword">this</span>._super();
Game.score = <span class="hljs-number">0</span>;
<span class="hljs-keyword">this</span>.x1 = Game.contentX + <span class="hljs-keyword">this</span>.wallThickness;
<span class="hljs-keyword">this</span>.x2 = <span class="hljs-keyword">this</span>.x1 + Game.contentWidth - <span class="hljs-keyword">this</span>.wallThickness * <span class="hljs-number">2</span>;
<span class="hljs-keyword">this</span>.y1 = Game.contentY + <span class="hljs-keyword">this</span>.wallThickness;
<span class="hljs-keyword">this</span>.y2 = <span class="hljs-keyword">this</span>.y1 + Game.contentHeight - <span class="hljs-keyword">this</span>.wallThickness * <span class="hljs-number">2</span>;
<span class="hljs-comment">// Stretched big background</span>
<span class="hljs-keyword">this</span>.bg2 = cc.LayerColor.create(cc.color(<span class="hljs-number">208</span>, <span class="hljs-number">204</span>, <span class="hljs-number">202</span>, <span class="hljs-number">255</span>));
<span class="hljs-keyword">this</span>.bg2.scale = <span class="hljs-number">2</span>;
<span class="hljs-keyword">this</span>.addChild(<span class="hljs-keyword">this</span>.bg2, -<span class="hljs-number">1</span>);
<span class="hljs-comment">// Actual background</span>
<span class="hljs-keyword">this</span>.bg = cc.LayerColor.create(cc.color(<span class="hljs-number">218</span>, <span class="hljs-number">214</span>, <span class="hljs-number">212</span>, <span class="hljs-number">255</span>), Game.contentWidth, Game.contentHeight);
<span class="hljs-keyword">this</span>.bg.attr({x: Game.contentX, y: Game.contentY});
<span class="hljs-keyword">this</span>.addChild(<span class="hljs-keyword">this</span>.bg, <span class="hljs-number">0</span>);
<span class="hljs-comment">// Labels</span>
<span class="hljs-keyword">this</span>.scoreLabel = cc.LabelTTF.create(<span class="hljs-string">"Score: "</span> + Game.score.toString(), Game.config[<span class="hljs-string">"font"</span>], <span class="hljs-number">45</span>);
<span class="hljs-keyword">this</span>.scoreLabel.setAnchorPoint(<span class="hljs-number">0</span>, <span class="hljs-number">1</span>);
<span class="hljs-keyword">this</span>.scoreLabel.setPosition(<span class="hljs-keyword">this</span>.x1 + <span class="hljs-keyword">this</span>.labelPadding, <span class="hljs-keyword">this</span>.y2 - <span class="hljs-keyword">this</span>.labelPadding);
<span class="hljs-keyword">this</span>.scoreLabel.setColor(cc.color(<span class="hljs-number">128</span>, <span class="hljs-number">128</span>, <span class="hljs-number">128</span>));
<span class="hljs-keyword">this</span>.addChild(<span class="hljs-keyword">this</span>.scoreLabel, <span class="hljs-number">1</span>);
<span class="hljs-keyword">this</span>.sceneLabel = cc.LabelTTF.create(
<span class="hljs-string">"Game Scene"</span>,
Game.config[<span class="hljs-string">"font"</span>],
<span class="hljs-number">200</span>
);
<span class="hljs-keyword">this</span>.sceneLabel.setColor(cc.color(<span class="hljs-number">128</span>, <span class="hljs-number">128</span>, <span class="hljs-number">128</span>));
<span class="hljs-keyword">this</span>.sceneLabel.setPosition(Game.centralize(<span class="hljs-number">0</span>, <span class="hljs-number">228</span>));
<span class="hljs-keyword">this</span>.addChild(<span class="hljs-keyword">this</span>.sceneLabel, <span class="hljs-number">1</span>);
<span class="hljs-keyword">this</span>.sceneLabel.runAction(cc.Sequence.create(
cc.FadeOut.create(<span class="hljs-number">5</span>),
cc.RemoveSelf.create()
));
<span class="hljs-keyword">if</span> (Game.config.playMusic) {
Game.playMusic(<span class="hljs-string">"Song.mp3"</span>);
}
<span class="hljs-comment">// Start physics</span>
Game.startPhysics(cc.p(<span class="hljs-number">0</span>, <span class="hljs-keyword">this</span>.gravity));
<span class="hljs-comment">// Walls</span>
walls = [
Game.createPhysicsBox(<span class="hljs-keyword">this</span>.x1, <span class="hljs-keyword">this</span>.y1, <span class="hljs-keyword">this</span>.x2, Game.contentY, <span class="hljs-number">0.9</span>, <span class="hljs-number">0</span>, <span class="hljs-keyword">this</span>.collisionTypeWall), <span class="hljs-comment">// bottom</span>
Game.createPhysicsBox(<span class="hljs-keyword">this</span>.x1, <span class="hljs-keyword">this</span>.y2, <span class="hljs-keyword">this</span>.x2, <span class="hljs-keyword">this</span>.y2 + <span class="hljs-keyword">this</span>.wallThickness, <span class="hljs-number">0.9</span>, <span class="hljs-number">0</span>, <span class="hljs-keyword">this</span>.collisionTypeWall), <span class="hljs-comment">// top</span>
Game.createPhysicsBox(Game.contentX, Game.contentY, <span class="hljs-keyword">this</span>.x1, <span class="hljs-keyword">this</span>.y2 + <span class="hljs-keyword">this</span>.wallThickness, <span class="hljs-number">0.9</span>, <span class="hljs-number">0</span>, <span class="hljs-keyword">this</span>.collisionTypeWall), <span class="hljs-comment">// left</span>
Game.createPhysicsBox(<span class="hljs-keyword">this</span>.x2, Game.contentY, <span class="hljs-keyword">this</span>.x2 + <span class="hljs-keyword">this</span>.wallThickness, <span class="hljs-keyword">this</span>.y2 + <span class="hljs-keyword">this</span>.wallThickness, <span class="hljs-number">0.9</span>, <span class="hljs-number">0</span>, <span class="hljs-keyword">this</span>.collisionTypeWall) <span class="hljs-comment">// right</span>
];
<span class="hljs-comment">// Ball</span>
<span class="hljs-keyword">this</span>.ball = Game.createPhysicsSprite(<span class="hljs-string">"Ball.png"</span>, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-literal">true</span>, <span class="hljs-keyword">this</span>.collisionTypeBall);
<span class="hljs-keyword">this</span>.ball.body.setPos(cp.v(Game.winSize.width * <span class="hljs-number">.5</span>, Game.winSize.height * <span class="hljs-number">.5</span>));
<span class="hljs-keyword">this</span>.addChild(<span class="hljs-keyword">this</span>.ball, <span class="hljs-number">1</span>);
<span class="hljs-comment">// Handle collision events</span>
Game.space.addCollisionHandler(<span class="hljs-keyword">this</span>.collisionTypeBall, <span class="hljs-keyword">this</span>.collisionTypeWall, <span class="hljs-literal">null</span>, <span class="hljs-literal">null</span>, <span class="hljs-literal">null</span>, <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(arbiter, space)</span>{</span>
Game.score += <span class="hljs-number">10</span>;
self.scoreLabel.setString(<span class="hljs-string">"Score: "</span> + Game.score);
Game.playEffect(<span class="hljs-string">"Wall.mp3"</span>);
});
<span class="hljs-comment">// Handle touch events</span>
Game.addTouchListeners(<span class="hljs-keyword">this</span>, <span class="hljs-keyword">this</span>.touchHandler);
<span class="hljs-comment">// World update</span>
<span class="hljs-keyword">this</span>.scheduleUpdate();
<span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
},
update: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(delta)</span> {</span>
Game.stepPhysics(delta);
<span class="hljs-comment">// Move ball sprite with body</span>
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">this</span>.ball) {
<span class="hljs-keyword">var</span> v = <span class="hljs-keyword">this</span>.ball.body.getPos();
v = cp.v(v.x, v.y);
<span class="hljs-keyword">this</span>.ball.setPosition(v);
}
},
onExit: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">this</span>.unscheduleUpdate();
Game.space.removeCollisionHandler(Game.space, <span class="hljs-keyword">this</span>.collisionTypeBall, <span class="hljs-keyword">this</span>.collisionTypeWall);
},
touchHandler: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(type, touches, event)</span> {</span>
<span class="hljs-keyword">var</span> self = Game.getRunningLayer();
<span class="hljs-keyword">if</span> (type === <span class="hljs-string">"began"</span>) {
Game.playEffect(<span class="hljs-string">"Intro.mp3"</span>);
self.ball.body.setVel(cp.v(
touches[<span class="hljs-number">0</span>].getLocation().x < Game.winSize.width * <span class="hljs-number">.5</span> ? -self.ballSpeed : self.ballSpeed,
self.ballSpeed
));
}
}
});</pre></div>
<a name="toc"> </a>
<div id="bottom-toc">
<h3>Table of Contents</h3>
<ol>
<li>
<a class="source" href="README.html">
README.md
</a>
</li>
<li>
<a class="source" href="GameScene.html">
GameScene.js
</a>
</li>
<li>
<a class="source" href="MenuScene.html">
MenuScene.js
</a>
</li>
<li>
<a class="source" href="Game.html">
Game.js
</a>
</li>
<li>
<a class="source" href="Server.html">
Server.js
</a>
</li>
</ol>
</div>
<div class="fleur">h</div>
</div>
</div>
</body>
</html>