2016-05-29 57 views
1

我在这里用我的JavaScript代码有一个小问题。我正在为一个学校项目制作一个游戏,它是用鱼竿点击(去除鱼)鱼。但是现在你无法赢得比赛,因为我没有想到如何在点击所有鱼的时候停止游戏。在这里是我的整个HTML代码和JavaScript代码,如果你想看看。还有一个jsbin链接,你可以将所有的CSS和html和javascript一起看到游戏中,让你更容易地看到我的意思。 是否有人知道如何让所有的鱼都被点击(移除),并发出警告说“你赢了!”时停止游戏。Javascript,当点击所有图像时打印出消息

感谢

https://jsbin.com/fihebiwiqi/edit?html,css,output

<!DOCTYPE html> 
    <html> 
    <head> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width"> 
     <title>JS Bin</title> 
    <script src="https://code.jquery.com/jquery-2.1.4.js"></script> 

    <link rel="stylesheet" type="text/css" href="css1.css"> 
    </head> 

    <body background="https://guideinparadise.files.wordpress.com/2013/01/down-below2.jpg"> 
     <h1>Fiskaren</h1> 
     <img id="fiskespo" src ="https://pixabay.com/static/uploads/photo/2014/03/24/17/07/fishing-rod-295096_960_720.png"> 
    <p>Sekunder:</p> 
     <p id="klocka"></p> 
     <form action="html.html"> 
     <input id='level1' type="submit" value="Level 1"> 
    </form> 
     <form action="html2.html"> 
     <input id='level2' type="submit" value="Level 2"> 
    </form> 
     <form action="html3.html"> 
     <input id='level3' type="submit" value="Level 3"> 
    </form> 
     <form action="html4.html"> 
     <input id='level4' type="submit" value="Level 4"> 
    </form> 
    <form action="html5.html"> 
     <input id='level5' type="submit" value="Bonus bana"> 
    </form> 


     <script> 
     document.body.style.cursor = 'none'; // tar bort muspekaren 
    $(document).mousemove(function (e) { //gör en funktion för musen 
     $('#fiskespo').offset({ // tar fram bilden 
      left: e.pageX + -190, //positonerar musen på bilden 
      top: e.pageY + -110//positonerar musen på bilden 
     }); 
    }); 

     var b = 1; 
     for (var i= 0; i<5;i++){ // skapar en loop som skriver ut 5 stycken bilder på fiskar 
     fisk(b);// länkar till funktionen fisk där bilden som ska ligga i loopen finns. 
     } 
    function positionering(element) { //skapar en funktion som ska göra allt random 
     var x = document.body.offsetHeight-element.clientHeight; 
     var y = document.body.offsetWidth-element.clientWidth; 
     var Xled = Math.floor(Math.random()*1*x + 300); 
     var Yled = Math.floor(Math.random()*y + 50); 

     return [Xled,Yled]; //stoppar funktionen och positionerar bilderna med hjälp av funktionen randomX och randomY 


    } 

    function fisk() { //skapar en funktion 

     var img = document.createElement('img'); //skapar ett elememt som heter img 
     img.className = 'fisk2'; 
     img.setAttribute("style", "position:fixed;");//positionerar dom 
     img.setAttribute("src", "http://res.freestockphotos.biz/pictures/16/16806-illustration-of-a-cartoon-blue-fish-pv.png"); // tar fram bilderna 
     img.setAttribute("width", "200");// bestämmer bredden på bilden 
     document.body.appendChild(img);// bifogar body till img 
     var xy = positionering(img); // ger xy random position 
     img.style.top = xy[0] + 'px'; //positionerar bilderna 
     img.style.left = xy[1] + 'px'; //positionerar bilderna 
     $(img).click(function(){ $(this).remove();}); //skapar en onclick funktion som gör så att om man klickar på bilden försvinner den 

    } 
     myTimer = setInterval(myCounter, 1000); //bestämmer hur lång tiden ska vara (1000 = 1 vanlig sekund) 
     var seconds = 0; //sekunden den börjar på 
     function myCounter() { 
     document.getElementById("klocka").innerHTML = ++seconds; //räknar klockan i sekunder 
    } 
     </script> 

    </body> 
    </html> 

回答

0

你有fisk(b);但你永远不使用这样的说法...
myTimer错过了var,应在代码顶部定义。

在for循环(而不是5
比编辑此行$(img).click(function(){ $(this).remove();});是创建一个变种

var fishes = 5; 

使用该VAR:

$(img).click(function(){ 

    fishes -= 1; 
    $(this).remove(); 

    if(!fishes) { 
     clearInterval(myTimer); 
     alert("It took you "+ seconds +" seconds."); 
    } 

}); 
+0

它完美的工作!感谢很多人 –

+0

@JohanWestborg不客气 –

+0

只是一个问题,我了解你所做的所有代码,除了:fishes - = 1;这行代码有什么功能? –

0

你可以用任何一个全球性的工作计数器或添加计数器到功能fisk()(功能可以像物体一样使用)

下面你会发现一个向函数添加一个变量的例子。如果您更喜欢使用glob变量,则可以用替换为fisk_counter--只要不要忘记在函数之外声明var fisk_counter = 0

出于演示目的,我已经删除了fisk()函数中的大部分代码,以便您可以看到更改。

function fisk() { //skapar en funktion 
    fisk.counter += 1; // increment counter 
    var img = document.createElement('img'); //skapar ett elememt som 
    $(img).click(function(){ 
     $(this).remove(); 
     fisk.counter -= 1; // decrement counter 
     if(fisk.counter === 0) { // check if all fishes have been removed 
      // GAME WON =) 
     } 
    }); 
} 
fisk.counter = 0; // Add counter to function 
0

因为你实际上从DOM中删除的鱼,还有在你再点击他们,一旦他们已被删除没有机会了,所以你应该能够只计算点击次数的闭包变量。尝试像这样

var totalNumFishes = 5; // use this in your loop that calls the fisk() function 

function gameWon() { 
    // Some code that tells you that you have won the game. 
} 

(function() { 
    var removed = 0; 
    function fisk() { 
     // Your setup code; 
     $(img).click(function() { 
     removed++; 
     if(removed === totalNumberOfFishes) { 
      gameWon(); 
     } else { 
      $(this).remove(); 
     } 
     }); 
    } 
}());