Do you like my tutorials?

Then consider supporting me on Ko-fi

Talking about Talesworth Adventure game, Actionscript 3, Flash and Game development.

As you can see if you play Talesworth, your hero will keep on running according to the same rules “run straight until you hit a wall, then turn right by 90° until you find a walkable tile, and keep on running” unless he sees a loot.

If the hero sees a loot, he changes the way he’s walking to grab the loot.

In this second part I’ll focus on the line of sight on a tile based level.

The concept is simple: the hero can see in the four directions until a wall (or some other solid object) blocks his line of sight.

This can be easily done with a couple (four, to tell the truth) of while loops, looking for the closest wall on each direction.

The following is the first script you found at step 1, the one you are moving the hero with arrow keys, with a graphical representation of the line of sight.

package {
	import flash.display.Sprite;
	import flash.events.KeyboardEvent;
	import flash.events.Event;
	public class talesworth4 extends Sprite {
		public var map:Array=new Array();
		public var hero_pos:Array= new Array();
		public var wall:wall_mc;
		public var floor:floor_mc;
		public var hero:hero_mc;
		public var key_pressed:int=0;
		public var hero_is_moving:Boolean=false;
		public var hero_x_dir:int=0;
		public var hero_y_dir:int=0;
		public var steps:int=4;
		public var tile_size:int=32;
		public var line_of_sight:Sprite=new Sprite();
		public function talesworth4():void {
			map=[[0,1,1,1,1,1,1,1,1,1,1,1],[0,1,2,2,2,2,2,2,2,1,1,1,1],[0,1,1,1,1,2,1,1,2,1,1,2,1,1],[0,0,1,1,1,2,1,1,2,1,1,2,1,1],[0,0,0,1,1,2,1,1,2,1,1,2,1,1,1],[0,0,0,1,1,2,2,2,2,2,1,2,2,2,1],[0,0,1,1,1,2,1,1,1,2,1,2,1,1,1,1],[0,0,1,1,1,2,1,1,1,1,1,2,1,1,1,1],[0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,1],[0,0,1,2,1,1,2,1,1,1,1,1,1,1,2,1],[0,0,1,2,2,2,2,1,1,1,1,1,0,1,2,1],[0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1]];
			hero_pos=[3,1];
			draw_map();
			place_hero();
			addChild(line_of_sight);
			stage.addEventListener(KeyboardEvent.KEY_DOWN, on_key_down);
			stage.addEventListener(KeyboardEvent.KEY_UP, on_key_up);
			stage.addEventListener(Event.ENTER_FRAME,on_enter_frame);
		}
		public function draw_map():void {
			for (var i:int=0; i

And this is the result:

Move the hero with arrow keys and see his line of sight change in real time.

No need to download anything, just cut/paste this script on the file you found in the previous example.

Never miss an update! Subscribe, and I will bother you by email only when a new game or full source code comes out.