display functionality

master
Yorick van Pelt 2017-11-29 01:54:56 +01:00
parent 677a5dc01b
commit a50f6a6f91
2 changed files with 15 additions and 1 deletions

View File

@ -46,6 +46,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
</td>
<td>Sensor values<span id="SensorLabel"></span></td>
</tr>
<tr><th colspan="2" align="center">Display</th></tr>
<tr><td colspan="2" id="bayDisplay"></td></tr>
</tbody></table>
</body>
</html>

View File

@ -108,21 +108,29 @@ class Lemming extends Robot {
block = 'blue'
}
const {distL, distR, wallL, wallR} = vals
this.block = block
if (distL < wallL - 5 || distR < wallR - 5) {
this.state = 'block'
// if it senses a block
if (!block) return this.drive(2e-4) // no block: drive towards block?
if (block == 'blue') void 0; // if blue: ignore
if (block == 'red') return this.turnDeg(-90) // if red: leave block
} else if (wallL < Infinity || wallR < Infinity) {
this.state = 'wall'
// no block: turn left or right
if (!block) return this.turnDeg(90 * (Math.random() < 0.5 ? -1 : 1))
if (block == 'blue') return this.turnDeg(-90) // blue: leave
if (block == 'red') return this.turnDeg(90) // red: keep
} else {
this.state = 'nothing'
}
// by default: wander
this.rotate(+0.002);
this.rotate(+0.001);
this.drive(0.0002);
}
getDisplay() {
return "carrying " + this.block + "\nseeing " + this.state
}
}
var sim = null
class Simulation {
@ -319,6 +327,7 @@ class Bay {
}).join('')
document.getElementById('SensorLabel').innerHTML = sensorString;
document.getElementById('bayDisplay').innerHTML = robot.getDisplay()
}
}
transformMouse({x,y}) {
@ -374,6 +383,9 @@ Object.assign(Robot.prototype, {
*/
this.body.torque = torque;
},
getDisplay() {
return ""
},
drive(force=0) {
/* Apply a force to the robot to move it.