Revision 271
lemmings: modified turning and speed slightly to allow for better straight line following
lemmings.c | ||
---|---|---|
165 | 165 |
error = bom_id - 20; |
166 | 166 |
} |
167 | 167 |
|
168 |
*turn_speed = error * 20; // set turn speed |
|
169 |
*speed = -SPEED * error * error / 25 + SPEED; // set speed |
|
168 |
// set turn speed and main speed |
|
169 |
// if error is small, turn slowly and travel at normal speed |
|
170 |
// if error is large, turn faster and travel at reduced speed |
|
171 |
switch(error) |
|
172 |
{ |
|
173 |
case 0: |
|
174 |
*turn_speed = 0; |
|
175 |
*speed = SPEED; |
|
176 |
return; |
|
177 |
case 1: |
|
178 |
case -1: |
|
179 |
*turn_speed = error * 5; |
|
180 |
*speed = SPEED; |
|
181 |
return; |
|
182 |
case 2: |
|
183 |
case -2: |
|
184 |
*turn_speed = error * 8; |
|
185 |
*speed = SPEED; |
|
186 |
return; |
|
187 |
case 3: |
|
188 |
case -3: |
|
189 |
*turn_speed = error * 12; |
|
190 |
*speed = SPEED; |
|
191 |
return; |
|
192 |
case 4: |
|
193 |
case -4: |
|
194 |
*turn_speed = error * 16; |
|
195 |
*speed = SPEED - SPEED * error * error / 36; |
|
196 |
return; |
|
197 |
} |
|
198 |
// if not in a case |
|
199 |
*turn_speed = error * 20; |
|
200 |
*speed = SPEED - SPEED * error * error / 36; |
|
170 | 201 |
} |
171 | 202 |
|
172 | 203 |
// create connected components and pick a leader for each chain |
Also available in: Unified diff