js/6/subclass.html

64 lines
1.4 KiB
HTML
Raw Permalink Normal View History

2024-10-03 11:29:13 -05:00
<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>