-
Notifications
You must be signed in to change notification settings - Fork 12
/
pony_mover.js
53 lines (45 loc) · 1.16 KB
/
pony_mover.js
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
50
51
52
53
function PonyMover($pony, $log) {
this.$pony = $pony
this.$log = $log
// Stack of all the moves. Eg.: ['left', 'up', 'down']
this.moves = []
}
PonyMover.prototype.moveDirection = function(direction) {
switch (direction) {
case 'up':
this.$pony.animate({'top': '-=30px'})
break
case 'down':
this.$pony.animate({'top': '+=30px'})
break
case 'left':
this.$pony.animate({'left': '-=30px'})
break
case 'right':
this.$pony.animate({'left': '+=30px'})
break
}
}
PonyMover.prototype.move = function(keyCode) {
var direction = keyCodeToName[keyCode] // Convert key code to direction name
if (direction) {
this.moveDirection(direction)
this.moves.push(direction)
this.$log.append('<li>' + direction + '</li>')
}
}
PonyMover.prototype.oppositeDirections = {
'up': 'down',
'down': 'up',
'left': 'right',
'right': 'left'
}
PonyMover.prototype.undo = function() {
// Get the last move
var direction = this.moves.pop()
if (direction) {
var oppositeDirection = this.oppositeDirections[direction]
this.moveDirection(oppositeDirection)
this.$log.find('li:last').remove()
}
}