2016-05-29 20 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(); 
     } 
     }); 
    } 
}());