Skip to content

Commit eb04f99

Browse files
committed
Beta release - 10 full levels, speedup after, nearly there?
1 parent a18fdb6 commit eb04f99

15 files changed

+519
-157
lines changed

32blox.sublime-workspace

Lines changed: 395 additions & 128 deletions
Large diffs are not rendered by default.

Ball.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,13 @@
2727
* constructor - Spawns a ball at the specified location, of the specfied type
2828
*/
2929

30-
Ball::Ball( blit::Point p_origin, ball_type_t p_type )
30+
Ball::Ball( blit::Point p_origin, float p_speed, ball_type_t p_type )
3131
{
3232
/* Save the origin and type. */
3333
location.x = p_origin.x;
3434
location.y = p_origin.y;
3535
ball_type = p_type;
36+
speed = p_speed;
3637

3738
/* And set some defaults, for now. */
3839
vector = blit::Vec2( 0, 0 );
@@ -153,7 +154,7 @@ void Ball::launch( void )
153154
{
154155
/* First off, start with a launch-speed vertical vector. */
155156
vector.x = 0;
156-
vector.y = -1.5;
157+
vector.y = speed * -1.0f;
157158

158159
/* And apply a launch angle to that. */
159160
vector.rotate( compute_bat_angle() );
@@ -174,7 +175,7 @@ void Ball::randomise( void )
174175
{
175176
/* First off, start with a launch-speed vertical vector. */
176177
vector.x = 0;
177-
vector.y = -1.5;
178+
vector.y = speed * -1.0f;
178179

179180
/* And apply a random angle to it. */
180181
vector.rotate( (float)( blit::random() % 180 ) / 100.0f - 0.9f );

Ball.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,15 @@ class Ball
2323
private:
2424
blit::Vec2 location;
2525
blit::Vec2 vector;
26+
float speed;
2627
ball_type_t ball_type;
2728
blit::Rect bat_position;
2829
const uint8_t ball_size[BALL_MAX] = { 8, 6 };
2930
float compute_bat_angle( void );
3031
blit::Point get_render_location( void );
3132

3233
public:
33-
Ball( blit::Point, ball_type_t = BALL_NORMAL );
34+
Ball( blit::Point, float = 1.5, ball_type_t = BALL_NORMAL );
3435
blit::Rect get_bounds( void );
3536
ball_type_t get_type( void );
3637
bool moving_up( void );

GameState.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ void GameState::spawn_ball( bool pBat )
216216
}
217217

218218
/* create a new ball. */
219-
l_ball = new Ball( l_ballpos );
219+
l_ball = new Ball( l_ballpos, level->get_ball_speed() );
220220

221221
/* Stick it to the bat. */
222222
l_ball->stuck = true;
@@ -228,7 +228,7 @@ void GameState::spawn_ball( bool pBat )
228228
l_ballpos = l_current_ball->get_bounds().center();
229229

230230
/* create a new ball. */
231-
l_ball = new Ball( l_ballpos );
231+
l_ball = new Ball( l_ballpos, level->get_ball_speed() );
232232
l_ball->randomise();
233233
}
234234

@@ -670,8 +670,9 @@ gamestate_t GameState::update( uint32_t p_time )
670670
/* If there are no more balls in play, then we lose a life. */
671671
if ( std::distance( balls.begin(), balls.end() ) == 0 )
672672
{
673-
/* Switch the bat back to standard speed, too. */
673+
/* Switch the bat back to standard type and speed, too. */
674674
bat_speed = 1.0f;
675+
bat_type = BAT_NORMAL;
675676

676677
/* Reduce our lives, spawn a fresh ball if we can. */
677678
lives--;

Level.cpp

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Level::Level( uint8_t p_level )
3939
* In a normal world, we'd load a level file based on level number. But as
4040
* we're embedded, level data is compiled in so we just access it.
4141
*/
42-
switch( p_level )
42+
switch( ( p_level % LEVEL_MAX ) )
4343
{
4444
case 1:
4545
init( a_level_01, a_level_01_length );
@@ -50,6 +50,27 @@ Level::Level( uint8_t p_level )
5050
case 3:
5151
init( a_level_03, a_level_03_length );
5252
break;
53+
case 4:
54+
init( a_level_04, a_level_04_length );
55+
break;
56+
case 5:
57+
init( a_level_05, a_level_05_length );
58+
break;
59+
case 6:
60+
init( a_level_06, a_level_06_length );
61+
break;
62+
case 7:
63+
init( a_level_07, a_level_07_length );
64+
break;
65+
case 8:
66+
init( a_level_08, a_level_08_length );
67+
break;
68+
case 9:
69+
init( a_level_09, a_level_09_length );
70+
break;
71+
case 0:
72+
init( a_level_10, a_level_10_length );
73+
break;
5374
default:
5475
init( nullptr, 0 );
5576
break;
@@ -164,5 +185,25 @@ uint8_t Level::hit_brick( blit::Point p_point )
164185
return 10;
165186
}
166187

188+
189+
/*
190+
* get_ball_speed - works out how fast a standard ball should be moving, which
191+
* is based on the level we're currently on. It's a cynical
192+
* trick to increase difficulty without building load of new
193+
* levels :-)
194+
*
195+
* Returns float, the speed of the ball
196+
*/
197+
198+
float Level::get_ball_speed( void )
199+
{
200+
float l_base_speed = 1.5f;
201+
202+
/* Levels are cyclic, and we have a speed bump for each complete cycle. */
203+
l_base_speed += ( ( level - 1 ) / LEVEL_MAX ) / 2.0f;
204+
205+
/* All done, return it. */
206+
return l_base_speed;
207+
}
167208

168209
/* End of Level.cpp */

Level.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
#define BOARD_HEIGHT 15
1515
#define BOARD_WIDTH 10
1616

17+
#define LEVEL_MAX 10
18+
1719
class Level
1820
{
1921
private:
@@ -29,6 +31,7 @@ class Level
2931
uint8_t get_brick( uint8_t, uint8_t );
3032
uint8_t get_brick( blit::Point );
3133
uint8_t hit_brick( blit::Point );
34+
float get_ball_speed( void );
3235
};
3336

3437
#endif /* _LEVEL_HPP_ */

assets.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,27 @@ assets_levels.cpp:
2525
assets/level03.csv:
2626
name: "03"
2727

28+
assets/level04.csv:
29+
name: "04"
30+
31+
assets/level05.csv:
32+
name: "05"
33+
34+
assets/level06.csv:
35+
name: "06"
36+
37+
assets/level07.csv:
38+
name: "07"
39+
40+
assets/level08.csv:
41+
name: "08"
42+
43+
assets/level09.csv:
44+
name: "09"
45+
46+
assets/level10.csv:
47+
name: "10"
48+
2849

2950
assets_fonts.cpp:
3051
prefix: a_font_

assets/level04.csv

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
1,1,1,1,1,1,1,1,1,1
2-
1,1,1,1,1,1,1,1,1,1
3-
1,1,1,2,2,2,2,1,1,1
1+
5,4,3,2,1,1,2,3,4,5
2+
4,3,2,1,0,0,1,2,3,4
3+
3,2,1,0,0,0,0,1,2,3
4+
2,1,0,0,0,0,0,0,1,2
45
1,0,0,0,0,0,0,0,0,1

assets/level05.csv

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
1,1,1,1,1,1,1,1,1,1
2-
1,1,1,1,1,1,1,1,1,1
3-
1,1,1,2,2,2,2,1,1,1
41
1,0,0,0,0,0,0,0,0,1
2+
2,1,0,0,0,0,0,0,1,2
3+
3,2,1,0,0,0,0,1,2,3
4+
4,3,2,1,0,0,1,2,3,4
5+
5,4,3,2,1,1,2,3,4,5

assets/level06.csv

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
1,1,1,1,1,1,1,1,1,1
2-
1,1,1,1,1,1,1,1,1,1
3-
1,1,1,2,2,2,2,1,1,1
4-
1,0,0,0,0,0,0,0,0,1
1+
2,2,2,2,2,2,2,2,2,2
2+
2,0,0,0,0,0,0,0,0,2
3+
2,0,1,4,1,4,1,4,0,2
4+
2,0,4,1,4,1,4,1,0,2
5+
2,0,0,0,0,0,0,0,0,2
6+
2,2,2,2,2,2,2,2,2,2

assets/level07.csv

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1+
0,0,0,0,0,0,0,0,0,0
12
1,1,1,1,1,1,1,1,1,1
3+
0,0,0,0,0,0,0,0,0,0
4+
1,1,1,1,1,1,1,1,1,1
5+
0,0,0,0,0,0,0,0,0,0
6+
1,1,1,1,1,1,1,1,1,1
7+
0,0,0,0,0,0,0,0,0,0
8+
1,1,1,1,1,1,1,1,1,1
9+
0,0,0,0,0,0,0,0,0,0
210
1,1,1,1,1,1,1,1,1,1
3-
1,1,1,2,2,2,2,1,1,1
4-
1,0,0,0,0,0,0,0,0,1

assets/level08.csv

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1+
0,0,0,0,0,0,0,0,0,0
12
1,1,1,1,1,1,1,1,1,1
2-
1,1,1,1,1,1,1,1,1,1
3-
1,1,1,2,2,2,2,1,1,1
4-
1,0,0,0,0,0,0,0,0,1
3+
0,0,0,0,0,0,0,0,0,0
4+
2,2,2,2,2,2,2,2,2,2
5+
0,0,0,0,0,0,0,0,0,0
6+
3,3,3,3,3,3,3,3,3,3
7+
0,0,0,0,0,0,0,0,0,0
8+
4,4,4,4,4,4,4,4,4,4
9+
0,0,0,0,0,0,0,0,0,0
10+
5,5,5,5,5,5,5,5,5,5

assets/level09.csv

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
1,1,1,1,1,1,1,1,1,1
2-
1,1,1,1,1,1,1,1,1,1
1+
0,0,0,0,0,0,0,0,0,0
2+
0,0,0,1,1,1,1,0,0,0
33
1,1,1,2,2,2,2,1,1,1
4-
1,0,0,0,0,0,0,0,0,1
4+
1,2,2,3,3,3,3,2,2,1
5+
1,2,3,4,5,5,4,3,2,1
6+
1,2,2,3,3,3,3,2,2,1
7+
1,1,1,2,2,2,2,1,1,1
8+
0,0,0,1,1,1,1,0,0,0

assets/level10.csv

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
1,1,1,1,1,1,1,1,1,1
2+
1,7,7,7,1,1,7,7,1,1
3+
1,1,1,1,7,1,1,1,7,1
4+
1,1,1,1,7,1,1,1,7,1
5+
1,1,7,7,1,1,1,7,1,1
6+
1,1,1,1,7,1,7,1,1,1
7+
1,1,1,1,7,1,7,1,1,1
8+
1,7,7,7,1,1,7,7,7,1
29
1,1,1,1,1,1,1,1,1,1
3-
1,1,1,2,2,2,2,1,1,1
4-
1,0,0,0,0,0,0,0,0,1

metadata.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
title: 32Blox
44
description: A breakout clone
55
author: ahnlak
6+
category: game
7+
url: https://github.com/ahnlak-blit32/32blox
68
splash:
79
file: assets/32blox-image.png
810
icon:
911
file: assets/32blox-icon.png
10-
version: v0.3.0a
12+
version: v0.9.0
1113

1214
# End of metadata.yml

0 commit comments

Comments
 (0)