Files correlati : cg0.exe cg0700a.msk cg0700b.msk cg3.exe cg4.exe Bug : Commento: Merge 1.0 libraries
132 lines
3.0 KiB
JavaScript
132 lines
3.0 KiB
JavaScript
TetrixShape = {
|
|
NoShape:0,
|
|
ZShape:1,
|
|
SShape:2,
|
|
LineShape:3,
|
|
TShape:4,
|
|
SquareShape:5,
|
|
LShape:6,
|
|
MirroredLShape:7
|
|
}
|
|
|
|
TetrixCoordsTable = [
|
|
[ [ 0, 0 ], [ 0, 0 ], [ 0, 0 ], [ 0, 0 ] ],
|
|
[ [ 0, -1 ], [ 0, 0 ], [ -1, 0 ], [ -1, 1 ] ],
|
|
[ [ 0, -1 ], [ 0, 0 ], [ 1, 0 ], [ 1, 1 ] ],
|
|
[ [ 0, -1 ], [ 0, 0 ], [ 0, 1 ], [ 0, 2 ] ],
|
|
[ [ -1, 0 ], [ 0, 0 ], [ 1, 0 ], [ 0, 1 ] ],
|
|
[ [ 0, 0 ], [ 1, 0 ], [ 0, 1 ], [ 1, 1 ] ],
|
|
[ [ -1, -1 ], [ 0, -1 ], [ 0, 0 ], [ 0, 1 ] ],
|
|
[ [ 1, -1 ], [ 0, -1 ], [ 0, 0 ], [ 0, 1 ] ]
|
|
]
|
|
|
|
function TetrixPiece()
|
|
{
|
|
this.shape = TetrixShape.NoShape;
|
|
}
|
|
|
|
TetrixPiece.prototype.__defineGetter__(
|
|
"shape",
|
|
function() {
|
|
return this._shape;
|
|
}
|
|
);
|
|
|
|
TetrixPiece.prototype.__defineSetter__(
|
|
"shape",
|
|
function(shape) {
|
|
this._shape = shape;
|
|
this._coords = new Array(4);
|
|
for (var i = 0; i < 4; ++i)
|
|
this._coords[i] = TetrixCoordsTable[shape][i].slice();
|
|
}
|
|
);
|
|
|
|
TetrixPiece.prototype.setRandomShape = function() {
|
|
this.shape = Math.floor(((Math.random() * 100000) % 7) + 1);
|
|
}
|
|
|
|
TetrixPiece.prototype.getX = function(index) {
|
|
return this._coords[index][0];
|
|
}
|
|
|
|
TetrixPiece.prototype.getY = function(index) {
|
|
return this._coords[index][1];
|
|
}
|
|
|
|
TetrixPiece.prototype._setX = function(index, x) {
|
|
this._coords[index][0] = x;
|
|
}
|
|
|
|
TetrixPiece.prototype._setY = function(index, y) {
|
|
this._coords[index][1] = y;
|
|
}
|
|
|
|
TetrixPiece.prototype.__defineGetter__(
|
|
"minX",
|
|
function() {
|
|
var min = this._coords[0][0];
|
|
for (var i = 1; i < 4; ++i)
|
|
min = Math.min(min, this._coords[i][0]);
|
|
return min;
|
|
}
|
|
);
|
|
|
|
TetrixPiece.prototype.__defineGetter__(
|
|
"maxX",
|
|
function() {
|
|
var max = this._coords[0][0];
|
|
for (var i = 1; i < 4; ++i)
|
|
max = Math.max(max, this._coords[i][0]);
|
|
return max;
|
|
}
|
|
);
|
|
|
|
TetrixPiece.prototype.__defineGetter__(
|
|
"minY",
|
|
function() {
|
|
var min = this._coords[0][1];
|
|
for (var i = 1; i < 4; ++i)
|
|
min = Math.min(min, this._coords[i][1]);
|
|
return min;
|
|
}
|
|
);
|
|
|
|
TetrixPiece.prototype.__defineGetter__(
|
|
"maxY",
|
|
function() {
|
|
var max = this._coords[0][1];
|
|
for (var i = 1; i < 4; ++i)
|
|
max = Math.max(max, this._coords[i][1]);
|
|
return max;
|
|
}
|
|
);
|
|
|
|
TetrixPiece.prototype.rotatedLeft = function() {
|
|
var result = new TetrixPiece();
|
|
if (this._shape == TetrixShape.SquareShape) {
|
|
result.shape = this._shape;
|
|
return result;
|
|
}
|
|
result._shape = this._shape;
|
|
for (var i = 0; i < 4; ++i) {
|
|
result._setX(i, this.getY(i));
|
|
result._setY(i, -this.getX(i));
|
|
}
|
|
return result;
|
|
}
|
|
|
|
TetrixPiece.prototype.rotatedRight = function() {
|
|
var result = new TetrixPiece();
|
|
if (this._shape == TetrixShape.SquareShape) {
|
|
result.shape = this._shape;
|
|
return result;
|
|
}
|
|
result._shape = this._shape;
|
|
for (var i = 0; i < 4; ++i) {
|
|
result._setX(i, -this.getY(i));
|
|
result._setY(i, this.getX(i));
|
|
}
|
|
return result;
|
|
}
|