Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么比赛时间缩短了一半而不是2秒?_Javascript_Javascript Events - Fatal编程技术网

Javascript 为什么比赛时间缩短了一半而不是2秒?

Javascript 为什么比赛时间缩短了一半而不是2秒?,javascript,javascript-events,Javascript,Javascript Events,我试图用纯Javascript构建一个游戏作为练习 游戏的目的是在计时器用完之前回答一个随机的数学练习。时间由落在某人头上的蛋来表示;如果你正确回答了所有的数学练习,你将重新开始,但时间将缩短2秒 我的问题是:在游戏的1级,时间按预期进行,但到了2级,时间缩短了一半。是什么导致了这种情况 相关代码: var gameTime; //function responsible for starting The game function StartGame() { ... ...

我试图用纯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 
var游戏时间;
//负责启动游戏的功能
函数startName(){
...
...
...
checkLevel();
getNewTime();
速度=getNewSpeed();
dh=设定间隔(“移动(蛋)”,游戏时间;
...             
}//结束-开始游戏
函数checkLevel(){
if(document.getElementById(“begginer”).checked==true){
fillNumbervalue(true);
游戏时间=30;
}
否则{
fillNumbervalue(false);
游戏时间=60;
}//结束其他
}//检查级别结束
函数getNewSpeed(){
return(distancebetweenegtoyudale/gameTime);//distancebetweenegtoyudale=310
}//端函数
//如果玩家通过关卡,该功能将下降2秒
函数getNewTime(){

对于(var i=0;i而言,问题在于您正在重用
gameTime
变量,而您要做的是在同一时间开始并从该时间开始递减。因此,您需要一个
startGameTime
变量

仅使用
gameTime
变量:

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

编辑

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
此外,如果您想精确地递减,您可能应该考虑到getNewTime()函数的第一个级别实际上是0而不是1。如果您注意到,它似乎将第一个级别递减了两个级别。要解决此问题,您可以:

for (var i = 0; i < levelCount - 1; i++) { // Notice the - 1
for(var i=0;i
你的工作做得很好。请努力练习你的打字和语法。有一个清晰简洁的问题包括一个写得很好并经过个人编辑的问题。这有助于其他人看出你是认真的。:)还有,在给它贴上作业标签方面的荣誉。:d当我写上“提醒(游戏时间)”和提醒(“速度”)时为了检查变量值是否正确。输出:gameTime=30在级别1 gameTime=28中…在级别2中,我尝试按照你告诉我的做,但没有成功。我认为问题可能在于:egg.imagePosition=egg.imagePosition+(速度/1000)*游戏时间有什么建议吗?顺便说一句,英语是我的第二语言,所以我会努力学习语法:)@liron-首先,你需要使用
控制台
(在Firefox中,使用Firebug,在Chrome中,它已经存在了)。其次,你确定每个级别的时间的方法是有缺陷的(如我上面所示)。蛋的位置不应该决定关卡的游戏时间(想想看),它只是当前关卡游戏的一个因素。如果你有在线版本的游戏,那会有帮助。如果你更方便的话,我可以尝试上传这个“游戏”对于一个免费的网站主机!?@liron-看看完整的代码,我认为真正的问题与移动鸡蛋和检测与Yudale头部碰撞的方法有关。请看这里:注意,我已经改变了一些事情,包括为我自己的可读性重新格式化代码。我所做的是为鸡蛋置换创建了两个新变量:increincrementTime和incrementUnit。(请参阅下一条注释)incrementTime表示为setInterval提供数据的时间(以毫秒为单位);这将使其一致运行。incrementUnit是移动距离的函数,并考虑了gameTime和incrementTime。此外,我还创建了一些调试变量(startTime和endTime)因此,我可以检查运行时间(这些使用console.log(),或者使用FF中的Firebug,或者使用内置控制台的Chrome)。运行时间告诉我它是否准确。您选择的30秒恰好与您使用的有缺陷的计算一致,这就是为什么时间似乎有效,但没有。
for (var i = 0; i < levelCount - 1; i++) { // Notice the - 1