我正在开发一个用 JavaScript 构建的国际象棋游戏。我正在采用面向对象的方法,并且在处理 JavaScript 的继承时遇到了一些困难。我希望有一个“Piece”抽象类,它包含一些字段和基本的 getter/setter,例如这块是黑色还是白色。然后我想为每种类型的片段创建类,我可以像这样实例化:
var pieceOne = new Pawn();
Pawn() 应该具有 Piece 的所有字段和方法,但有自己的移动方法和其他字段(例如它是否已经移动,因为这对大多数棋子来说并不重要)。这是我目前的 Piece 课程:
//This object specifies basic information about pieces.
"use strict";
function Piece(color, type, captured, hasMoved) {
this.color = color;
this.type = type;
this.captured = captured;
this.hasMoved = hasMoved;
this.image = color + "_" + type + ".svg";
}
Piece.prototype.getImage = function getImage(){
return this.image;
}
Piece.prototype.isCaptured = function isCaptured(){
return this.captured;
};
我知道我是否要为我可能会消除“类型”字段的每一种棋子创建一个子类,但是我怎样才能创建一个 Pawn 子类呢?像这样的东西?
function Pawn() = new Piece(color, captured, hasMoved);
Pawn.prototype.getLegalMoves = function getLegalMoves(){
//return legal moves
}
var pieceOne = new Pawn("black", false, false);