Code Duplication    Length = 127-127 lines in 2 locations

src/old_chess/pieces/chess/Game.js 1 location

@@ 1-127 (lines=127) @@
1
const Player = require("./Player");
2
const Board = require("./Board");
3
4
5
/**
6
 * The game module
7
 * @module
8
 */
9
"use strict";
10
11
/**
12
 * The main module that executes the game
13
 */
14
class Game {
15
    /**
16
     * Init Game with board, peices, and players
17
     */
18
    constructor() {
19
        this.p1 = new Player("white", "player1");
20
        this.p2 = new Player("black", "player2");
21
        this.board = new Board();
22
        this.gameBoard = this.board.board;
23
        this.turn = this.p1.color;
24
        this.lastMove = null;
25
        this.NrOfmoves = 0;
26
    }
27
28
29
    /**
30
     * Init board with all player pieces
31
     * @param {object} - Preset gameboard Object
32
     */
33
    init(preset = null) {
34
35
        if (typeof preset !== "null") {
36
            this.bameBoard = preset;
37
        }
38
        //Pawns
39
        for (let i = 1; i <= 8; i++) {
40
            this.gameBoard["B"][i] = this.p1.pawns[i - 1];
41
        }
42
43
        for (let i = 1; i <= 8; i++) {
44
            this.gameBoard["G"][i] = this.p2.pawns[i - 1];
45
        }
46
47
        // Rooks
48
        this.gameBoard["A"][1] = this.p1.rooks[0];
49
        this.gameBoard["A"][8] = this.p1.rooks[1];
50
        this.gameBoard["H"][1] = this.p2.rooks[0];
51
        this.gameBoard["H"][8] = this.p2.rooks[1];
52
53
        // Knights
54
        this.gameBoard["A"][2] = this.p1.knights[0];
55
        this.gameBoard["A"][7] = this.p1.knights[1];
56
        this.gameBoard["H"][2] = this.p2.knights[0];
57
        this.gameBoard["H"][7] = this.p2.knights[1];
58
59
        // Bishops
60
        this.gameBoard["A"][3] = this.p1.bishops[0];
61
        this.gameBoard["A"][6] = this.p1.bishops[1];
62
        this.gameBoard["H"][3] = this.p2.bishops[0];
63
        this.gameBoard["H"][6] = this.p2.bishops[1];
64
65
        // King Queen
66
        this.gameBoard["A"][4] = this.p1.king;
67
        this.gameBoard["A"][5] = this.p1.queen;
68
        this.gameBoard["H"][4] = this.p2.king;
69
        this.gameBoard["H"][5] = this.p2.queen;
70
    }
71
72
73
    /**
74
    * Move a boardpiece and call helpfunctions to check legality of the move
75
    * @return {Bool}, False if illegal move
76
    */
77
    movePiece(x, y, nx, ny) {
78
        const piece = this.board.getSquare(x, y);
79
80
        if (piece.color !== this.turn) {
81
            console.log("Wrong player")
82
            return false
83
        }
84
85
        if (!this.board.checkDestination(this.turn, nx, ny)) {
86
            console.log("destination is not valid")
87
            return false
88
        }
89
90
        // if (piece.symbol === "P" || piece.symbol === "K" || piece.symbol === "N") {
91
        //
92
        // } else if (piece.symbol === "B") {
93
        //     this.board.checkDiagonal(x, y, nx, ny)
94
        // } else if (piece.symbol === "R") {
95
        //     this.board.checkRow(x, y, nx, ny)
96
        // }
97
98
        this.board.move(x, y, nx, ny)
99
        this.lastMove = [x, y, nx, ny]
100
        this.nextPlayer();
101
        this.NrOfmoves += 1;
102
        console.log(this.status());
103
    }
104
105
    /**
106
    * Set next player
107
    * @return {null}
108
    */
109
    nextPlayer() {
110
        this.turn = this.turn === "black" ? "white" : "black";
111
    }
112
113
    /**
114
    * Show the status of the game
115
    * @return {object}
116
    */
117
    status() {
118
        return {
119
            "Player to act": this.turn,
120
            "White name": this.p1.name,
121
            "Black name": this.p2.name,
122
            "last move": this.lastMove
123
        }
124
    }
125
}
126
127
module.exports = new Game();
128

src/old_chess/Game.js 1 location

@@ 1-127 (lines=127) @@
1
const Player = require("./Player");
2
const Board = require("./Board");
3
4
5
/**
6
 * The game module
7
 * @module
8
 */
9
"use strict";
10
11
/**
12
 * The main module that executes the game
13
 */
14
class Game {
15
    /**
16
     * Init Game with board, peices, and players
17
     */
18
    constructor() {
19
        this.p1 = new Player("white", "player1");
20
        this.p2 = new Player("black", "player2");
21
        this.board = new Board();
22
        this.gameBoard = this.board.board;
23
        this.turn = this.p1.color;
24
        this.lastMove = null;
25
        this.NrOfmoves = 0;
26
    }
27
28
29
    /**
30
     * Init board with all player pieces
31
     * @param {object} - Preset gameboard Object
32
     */
33
    init(preset = null) {
34
35
        if (typeof preset !== "null") {
36
            this.bameBoard = preset;
37
        }
38
        //Pawns
39
        for (let i = 1; i <= 8; i++) {
40
            this.gameBoard["B"][i] = this.p1.pawns[i - 1];
41
        }
42
43
        for (let i = 1; i <= 8; i++) {
44
            this.gameBoard["G"][i] = this.p2.pawns[i - 1];
45
        }
46
47
        // Rooks
48
        this.gameBoard["A"][1] = this.p1.rooks[0];
49
        this.gameBoard["A"][8] = this.p1.rooks[1];
50
        this.gameBoard["H"][1] = this.p2.rooks[0];
51
        this.gameBoard["H"][8] = this.p2.rooks[1];
52
53
        // Knights
54
        this.gameBoard["A"][2] = this.p1.knights[0];
55
        this.gameBoard["A"][7] = this.p1.knights[1];
56
        this.gameBoard["H"][2] = this.p2.knights[0];
57
        this.gameBoard["H"][7] = this.p2.knights[1];
58
59
        // Bishops
60
        this.gameBoard["A"][3] = this.p1.bishops[0];
61
        this.gameBoard["A"][6] = this.p1.bishops[1];
62
        this.gameBoard["H"][3] = this.p2.bishops[0];
63
        this.gameBoard["H"][6] = this.p2.bishops[1];
64
65
        // King Queen
66
        this.gameBoard["A"][4] = this.p1.king;
67
        this.gameBoard["A"][5] = this.p1.queen;
68
        this.gameBoard["H"][4] = this.p2.king;
69
        this.gameBoard["H"][5] = this.p2.queen;
70
    }
71
72
73
    /**
74
    * Move a boardpiece and call helpfunctions to check legality of the move
75
    * @return {Bool}, False if illegal move
76
    */
77
    movePiece(x, y, nx, ny) {
78
        const piece = this.board.getSquare(x, y);
79
80
        if (piece.color !== this.turn) {
81
            console.log("Wrong player")
82
            return false
83
        }
84
85
        if (!this.board.checkDestination(this.turn, nx, ny)) {
86
            console.log("destination is not valid")
87
            return false
88
        }
89
90
        // if (piece.symbol === "P" || piece.symbol === "K" || piece.symbol === "N") {
91
        //
92
        // } else if (piece.symbol === "B") {
93
        //     this.board.checkDiagonal(x, y, nx, ny)
94
        // } else if (piece.symbol === "R") {
95
        //     this.board.checkRow(x, y, nx, ny)
96
        // }
97
98
        this.board.move(x, y, nx, ny)
99
        this.lastMove = [x, y, nx, ny]
100
        this.nextPlayer();
101
        this.NrOfmoves += 1;
102
        console.log(this.status());
103
    }
104
105
    /**
106
    * Set next player
107
    * @return {null}
108
    */
109
    nextPlayer() {
110
        this.turn = this.turn === "black" ? "white" : "black";
111
    }
112
113
    /**
114
    * Show the status of the game
115
    * @return {object}
116
    */
117
    status() {
118
        return {
119
            "Player to act": this.turn,
120
            "White name": this.p1.name,
121
            "Black name": this.p2.name,
122
            "last move": this.lastMove
123
        }
124
    }
125
}
126
127
module.exports = new Game();
128