@@ -5,7 +5,6 @@ function getFish(board) {
55function Fish ( board ) {
66 this . _board = board ;
77 this . _pins = [ ] ;
8- this . _speed = 2 ;
98 this . _timer = null ;
109 var self = this ;
1110 [ 0 , 2 , 4 , 5 , 12 , 13 , 14 , 15 ] . forEach ( function ( val ) {
@@ -51,11 +50,13 @@ Fish.prototype.sink = function (secs) {
5150Fish . prototype . left = function ( secs , speed ) {
5251 var self = this ;
5352 return new Promise ( function ( resolve , reject ) {
54- speed = speed || self . _speed ;
55- self . _speed = speed ;
56- self . flapLeft ( ) ;
53+ if ( self . _timer ) {
54+ self . stop ( ) ;
55+ }
56+
57+ self . flap ( 'left' , speed ) ;
5758 setTimeout ( function ( ) {
58- self . stopFlap ( ) ;
59+ self . stop ( ) ;
5960 resolve ( ) ;
6061 } , secs * 1000 ) ;
6162 } ) ;
@@ -64,11 +65,13 @@ Fish.prototype.left = function (secs, speed) {
6465Fish . prototype . right = function ( secs , speed ) {
6566 var self = this ;
6667 return new Promise ( function ( resolve , reject ) {
67- speed = speed || self . _speed ;
68- self . _speed = speed ;
69- self . flapRight ( ) ;
68+ if ( self . _timer ) {
69+ self . stop ( ) ;
70+ }
71+
72+ self . flap ( 'right' , speed ) ;
7073 setTimeout ( function ( ) {
71- self . stopFlap ( ) ;
74+ self . stop ( ) ;
7275 resolve ( ) ;
7376 } , secs * 1000 ) ;
7477 } ) ;
@@ -77,87 +80,65 @@ Fish.prototype.right = function (secs, speed) {
7780Fish . prototype . move = function ( secs , speed ) {
7881 var self = this ;
7982 return new Promise ( function ( resolve , reject ) {
80- speed = speed || self . _speed ;
81- self . _speed = speed ;
82- self . flap ( ) ;
83+ if ( self . _timer ) {
84+ self . stop ( ) ;
85+ }
86+
87+ self . flap ( speed ) ;
8388 setTimeout ( function ( ) {
84- self . stopFlap ( ) ;
89+ self . stop ( ) ;
8590 resolve ( ) ;
8691 } , secs * 1000 ) ;
8792 } ) ;
8893} ;
8994
90- Fish . prototype . flap = function ( ) {
91- var self = this ;
92- if ( self . _timer ) {
93- self . stopFlap ( ) ;
95+ Fish . prototype . flap = function ( direction , speed ) {
96+ var lSpeed , rSpeed , self = this ;
97+
98+ if ( isNaN ( speed = parseInt ( speed ) ) ) {
99+ if ( isNaN ( speed = parseInt ( direction ) ) ) {
100+ speed = 1 ;
101+ }
94102 }
95- self . _pins [ 4 ] . on ( ) ;
96- self . _pins [ 5 ] . on ( ) ;
97- self . _pins [ 6 ] . off ( ) ;
98- self . _pins [ 7 ] . off ( ) ;
99- self . _timer = setTimeout ( function ( ) {
100- self . _pins [ 4 ] . off ( ) ;
101- self . _pins [ 5 ] . off ( ) ;
102- self . _pins [ 6 ] . on ( ) ;
103- self . _pins [ 7 ] . on ( ) ;
104- self . _timer = setTimeout ( function ( ) {
105- if ( self . _timer ) {
106- self . flap ( ) ;
107- }
108- } , Fish . SPEED [ self . _speed ] ) ;
109- } , Fish . SPEED [ self . _speed ] ) ;
110- } ;
111103
112- Fish . prototype . flapRight = function ( ) {
113- var self = this ;
114- if ( self . _timer ) {
115- self . stopFlap ( ) ;
104+ switch ( direction ) {
105+ case 'left' :
106+ lSpeed = 2 * speed ;
107+ rSpeed = speed ;
108+ break ;
109+ case 'right' :
110+ lSpeed = speed ;
111+ rSpeed = 2 * speed ;
112+ break ;
113+ default :
114+ lSpeed = rSpeed = speed ;
115+ break ;
116116 }
117+
117118 self . _pins [ 4 ] . on ( ) ;
118119 self . _pins [ 5 ] . on ( ) ;
119120 self . _pins [ 6 ] . off ( ) ;
120121 self . _pins [ 7 ] . off ( ) ;
121122 self . _timer = setTimeout ( function ( ) {
122123 self . _pins [ 4 ] . off ( ) ;
123124 self . _pins [ 5 ] . off ( ) ;
124- self . _pins [ 6 ] . off ( ) ;
125- self . _pins [ 7 ] . off ( ) ;
126- self . _timer = setTimeout ( function ( ) {
127- if ( self . _timer ) {
128- self . flapRight ( ) ;
129- }
130- } , Fish . SPEED [ self . _speed ] ) ;
131- } , Fish . SPEED [ self . _speed ] ) ;
132- } ;
133-
134- Fish . prototype . flapLeft = function ( ) {
135- var self = this ;
136- if ( self . _timer ) {
137- self . stopFlap ( ) ;
138- }
139- self . _pins [ 4 ] . off ( ) ;
140- self . _pins [ 5 ] . off ( ) ;
141- self . _pins [ 6 ] . on ( ) ;
142- self . _pins [ 7 ] . on ( ) ;
143- self . _timer = setTimeout ( function ( ) {
144- self . _pins [ 4 ] . off ( ) ;
145- self . _pins [ 5 ] . off ( ) ;
146- self . _pins [ 6 ] . off ( ) ;
147- self . _pins [ 7 ] . off ( ) ;
125+ self . _pins [ 6 ] . on ( ) ;
126+ self . _pins [ 7 ] . on ( ) ;
148127 self . _timer = setTimeout ( function ( ) {
149128 if ( self . _timer ) {
150- self . flapLeft ( ) ;
129+ self . flap ( direction , speed ) ;
151130 }
152- } , Fish . SPEED [ self . _speed ] ) ;
153- } , Fish . SPEED [ self . _speed ] ) ;
131+ } , 1000 / lSpeed ) ;
132+ } , 1000 / rSpeed ) ;
154133} ;
155134
156- Fish . prototype . stopFlap = function ( ) {
135+ Fish . prototype . stop = function ( ) {
157136 if ( this . _timer ) {
158137 clearTimeout ( this . _timer ) ;
159138 delete this . _timer ;
139+ this . _pins [ 4 ] . off ( ) ;
140+ this . _pins [ 5 ] . off ( ) ;
141+ this . _pins [ 6 ] . off ( ) ;
142+ this . _pins [ 7 ] . off ( ) ;
160143 }
161144} ;
162-
163- Fish . SPEED = [ 1500 , 900 , 300 ] ;
0 commit comments