com.fjalvarez.tdd.darts.Darts.dartsLeft()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 2
c 1
b 0
f 0
cc 1
rs 10
1
package com.fjalvarez.tdd.darts;
2
3
public class Darts {
4
5
    enum Multiplier {
6
        DOUBLE, TRIPLE
7
    }
8
9
    private int dartsLeft = 3;
10
    private int turn = 1;
11
12
    private int score = 301;
13
    private int lastTurnScore = score;
14
    private boolean isFinished = false;
15
16
    public int score() {
17
        return score;
18
    }
19
20
    public void dart(int i) {
21
        computeScore(i ,null);
0 ignored issues
show
Security Bug introduced by
"NullPointerException" will be thrown when invoking method "computeScore()".
Loading history...
22
    }
23
24
    public void dart(int score, Multiplier multiplier) {
25
        int mult = 0;
26
        switch (multiplier) {
27
            case DOUBLE:
28
                mult = 2;
29
                break;
30
            case TRIPLE:
31
                mult = 3;
32
                break;
33
        }
34
        int dartScore = mult*score;
35
        computeScore(dartScore, multiplier);
36
    }
37
38
    private void computeScore(int dartScore, Multiplier multiplier) {
39
        int newScore = score - dartScore;
40
        if (newScore == 0 && multiplier.equals(Multiplier.DOUBLE)) {
41
            isFinished = true;
42
            return;
43
        }
44
45
        if ((newScore == 1 && dartsLeft != 1) || (newScore <0)) {
46
            newScore = lastTurnScore;
47
            dartsLeft = 3;
48
            turn++;
49
        } else if (dartsLeft == 1) {
50
            lastTurnScore = newScore;
51
            dartsLeft = 3;
52
            turn++;
53
        } else {
54
            dartsLeft--;
55
        }
56
        score = newScore;
57
    }
58
59
    public int dartsLeft() {
60
        return dartsLeft;
61
    }
62
63
    public int getTurn() {
64
        return turn;
65
    }
66
67
    public boolean isFinished() {
68
        return isFinished;
69
    }
70
}
71