You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.3 KiB
77 lines
2.3 KiB
class GamingBoard extends Phaser.Scene {
|
|
constructor() {
|
|
super('GamingBoard');
|
|
}
|
|
|
|
preload() {
|
|
this.cameras.main.setViewport(WIDTH_WINDOW / 10, HEIGHT_WINDOW / 10, WIDTH_MAP, WIDTH_MAP);
|
|
}
|
|
|
|
create() {
|
|
this.add.image(0, 0, 'background').alpha = 0.1;
|
|
|
|
this.listRobot = [];
|
|
this.listRobot.push(new Robot(WIDTH_MAP * 0.1, WIDTH_MAP * 0.1, WIDTH_MAP * 0.9, WIDTH_MAP * 0.9, 0x6666ff, this));
|
|
this.listRobot.push(new Robot(WIDTH_MAP * 0.1, WIDTH_MAP * 0.1, WIDTH_MAP * 0.2, WIDTH_MAP * 0.1, 0xff33cc, this));
|
|
this.listRobot.push(new Robot(WIDTH_MAP * 0.1, WIDTH_MAP * 0.1, WIDTH_MAP * 0.1, WIDTH_MAP * 0.9, 0xffffff, this));
|
|
|
|
for (let i = 0; i < this.listRobot.length; i++) {
|
|
this.chooseTarget(this.listRobot[i]);
|
|
}
|
|
|
|
this.events.on('resume', () => this.resume());
|
|
}
|
|
|
|
update(time, delta) {
|
|
super.update(time, delta);
|
|
|
|
this.listRobot.forEach(function (robot) {
|
|
robot.read();
|
|
})
|
|
|
|
for (let i = 0; i < this.listRobot.length; i++) {
|
|
if (!this.listRobot[i].isAlive()) {
|
|
this.listRobot.splice(i, 1);
|
|
i -= 1;
|
|
} else {
|
|
if (!this.listRobot[i].haveTarget()) {
|
|
this.chooseTarget(this.listRobot[i]);
|
|
} else {
|
|
this.listRobot[i].updateTarget();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
resume() {
|
|
}
|
|
|
|
modifyNodes(lNodes) {
|
|
this.listRobot[0].cleanNodes();
|
|
lNodes.forEach(element => this.listRobot[0].addNode(element));
|
|
}
|
|
|
|
chooseTarget(robot) {
|
|
let minDist = WIDTH_MAP * 2;
|
|
let l = [];
|
|
this.listRobot.forEach(function (item) {
|
|
if (item !== robot && item.isAlive()) {
|
|
let hypot = Math.hypot(item.x - robot.x, item.y - robot.y);
|
|
if (minDist >= hypot) {
|
|
if (minDist > hypot) {
|
|
minDist = hypot;
|
|
l = [];
|
|
}
|
|
l.push(item);
|
|
}
|
|
}
|
|
});
|
|
if (this.listRobot.length > 1) {
|
|
robot.setTarget(l[Math.floor(Math.random() * (l.length + 1))]);
|
|
} else {
|
|
robot.setTarget(l[0]);
|
|
}
|
|
}
|
|
|
|
|
|
} |