Skip to content

Commit ee833ef

Browse files
committed
Paddle and ball movement made resolution independent
1 parent 126f711 commit ee833ef

File tree

6 files changed

+28
-30
lines changed

6 files changed

+28
-30
lines changed

templates/cocos2d iOS demo.xctemplate/Classes/GameTypes.h

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,21 @@
1010
//
1111
// -----------------------------------------------------------------
1212

13-
#define kGameLoadColor [CCColor colorWithRed:0.25 green:0.125 blue:0.0]
14-
#define kGameContrastColor [CCColor colorWithRed:0.5 green:0.25 blue:0.0]
13+
#define kGameColor [CCColor orangeColor]
14+
#define kGameLoadSceneColor [CCColor colorWithRed:0.25 green:0.125 blue:0.0]
15+
#define kGameMainSceneColor [CCColor colorWithRed:0.5 green:0.25 blue:0.0]
1516

1617
#define kGrossiniJumpTime 1.0
1718
#define kGrossiniJumps 5
1819

19-
#define kGamePaddleInset 90
20-
#define kGamePaddleTouchArea 250
20+
#define kGamePaddleInset 0.09
21+
#define kGamePaddleTouchArea 0.25
2122

22-
#define kGamePaddleSpeed 800
23-
#define kGameBallSpeed 1200
23+
#define kGamePaddleSpeed 1.00
24+
#define kGameBallSpeed 1.50
2425

25-
#define kGameSpinFactor 0.25
26-
#define kGameSpinRandomFactor 0.15
26+
#define kGameSpinFactor 190
27+
#define kGameSpinRandomFactor 15
2728

2829
#define kGameSliderEndStop 15
2930

templates/cocos2d iOS demo.xctemplate/Classes/Paddle.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ - (instancetype)initWithSide:(PaddleSide)side
3535

3636
_gameSize = [CCDirector sharedDirector].viewSize;
3737
_side = side;
38-
float x = (side == PaddleSideLeft) ? kGamePaddleInset : _gameSize.width - kGamePaddleInset;
38+
float x = (side == PaddleSideLeft) ? kGamePaddleInset * _gameSize.width : (1 - kGamePaddleInset) * _gameSize.width;
3939
_destination = _gameSize.height * 0.5;
4040
self.position = (CGPoint){x, _destination};
4141

@@ -49,8 +49,8 @@ - (instancetype)initWithSide:(PaddleSide)side
4949

5050
- (BOOL)validTouchPosition:(CGPoint)position
5151
{
52-
if (_side == PaddleSideLeft) return (position.x < kGamePaddleTouchArea);
53-
return (position.x > (_gameSize.width - kGamePaddleTouchArea));
52+
if (_side == PaddleSideLeft) return (position.x < (kGamePaddleTouchArea * _gameSize.width));
53+
return (position.x > ((1 - kGamePaddleTouchArea) * _gameSize.width));
5454
}
5555

5656
// -----------------------------------------------------------------
@@ -69,7 +69,7 @@ - (void)update:(CCTime)delta
6969
// move to destination at light speed
7070
// calculate remaining distance and step
7171
float remainingDistance = fabs(self.position.y - _destination);
72-
float step = kGamePaddleSpeed * delta;
72+
float step = kGamePaddleSpeed * _gameSize.height * delta;
7373

7474
if (step > remainingDistance)
7575
{

templates/cocos2d iOS demo.xctemplate/Classes/gameScene.m

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,14 @@ - (instancetype)init
5757

5858
// draw touch area markers
5959
CCDrawNode *drawNode = [CCDrawNode node];
60-
[drawNode drawSegmentFrom:(CGPoint){kGamePaddleTouchArea, 0}
61-
to:(CGPoint){kGamePaddleTouchArea, _gameSize.height}
60+
[drawNode drawSegmentFrom:(CGPoint){kGamePaddleTouchArea * _gameSize.width, 0}
61+
to:(CGPoint){kGamePaddleTouchArea * _gameSize.width, _gameSize.height}
6262
radius:1.0
63-
color:[CCColor orangeColor]];
64-
[drawNode drawSegmentFrom:(CGPoint){_gameSize.width - kGamePaddleTouchArea, 0}
65-
to:(CGPoint){_gameSize.width - kGamePaddleTouchArea, _gameSize.height}
63+
color:kGameColor];
64+
[drawNode drawSegmentFrom:(CGPoint){(1 - kGamePaddleTouchArea) * _gameSize.width, 0}
65+
to:(CGPoint){(1 - kGamePaddleTouchArea) * _gameSize.width, _gameSize.height}
6666
radius:1.0
67-
color:[CCColor orangeColor]];
67+
color:kGameColor];
6868
[self addChild:drawNode];
6969

7070
// enable touch
@@ -88,7 +88,7 @@ - (void)gameTilt
8888
{
8989
// for now just show a game tilt label
9090
CCLabelTTF *gameTiltLabel = [CCLabelTTF labelWithString:@"Game Tilt" fontName:@"ArialMT" fontSize:48];
91-
gameTiltLabel.fontColor = [CCColor orangeColor];
91+
gameTiltLabel.fontColor = kGameColor;
9292
gameTiltLabel.positionType = CCPositionTypeNormalized;
9393
gameTiltLabel.position = (CGPoint){0.5, 0.5};
9494
[self addChild:gameTiltLabel];
@@ -188,9 +188,9 @@ - (void)update:(CCTime)delta
188188

189189
// add some angle
190190
// if ball is hit in upper half, spin the ball upwards, and downwards if hit in lower half
191-
float spin = (_ball.position.y - _paddleA.position.y) * kGameSpinFactor;
191+
float spin = (_ball.position.y - _paddleA.position.y) / _gameSize.height * kGameSpinFactor;
192192
// add some randomness
193-
spin += (CCRANDOM_MINUS1_1() * 100 * kGameSpinRandomFactor);
193+
spin += (CCRANDOM_MINUS1_1() * kGameSpinRandomFactor);
194194
// adjust vector
195195
_ballVector = ccpRotateByAngle(_ballVector, CGPointZero, spin * M_PI / 180);
196196
}
@@ -203,8 +203,8 @@ - (void)update:(CCTime)delta
203203
// change direction
204204
_ballVector.x = -_ballVector.x;
205205
// add some angle (see above)
206-
float spin = (_paddleB.position.y- _ball.position.y) * kGameSpinFactor;
207-
spin += (CCRANDOM_MINUS1_1() * 100 * kGameSpinRandomFactor);
206+
float spin = (_paddleB.position.y - _ball.position.y) / _gameSize.height * kGameSpinFactor;
207+
spin += (CCRANDOM_MINUS1_1() * kGameSpinRandomFactor);
208208
_ballVector = ccpRotateByAngle(_ballVector, CGPointZero, spin * M_PI / 180);
209209
}
210210

@@ -264,12 +264,12 @@ - (void)serveFromSide:(PaddleSide)side
264264
if (side == PaddleSideLeft)
265265
{
266266
_ball.position = (CGPoint){_paddleA.position.x + ((_paddleA.contentSize.width + _ball.contentSize.width) * 0.5), _paddleA.position.y};
267-
_ballVector = (CGPoint){kGameBallSpeed, 0};
267+
_ballVector = (CGPoint){kGameBallSpeed * _gameSize.width, 0};
268268
}
269269
else
270270
{
271271
_ball.position = (CGPoint){_paddleB.position.x - ((_paddleB.contentSize.width + _ball.contentSize.width) * 0.5), _paddleB.position.y};
272-
_ballVector = (CGPoint){-kGameBallSpeed, 0};
272+
_ballVector = (CGPoint){-kGameBallSpeed * _gameSize.width, 0};
273273
}
274274
}
275275

templates/cocos2d iOS demo.xctemplate/Classes/loadScene.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ - (id)init
4747
background.anchorPoint = CGPointZero;
4848
background.position = CGPointZero;
4949
background.contentSize = size;
50-
background.color = kGameLoadColor;
50+
background.color = kGameLoadSceneColor;
5151
[self addChild:background];
5252

5353
// loading text

templates/cocos2d iOS demo.xctemplate/Classes/mainScene.m

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,11 @@ - (id)init
4747
// get the size of the world
4848
CGSize size = [CCDirector sharedDirector].viewSize;
4949

50-
// Set the background to medium grey
51-
self.colorRGBA = [CCColor colorWithRed:0.5 green:0.5 blue:0.5];
52-
5350
// add a solid colored node
5451
CCSprite9Slice *background = [CCSprite9Slice spriteWithImageNamed:@"white_square.png"];
5552
background.anchorPoint = CGPointZero;
5653
background.contentSize = size;
57-
background.color = kGameContrastColor;
54+
background.color = kGameMainSceneColor;
5855
[self addChild:background];
5956

6057
// add grossini (we have missed him)

0 commit comments

Comments
 (0)