我是OOP Javascript的新手,我正在尝试通过构建游戏来学习。在游戏中,你基本上是一个正方形,其他正方形从右边射向你。听起来很容易。你可以通过向上或向下移动来避免它们,如果它们触碰你,你就会死亡。我已经制作了一个Player对象:
function Player() {
this.color = "#0f0";
this.posx = canvas.width / 5;
this.posy = canvas.height / 2;
this.width = canvas.width / 23;
this.height = this.width;
this.jetpack = false;
this.speed = 7;
this.draw = function() {
context.fillStyle = this.color;
context.fillRect(this.posx, this.posy, this.width, this.height);
}
this.fly = function() {
if (this.jetpack == true) {
this.posy -= this.speed;
} else {
this.posy += this.speed * 1.5;
}
if (this.posy >= canvas.height - this.height) {
this.posy = canvas.height - this.height;
}
if (this.posy <= 0) {
this.posy = 0;
}
}
}
然后我可以用
来定义它var player = new Player();
这很好用。
我有一个主要功能,基本上是一个间隔,每秒运行30次,重复以下代码:
context.fillStyle = "#000";
context.fillRect(0, 0, canvas.width, canvas.height);
player.draw();
player.fly();
这会吸引玩家并让你移动它就好了。 问题来自敌人。我将Enemy对象定义为:
function Enemy(posy) {
this.color = "#f00";
this.posy = posy;
this.posx = canvas.width;
this.width = canvas.width / 23;
this.height = this.width;
this.speed = 5;
this.draw = function() {
context.fillStyle = this.color;
context.fillRect(this.posx, this.posy, this.width, this.height);
}
this.move = function() {
this.posx -= this.speed;
}
}
但我不知道如何恰当地召唤它。目标是它每隔一秒左右产生一个新的,它们都会移动。我不知道该怎么做..在网上很难找到帮助,因为我甚至不知道它是如何调用的,因此,我不确定我应该搜索什么以及如何正确地表达我的想法。我希望这很清楚......
答案 0 :(得分:1)
首先,你将创造一个与玩家相同的敌人:
const enemy = new Enemy(123); // change 123 to a random value
你要做的就是在创建它们时将这些敌人放入阵列中:
// make sure this is in an appropriate place to maintain proper context
// probably the same level you define your player variable
const enemies = [];
function addEnemy() {
enemies.push(new Enemy(Math.random() * screenHeight)); // screenHeight will be whatever the max height for them to spawn is.
}
然后,这将让您遍历该函数并将它们全部移动:
enemies.forEach(enemy => enemy.move());
在某些时候,你还需要移除敌人(当他们击中某些东西或离开屏幕时),你将要使用splice()
:
enemies.splice(indexOfEnemyToRemove, 1);