Thursday, October 1, 2015

[7.4] Chess Design

1. Example

     A     B   C     D     E      F     G     H
8   Br   Bn  Bb   Bq   Bk   Bb   Bn   Br
7   Bp  Bp  Bp   Bp   Bp   Bp   Bp   Bp
6
5
4
3
2  Wp  Wp Wp  Wp  Wp  Wp  Wp  Wp
1  Wr   Wp Wb  Wq  Wk  Wb  Wn  Wr


2. implementation


// 0. GameManager : Game run
public class GameManager 
{
     void processTurn(PlayerBase player){};
     boolean acceptTurn(ChessPieceTurn turn){ return true};
     Position currentPosition;
}
public class chessPieceTurn{};





// 1. PlayerBase
public abstract class PlayerBase
{
    public abstract ChessPieceTurn getTurn(Position p); 
}
class ComputerPlayer extends PlayerBase
{
    public ChessPieceTurn getTurn(Position p){return null;}
    public setDifficulty(){};
    public PositionEstimator estimator;
    public PositionBackTracker backtracker; 
}
public class HumanPalyer extends PlayerBase
{
    public chessPieceTurn getTurn (Position p){return null;}
}



// 2. ChessPieceBase
public abstract class chessPieceBase
{
    abstract boolean canBeChecked();
    abstract boolean isSupportCastle();
}
public class King extends ChessPieceBase{...}
public class Queen extends ChessPieceBase{...}






// 3. Represent chess position in compact form
public class Position
{ 
   ArrayList black;
   ArrayList white;
}




public class PositionBackTracker 
{
    public static Position getNext(Position p){return null;}
}




// PositionPotentialValue
public abstract class PositionPotentialValue
{
    abstract boolean lessThan(PositionPotentialValue pv);
}
public class PositionEstimator
{
    public static PositionPotentialValue estimate(Position p){...}
}




3. Similar Ones
http://rangerway.com/way/object-oriented-chess-game/#tfbml-data%7B%22close_iframe%22%3Atrue%2C%22location_url%22%3A%22http%3A%2F%2Frangerway.com%2Fway%2Fobject-oriented-chess-game%2F%22%7D

No comments:

Post a Comment