64 lines
1.4 KiB
HTML
64 lines
1.4 KiB
HTML
<html><pre id="log"></pre><body><script>
|
|
!function(){var n=document.getElementById("log");console.log=function(){for(var i=0;i<arguments.length;i++)"object"==typeof arguments[i]?n.innerHTML+=(JSON&&JSON.stringify?JSON.stringify(arguments[i],void 0,2):arguments[i])+"<br />":n.innerHTML+=arguments[i]+"<br />"}}();
|
|
|
|
class Actor {
|
|
constructor(startX, startY) {
|
|
this.x = startX;
|
|
this.y = startY;
|
|
}
|
|
|
|
move(dx, dy) {
|
|
this.x += dx;
|
|
this.y += dy;
|
|
}
|
|
distanceTo(otherActor) {
|
|
let dx = otherActor.x - this.x;
|
|
let dy = otherActor.y - this.y;
|
|
return Math.hypot(dx, dy);
|
|
}
|
|
}
|
|
|
|
class Player extends Actor {
|
|
constructor(startX, startY) {
|
|
super(startX, startY);
|
|
this.hp = 100;
|
|
}
|
|
move(dx, dy) {
|
|
this.x += dx;
|
|
this.y += dy;
|
|
}
|
|
}
|
|
|
|
class Enemy extends Actor {
|
|
attack(player) {
|
|
if (this.distanceTo(player) < 4) {
|
|
player.hp -= 10;
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
class Follower extends Actor{
|
|
constructor(startX,startY, player){
|
|
super(startX,startY)
|
|
this.player = player
|
|
}
|
|
follow(player){
|
|
this.x = player.x
|
|
this.y = player.y
|
|
}
|
|
}
|
|
|
|
let player = new Player(0,0);
|
|
let follower = new Follower(0,0);
|
|
let enemy = new Enemy(0,0);
|
|
|
|
player.move(10,10)
|
|
console.log(player.x, player.y)
|
|
console.log(follower.x,follower.y)
|
|
follower.follow(player)
|
|
console.log(follower.x,follower.y)
|
|
|
|
</script></body></html> |