2017-08-29 77 views
0
function startGame(diff){ 
if (diff === 'easy'){ 
    loadEasy(); 
} 
} 

function loadEasy(){ 
difficultyPage.style.display = 'none'; 
game.style.display = 'block'; 
medHardTemplate.style.display = 'none'; 
easyTemplate.style.display = 'block'; 

newGame.addEventListener('click', function(){ 
    changeDifficulty('easy'); 
}); 

colors = randomColorsArray(3); 

correctColor = colorToChoose(colors); 
colorRGB.innerHTML = correctColor; 

for (var i = 0; i < easySquares.length; i++) { 
    //add colors to squares 
    easySquares[i].style.backgroundColor = colors[i]; 

easySquares[i].addEventListener('click', function(){ 
    var clickedColor = this.style.backgroundColor; 

    if(clickedColor === correctColor) { 
    changeColorsOnWinEasy(correctColor); 
    message.innerHTML = "Correct!"  
    again.textContent = "Play Again?" 
    again.addEventListener('click', function(){ 
     again.textContent = "NEW COLORS"; 
     header.style.backgroundColor = "#232323"; 
     colorRGB.style.backgroundColor = "#232323"; 
     message.innerHTML = ""; 
     changeDifficulty('easy'); 
    }); 
} 
else { 
    this.style.backgroundColor = "#232323"; 
    message.innerHTML = "Wrong!" 
} 
}); 
} 
} 

我不知道何時返回該函數,以便我沒有很多同時運行的函數,如果我將newGame按鈕垃圾郵件導致我的應用程序滯後。我加了一個回報;在loadEasy函數的結尾處,但這似乎沒有做任何事情。在我遞歸函數之前結束一個函數

+0

什麼叫第一? loadEasy或startGame? – ant45de

+1

這可能是我見過的執行如此簡單任務的效率最低的代碼。 –

+0

startGame首先被調用 – Trippze

回答

1

你可以設置一個標誌,指示當前的遊戲類型,那麼你不需要重新綁定一個按鈕處理程序每​​次,你只需要定義按鈕啓動當前遊戲

let gametype = "easy": 

function startGame(diff){ 
    gametype = diff || gametype; 
    if (gametype === 'easy'){ 
    loadEasy(); 
    } 
    else { 
    throw Error('unknown gametype: ' + gametype); 
    } 
} 

function loadEasy(){ 
    //... Whatever 
} 

newGame.addEventListener('onclick', function(){ 
    startGame(); 
}); 

於是開始與目前的遊戲類型遊戲做:

startGame(); 

要開始不同的一個,傳遞一個參數:

startGame("medium"); 
+0

哇,工作,謝謝你真是太棒了!爲什麼JS讀空參數爲false?這也是聰明的OR邏輯,是什麼幫助你以這種方式思考?這是一堂課還是僅僅是經驗? – Trippze

+0

@trippze一個空參數是未定義的,undefined是虛假的。該技巧稱爲*短路*,並通過在SO上寫回答來學習它;;) –