所以我创造了这个小游戏"基于一个小的介绍youtube系列大约一年前,我最近发现了我的旧程序,并想知道如何扩展它。我的一个想法是,有一个名为" badcube"如果玩家要触摸它,它会重置游戏/分数。我想知道如何设置它以便每5分左右它为坏立方体添加一个相同的变量,使游戏更难。
编辑/更新:所以我根据Jared Bledsoe的回应添加了一些行,
我添加了变量var cubebadary = [];
并添加了if语句:if (score % 5 == 0){cubebadary.push(new cubebad());}
我添加了这个,因为您将在功能更新下的已发布代码中添加。但当我尝试通过一个简单的html页面运行它时,我检查控制台,它出现错误:
image of error
这是什么意思,我该怎么做/修复这个?
该计划:
var canvas = document.getElementById("maincanvas");
var context = canvas.getContext("2d");
var keys = [];
var width = 1920,
height = 1080,
speed = 10;
var score = 0;
var player = {
x: 10,
y: 10,
width: 20,
height: 20
};
var cubegood = {
x: Math.random() * (width - 10),
y: Math.random() * (height - 10),
width: 10,
height: 10
};
var cubebad = {
x: Math.random() * (width - 20),
y: Math.random() * (height - 20),
width: 20,
height: 20
};
var cubebadary= [];
window.addEventListener("keydown", function(e) {
keys[e.keyCode] = true;
}, false);
window.addEventListener("keyup", function(e) {
delete keys[e.keyCode];
}, false);
/*
up - 38
down - 40
left - 37
right - 39
*/
function game() {
update();
render();
}
function update() {
if (keys[38]) player.y -= speed;
if (keys[40]) player.y += speed;
if (keys[37]) player.x -= speed;
if (keys[39]) player.x += speed;
if (player.x < 0) player.x = 0;
if (player.x >= width - player.width) player.x = width - player.width;
if (player.y < 0) player.y = 0;
if (player.y >= height - player.height) player.y = height - player.height;
if (collision(player, cubegood)) processgood();
if (collision(player, cubebad)) processbad();
if (score & 5 == 0)
{
cubebadary.push(new cubebad());
}
}
function render() {
context.clearRect(0, 0, width, height)
context.fillStyle = "blue";
context.fillRect(player.x, player.y, player.width, player.height);
context.fillStyle = "red";
context.fillRect(cubegood.x, cubegood.y, cubegood.width, cubegood.height);
context.fillStyle = "black"
context.fillRect(cubebad.x, cubebad.y, cubebad.width, cubebad.height);
context.font = "bold 30px helvetica";
context.fillText(score, 30, 30);
}
function processgood(){
score++;
cubegood.x = Math.random() * (width-10);
cubegood.y = Math.random() * (height-10);
}
function processbad(){
location.reload(true);
}
function collision(first, second) {
return !(first.x > second.x + second.width ||
first.x + first.width < second.x ||
first.y > second.y + second.height ||
first.y + first.height < second.y);
}
setInterval(function() {
game();
}, 1000 / 30);
答案 0 :(得分:0)
首先,你需要一个数组来存储所有新敌人。
var enemies = [];
然后,当你想要创造一个新的敌人时:
enemies.push(new cubebad());
要在工作演示中查看此内容,请随时访问我正在处理的项目,该项目恰好可以处理大量敌人(小行星) - http://asteroidio.bitballoon.com/
从该游戏的第333行开始,您可以看到我所拥有的Asteroid对象,它可以作为创建所有小行星的模板。然后,一旦游戏开始我使用:
for (let i=0; i<foodValue; i++) {
asteroids[i] = new Asteroids;
}
创建了几百个小行星,并将它们放入一个数组中。