gpt4 book ai didi

javascript - 为什么游戏时间缩短了一半而不是 2 秒?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:38:16 25 4
gpt4 key购买 nike

我正在尝试用纯 Javascript 构建游戏作为练习。

游戏的目的是在计时器用完之前回答一个随机的数学练习。时间由落在某人头上的鸡蛋代表;如果您正确回答了所有数学练习,您将重新开始,但时间将缩短 2 秒。

我的问题:在游戏的第 1 级,时间按预期运行,但到了第 2 级,时间缩短了一半。发生这种情况的原因是什么?

相关代码:

var gameTime;
//function responsible for starting The game
function StartGame() {
...
...
...
checkLevel();
getNewTime();
speed=getNewSpeed();
dh=setInterval("move(egg)",gameTime);
...
}//End start game

function checkLevel() {

if(document.getElementById("begginer").checked==true) {
fillNumbervalue(true);
gameTime=30;
}
else {
fillNumbervalue(false);
gameTime=60;
} //End else
}//End of checkLevel

function getNewSpeed () {
return (distanceBetweenEggToYudale/gameTime); //distanceBetweenEggToYudale=310
}//End function

//if player pass level this function will get down by 2 seconds the time
function getNewTime() {
for(var i=0;i<levelCount;i++)
gameTime-=2;
}//end getNewTime

//function responsible for moving The Egg
function move(eggBall) {
eggBall.imagePositionY=eggBall.imagePositionY+(gameTime/1000)*speed;
//image postion=0 at the beginning
eggBall.element.style.top=eggBall.imagePositionY+"px";
...
...
}//End move

//when the player push the answer button
function answerValidation() {
var answers=new Array();
for(var i=0;i<result.length;i++)
answers[i]=document.getElementById("txtAnswer"+(i+1)).value;

if(result[0]!=answers[0] || result[1]!=answers[1] || result[2]!=answers[2])
gameOverScreen();
else
{
score++;
levelCount++;
init(); //Initial the egg position onload of the body element
clearTxtRows();
gameTime-=2;

StartGame();
}//End else


}//End anwser validation

我知道这个问题充满了代码,所以如果有人能提供帮助,我将不胜感激。

最佳答案

问题是您正在重复使用 gameTime 变量,而您想要做的是同时开始并从中递减。所以你需要一个 startGameTime 变量。

只有一个 gameTime 变量:

http://jsfiddle.net/DPTJ3/1/

使用 startGameTime 变量在递减之前重新启动 gameTime 值:

http://jsfiddle.net/DPTJ3/

function getNewTime() {
gameTime = startGameTime;
for (var i = 0; i < levelCount; i++) {
gameTime -= 2;
}
}

function logData() {
log = document.getElementById('log');
log.innerHTML += "LEVEL: " + levelCount + "\nGTIME: " + gameTime + "\n\n";
}

var levelCount = 1;
var startGameTime = 60;
var gameTime = 60;

logData();

for (var i = 0; i < 10; i++) {
levelCount++;
getNewTime();
logData();
}

输出

LEVEL: 1
GTIME: 60

LEVEL: 2
GTIME: 56

LEVEL: 3
GTIME: 54

LEVEL: 4
GTIME: 52

LEVEL: 5
GTIME: 50

LEVEL: 6
GTIME: 48

LEVEL: 7
GTIME: 46

LEVEL: 8
GTIME: 44

LEVEL: 9
GTIME: 42

LEVEL: 10
GTIME: 40

LEVEL: 11
GTIME: 38

编辑

此外,如果您想准确地递减,您可能应该考虑到这样一个事实,即第一级实际上是 0 而不是 getNewTime() 函数 的一个。如果您注意到,它似乎将第一个递减了两个级别。要解决此问题,您可以:

for (var i = 0; i < levelCount - 1; i++) { // Notice the - 1

关于javascript - 为什么游戏时间缩短了一半而不是 2 秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6169567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com