-
Notifications
You must be signed in to change notification settings - Fork 0
/
point.js
64 lines (52 loc) · 1.38 KB
/
point.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
var util = require('util');
function Point(x, y){
this.x = x;
this.y= y;
}
Point.prototype.toString = function(){
return util.format("Point: (%d,%d)", this.x, this.y)
}
var Angles = {
"NORTH": 0,
"EAST": 90,
"SOUTH": 180,
"WEST": 270
}
function Orientation(angle, point){
this.angle = angle;
this.point = point;
}
Orientation.prototype.getMovePoint = function(){
switch(this.angle){
case 0:
return new Point(this.point.x, this.point.y + 1);
case 90:
return new Point(this.point.x + 1, this.point.y);
case 180:
return new Point(this.point.x, this.point.y - 1);
case 270:
return new Point(this.point.x - 1, this.point.y);
default:
return console.error("Invalid angle in orientation");
}
};
Orientation.prototype.toString = function(){
return util.format("Orientation (%s, Angle: %d))", this.point.toString(), this.angle)
}
function Grid(maxX, maxY){
this.maxX = maxX;
this.maxY = maxY;
this.grid = Array(this.maxX);
for(var i=0; i<this.grid.length; i++)
this.grid[i] = new Array(this.maxY);
}
Grid.prototype.registerObject = function(point, data, callback){
if(!(point.x < this.maxX && point.x >= 0 && point.y < this.maxY && point.y >= 0))
return callback("Failed to place " + point, data);
this.grid[point.x][point.y] = data;
callback(null, data);
}
exports.Point = Point;
exports.Orientation = Orientation;
exports.Angles = Angles;
exports.Grid = Grid;