src/chess/pieces/King.js   A
last analyzed

Size

Lines of Code 42

Duplication

Duplicated Lines 42
Ratio 100 %

Test Coverage

Coverage 55.56%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
nc 1
dl 42
loc 42
ccs 10
cts 18
cp 0.5556
rs 10
noi 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A King.js ➔ ??? 8 8 2

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
/**
2
 * King module
3
 * @module
4
 */
5 View Code Duplication
"use strict";
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
6
7
/**
8
 * Class with King logic
9
 */
10
class King {
11
    /**
12
     * init
13
     */
14
    constructor(color) {
15 4
        this.symbol = "K";
16 4
        this.moved = 0;
17 4
        this.active = true;
18 4
        this.color = color;
19 4
        this.rows = [null, "A", "B", "C", "D", "E", "F", "G", "H"];
20 4
        this.img = this.color === "white" ? "w-king" : "b-king";
21
    }
22
23
    legalMove(x, y, nx, ny) {
24
        let xNum = this.rows.indexOf(x);
25
        let nxNum = this.rows.indexOf(nx);
26
27
        let xStep = Math.abs(xNum - nxNum);
28
        let yStep = Math.abs(y - ny)
29 4
        if (xStep > 1 || yStep > 1) {
30
            return false
31
        }
32
33 6
        if (x == nx && y !== ny || x !== nx && y == ny) {
34
            return true
35
        }
36
37 2
        if (xStep === yStep) {
38
            return true
39
        }
40
41
        return false;
42
    }
43
}
44
45
46
module.exports = King;
47