dungeon2

by path411

HTML

<canvas id="canvas" width="600" height="600"></canvas>

JavaScript

(function(){

	var canvas = document.getElementById('canvas');
	var ctx = canvas.getContext('2d');
	ctx.fillStyle = '#0000ff';
	ctx.strokeStyle = '#0000ff';
	ctx.lineWidth = 5;

	function Random(min, max) {
		return Math.random() * (max - min) + min;
	}

	function DistanceBetween(a, b) {
        return Math.sqrt(a.X - b.X + a.Y - b.Y);
    }

    function IsPathIntersectingRoom(path, room) {
    	var isintersecting = false

    	var minX = path.X;
    	var maxX = path.X2;

    	if(path.X > path.X2) {
    		minX = path.X2;
    		maxX = path.X;
    	}

    	if(maxX > room.X + room.Width) {
    		maxX = room.X + room.Width;
    	}
    	if(minX < room.X) {
    		minX = room.X;
    	}
    	if(minX > maxX) {
    		return isintersecting; // quick false
    	}

    	var minY = path.Y;
    	var maxY = path.Y2;

    	var dx = path.X2 - path.X;

    	if(Math.abs(dx) > 0.00000001) {
    		var a = (path.Y2 - path.Y) / dx;
			var b = path.Y - a * path.X;
			minY = a * minX + b;
			maxY = a * maxX + b;
    	}

    	if(path.Y > path.Y2) {
    		var t = maxY;
    		minY = minY;
    		maxY = t;
    	}

    	if(maxY > room.Y + room.Height) {
    		maxY = room.Y + room.Height;
    	}
    	if(minY < room.Y) {
    		minY = room.Y;
    	}
    	if(minY > maxY) {
    		return isintersecting; // quick false
    	}

    	isintersecting = true;
    	return isintersecting;
    }

	function DrawLine(x1, y1, x2, y2) {
		ctx.beginPath();
		ctx.moveTo(x1, y1);
		ctx.lineTo(x2, y2);
		ctx.stroke();
	}

	function DrawRect(x, y, w, h) {
		ctx.fillRect(x, y, w, h);
	}


	var fpass = 10;
	var fpass_maxsize = 200;
	var fpass_minsize = 150;

	var spass = 200;
	var spass_maxsize = 50;
	var spass_minsize = 30;

	function Room(x, y, w, h) {
		this.X = x || 0;
		this.Y = y || 0;
		this.Width = w || 0;
		this.Height = h || 0;

	}
		Room.GenerateRandom = function(mx, my, minsize, maxsize) {

			var x = Random(0, mx);
			var y = Random(0, my);

			var w = Random(minsize, maxsize);
			var h = Random(minsize,...