Well, with the help of a particularly useful tutorial, I have managed to create a tile-based platformer with two tiles made: Ordinary blocks that will prevent you from falling or running into, and ladders that you can climb up or down. This is my total code:
xspeed = 0;
yspeed = 0;
max_yspeed = 20;
walk_speed = 8;
climb_speed = 5;
climbing = false;
jumping = false;
can_jump = true;
gravity = 1;
jump_power = 10;
walking_while_jumping = true;
// Break
level = new Array();
_root.createEmptyMovieClip("lev",_root.getNextHighestDepth());
_root.createEmptyMovieClip("lad",_root.getNextHighestDepth());
level[0] = new Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
level[1] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
level[2] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
level[3] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
level[4] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
level[5] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 1);
level[6] = new Array(1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1);
level[7] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1);
level[8] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1);
level[9] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1);
level[10] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1);
level[11] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1);
level[12] = new Array(1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1);
level[13] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3);
level[14] = new Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
for (y=0; y<=14; y++) {
for (x=0; x<=24; x++) {
if (level[y][x] == 1) {
place_brick = lev.attachMovie("block", "block_"+lev.getNextHighestDepth(), lev.getNextHighestDepth(), {_x:x*20+10, _y:y*20+10});
place_brick.gotoAndStop(level[y][x]);
}
if (level[y][x] == 2) {
place_brick = lad.attachMovie("block", "block_"+lad.getNextHighestDepth(), lad.getNextHighestDepth(), {_x:x*20+10, _y:y*20+10});
place_brick.gotoAndStop(level[y][x]);
}
**if (level[y][x] == 3) {
place_brick = lad.attachMovie("block", "block_"+lad.getNextHighestDepth(), lad.getNextHighestDepth(), {_x:x*20+10, _y:y*20+10});
place_brick.gotoAndStop(level[y][x]);
}**
}
};
function playerRespawn() {
_root.attachMovie("player","player",_root.getNextHighestDepth(),{_x:40, _y:40});
}
playerRespawn();
//Player stuff
player.onEnterFrame = function() {
if (Key.isDown(Key.LEFT)) {
if (climbing) {
xspeed = -climb_speed;
}
else {
if (walking_while_jumping or can_jump) {
xspeed = -walk_speed;
}
}
}
if (Key.isDown(Key.RIGHT)) {
if (climbing) {
xspeed = climb_speed;
}
else {
if (walking_while_jumping or can_jump) {
xspeed = walk_speed;
}
}
}
if (!feet_on_ladder()) {
climbing = false;
}
if (Key.isDown(Key.UP)) {
if (feet_on_ladder()) {
yspeed = -climb_speed;
climbing = true;
jumping = false;
}
}
if (Key.isDown(Key.DOWN)) {
if (feet_on_ladder() or ladder_under_my_feet()) {
yspeed = climb_speed;
climbing = true;
jumping = false;
}
}
if ((Key.isDown(Key.SPACE)) and can_jump and !jumping and !climbing) {
yspeed -= jump_power;
jumping = true;
}
// adjusting y speed
if (!climbing) {
yspeed += gravity;
}
if (yspeed>max_yspeed) {
yspeed = max_yspeed;
}
if (level_under_my_feet() and !jumping and !climbing) {
yspeed = 0;
}
if (ladder_under_my_feet() and !jumping and !climbing) {
yspeed = 0;
}
forecast_x = this._x+xspeed;
forecast_y = this._y+yspeed;
// floor control
while (_root.lev.hitTest(forecast_x, forecast_y+this._height/2-1, true)) {
forecast_y--;
xspeed = 0;
yspeed = 0;
jumping = false;
}
// ceiling control
while (_root.lev.hitTest(forecast_x, forecast_y-this._height/2, true)) {
forecast_y++;
yspeed = 0;
}
// left wall control
while (_root.lev.hitTest(forecast_x-this._width/2+1, forecast_y, true)) {
forecast_x++;
xspeed = 0;
}
// right wall control
while (_root.lev.hitTest(forecast_x+this._width/2, forecast_y, true)) {
forecast_x--;
xspeed = 0;
}
this._x = forecast_x;
this._y = forecast_y;
// adjusting speeds for next frame
xspeed = 0;
if (climbing) {
yspeed = 0;
}
};
function feet_on_ladder() {
return _root.lad.hitTest(player._x, player._y+player._height/2-1, true);
}
function level_under_my_feet() {
return _root.lev.hitTest(player._x, player._y+player._height/2, true);
}
function ladder_under_my_feet() {
return _root.lad.hitTest(player._x, player._y+player._height/2, true);
}
Basically, you can go up and down ladders, jump, run, all that good stuff. The next item I want to add is a door when I have the integer 3 in my array. I already made the code for adding it into my array, which is bolded in the code, made frame 3 in my block MC and everything, but I’m not sure how to use the getHitTest() function to create a new array with all of my code along with it. I can attach the .fla if needed. Any suggestions?