Passed
Push — main ( 6040c1...3e8a32 )
by Jenny
04:53
created

GameTraits::loopGameScore()   B

Complexity

Conditions 6
Paths 9

Size

Total Lines 44
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 24
CRAP Score 6.0163

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 6
eloc 24
c 1
b 0
f 0
nc 9
nop 1
dl 0
loc 44
ccs 24
cts 26
cp 0.9231
crap 6.0163
rs 8.9137
1
<?php
2
3
namespace App\Traits;
4
5
use App\Card\CardHand;
6
7
trait GameTraits
8
{
9 5
    public function loopGameScore(CardHand $hand): int
10
    {
11 5
        $score = 0;
12 5
        $aces = 0;
13 5
        $bigAce = 14;
14 5
        $smallAce = 1;
15 5
        $maxValue = 21;
16
17 5
        $scoreValues = array(
18 5
            'J' => 11,
19 5
            'Q' => 12,
20 5
            'K' => 13
21 5
        );
22
23 5
        $cards = $hand->getValues();
24
25 5
        if (empty($cards)) {
26 2
            return 0;
27
        }
28
29 3
        foreach ($cards as $card) {
30
31 3
            $value = $card[1];
32
33 3
            if ($value == 'A') {
34
                $aces += 1;
35
                continue;
36
            }
37
38 3
            if (array_key_exists($value, $scoreValues)) {
39 2
                $score += $scoreValues[$value];
40 2
                continue;
41
            }
42
43
            // Default
44 1
            $score += intval($value);
45
46
        }
47
48 3
        if ($score + $aces * $bigAce >= $maxValue) {
49 1
            return $score + $aces * $smallAce;
50
        }
51
52 2
        return $score + $aces * $bigAce;
53
    }
54
}
55