Una cosa tipo:
Codice PHP:
<?php
abstract class ChessPiece {
abstract function canMove($rank, $file);
abstract function isValidMove($rank, $file);
function onBoard($rank, $file) {
// todo
}
function isEmpty($rank, $file) {
// todo
}
function isOpponentPiece($rank, $file) {
// todo
}
}
class Pawn extends ChessPiece {
function isValidMove($rank, $file) {
if ($rank == $currentRank) {
if (isWhite()) {
if ($currentFile = 2) { // First Move
return (($file - $currentFile == 2) || ($file - $currentFile == 1));
} else {
return ($file - $currentFile == 1);
}
} else {
if ($currentFile = 7) { // First Move
return (($currentFile - $file == 2) || ($currentFile - $file == 1));
} else {
return ($currentFile - $file == 1);
}
}
}
return false;
}
function canMove($rank, $file) {
if ( $this->onBoard($rank, $file) &&
($this->isEmpty($rank, $file) || $this->isOpponentPiece($rank, $file)) &&
$this->isValidMove($rank, $file)
) {
return true;
}
return false;
}
}
?>