1
1
class Game
2
2
total_score : 0
3
3
players : new Array
4
+ score_history : new Array
4
5
5
6
new_player : (container ) ->
6
7
@players .push (new Player (container))
@@ -9,11 +10,16 @@ class Game
9
10
@total_score % 5 == 0 and @total_score > 0
10
11
11
12
is_surpassed : ->
12
- false
13
+ most_recent_three = @score_history [- 3 .. ]
14
+
15
+ return @score_history .length >= 3 and
16
+ Math .abs (@players [0 ].score - @players [1 ].score ) == 1 and
17
+ most_recent_three[0 ].container == most_recent_three[1 ].container and
18
+ most_recent_three[1 ].container == most_recent_three[2 ].container
13
19
14
20
sorted_scores : ->
15
21
scores = new Array
16
- scores .push player .score for player in @players
22
+ scores .push ( player .score for player in @players )
17
23
scores .sort (a, b) ->
18
24
a - b
19
25
.reverse ()
@@ -32,10 +38,7 @@ class Game
32
38
$ (@ ).removeClass (' active' )
33
39
34
40
surpassed_message : ->
35
- $surpassed = $ (' .surpassed' )
36
- $surpassed .find (' audio' ).get (0 ).play ()
37
- $surpassed .addClass (' active' ).on ' touchend' , ->
38
- $ (@ ).removeClass (' active' )
41
+ $ (' .surpassed' ).find (' audio' ).get (0 ).play ()
39
42
40
43
win_message : ->
41
44
$win_message = $ (' .win_message' )
@@ -44,15 +47,18 @@ class Game
44
47
window .location .reload ()
45
48
46
49
increment : (player , amount = 1 ) ->
47
- @total_score = @total_score + amount
48
50
player .increment (amount)
51
+ @total_score = @total_score + amount
52
+ @score_history .push
53
+ ' player' : player .container
54
+ ' score' : player .score
49
55
this
50
56
51
57
render : (player ) ->
58
+ player .render ()
52
59
this .next_server_message () if this .is_next_server ()
53
60
this .surpassed_message () if this .is_surpassed ()
54
61
this .win_message () if this .is_game_won ()
55
- player .render ()
56
62
57
63
class Player extends Game
58
64
score : 0
0 commit comments