Talking about Blockage game, Actionscript 3, Flash and Game development.
Did you play Blockage?
It’s a perfect game to make a tutorial series because at every level it introduces a new feature, so level after level you will see something new both in the game and in the prototype.
Other than that, it’s a tile based puzzle.
This first part will focus on level data. Since it’s a tile based game, you know we should create a bidimensional array, map all levels assigning each tile type a value such as zero for the empty space and one for the walls, and start creating the array tile after tile, just like in Create a Flash game like Rebuild Chile.
In this prototype I will try to “compress” the level packing it in a string containing comma separated values.
Let me explain the idea: count, from left to right, from upper to bottom corners, the number of contiguous walls.
There are 49 walls. Then, 14 empty spaces. Then, two walls. And so on. Exluding the actors (the square and the goal), create a string like this one:
49,1,14,0,2,1,14,0,2,1,14,0,8,1,1,0,56,1
That means the level has 49 walls (marked with 1
), 14 empty spaces (marked with 0
), then 2 walls, 14 spaces and so on.
So this code:
package {
import flash.display.Sprite;
public class blockage extends Sprite {
private const LEVEL_WIDTH:int=16;
private const LEVEL_HEIGHT:int=10;
private var leveldata:String="49,1,14,0,2,1,14,0,2,1,14,0,8,1,1,0,56,1";
private var tmp_level:Array=new Array();
private var level:Array=new Array();
private var wall:wall_mc;
public function blockage() {
tmp_level=leveldata.split(",");
for (var i:int=0; i
Draws the level and stores it in level
array, starting from leveldata
that is the "compressed" level data.
Line 11: splits leveldata
into tmp_level
array. It's just as if I did
tmp_level = [49,1,14,0,2,1,14,0,2,1,14,0,8,1,1,0,56,1];
But starting with a string I can easily import levels from an external editor.
Line 12: loops through all tmp_level
even elements.
Lines 13-21: creating the level itself in level
array pushing i
times i+1
value, and if such value is a wall (1
), then adding the wall movieclip.
This is the result:
The same old thing made in a different way. Does it make any sense to you?
Never miss an update! Subscribe, and I will bother you by email only when a new game or full source code comes out.