what happened to chess++?

Pages: 1... 345
I think the problem is not enough abstraction. Logic for piece movement and capturing is inside a button released function.

I think it should look more like this pseudo-code:

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
LButtonReleaed( x, y ) {

    dropCell = game.board.cellAt( x, y );
    game.tryMove( startCell, dropCell );
} 

tryMove( startCell, dropCell ) {

    piece = board.pieceAt( startCell );

    if (  piece.suite != game.currentPlayer.suite )
       return INVALID;

    Board brd = board;

    if ( game.isValidCastle( board, startCell, dropCell ) ) 
       brd = game.castle( board, startCell, dropCell );        

    else {
        brd.removePieces( startCell, dopCell );
        brd.addPiece( piece, dropCell );
   
        if (
            ( ! piece.hasRange(board, startCell, dropCell ) ||
            ( game.getStatus( brd ) == CHECK ) 
         )
              game.cancleMove( piece, startCell, dropCell );
              return INVALID;
    }

    game.recordMove( board, brd );
    board = brd;
    
    return VALID;
}

 
Last edited on
Abstraction was going to happen, I just wanted to get the game playable first. Currently it plays fine but just doesn't have any victory/draw conditions.
Topic archived. No new replies allowed.
Pages: 1... 345