1

目前我有一个游戏可以绘制小行星和背景、分数等,一旦船撞到小行星,它就会将用户带到游戏结束屏幕,当他们再次点击播放按钮时,我希望游戏重置而不是开始从它刚刚撞上小行星开始。

function playGame() {
clearCtxMenu();
clearCtxGameOver();
drawBg();
startLoop();
score = 0;
document.addEventListener('keydown',checkKeyDown,false);
document.addEventListener('keyup',checkKeyUp,false);
}

这会将所有内容加载到游戏中并清除菜单/游戏结束屏幕中的图像。

function gameOver() {
stopLoop();
drawPlayAgain();
drawMenu();
ctxGameOver.fillText("Score: " + score, 320, 160);
ctxGameOver.fillText("Highscore: " + highScore, 300, 180);
}

当小行星被击中时调用的游戏结束函数。

我已经设置了,一旦你再次点击播放按钮,它就会调用 playGame 函数,但我希望它从头开始,而不是从刚刚完成的地方开始。

4

2 回答 2

0

对于问题后的任何人,我只是清空了数组,例如 ArrayName = [];

于 2013-03-17T20:05:54.333 回答
0

更清楚一点(因为我还不能评论):

在位于此处 ( http://www.w3schools.com/graphics/game_intro.asp ) 的 w3c 学校游戏教程中,我有一个关于如何在单页应用程序中重置游戏的问题并找到了这个问题。上面的答案是对的,但对我来说,我对它的理解还不够好,无法有一点“啊哈”的时刻。

因此,通过一个示例,它可能会帮助其他人了解修复的位置。看下面的代码:

var myGamePiece;
var myObstacles = [];
var myScore;

function startGame() {
    myGamePiece = new component(30, 30, "red", 10, 120);
    myGamePiece.gravity = 0.05;
    myScore = new component("30px", "Consolas", "black", 280, 40, "text");
    myGameArea.start();
 }

行“var myObstacles = [];” 保存障碍物的位置,如果它被重置,游戏将不得不制作新的。从而“重置”游戏。其余的由教程中的代码处理。

希望这可以帮助某人。

于 2016-10-26T18:02:33.490 回答