-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtrack.coffee
49 lines (33 loc) · 877 Bytes
/
track.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Thingy to generate the track.
class TrackGenerator
constructor: (length) ->
#
# Private variables:
#
visibleRows = []
rowCount = 0
@rowCount = -> rowCount
addRow = (empty) =>
row = @newRow(empty).join("")
visibleRows.push(row)
rowCount++
@advance = (empty) ->
addRow(empty)
visibleRows.shift()
@at = (index) -> visibleRows[index]
@rows = -> visibleRows.slice()
#
# Initialization
#
# Lead-in is always clear
for r in [1..length]
visibleRows.push(" ")
rnd: (max) -> Math.floor(Math.random() * max)
oneIn: (max) -> @rnd(max) == 0
place: (item, row) -> row[@rnd(4)] = item
newRow: (empty) =>
row = [' ', ' ', ' ', ' ']
return row if empty or not @oneIn(3)
@place('/', row) while @oneIn(3)
@place('*', row) while @oneIn(3)
return row