2017-11-18 84 views
0

我正在爲遊戲創建一個非常基本的精靈(它在Canvas/Context/LineTo中繪製)。我希望它的表達根據兩種不同的繪製方法隨機變化。這是我在這樣的嘗試:JavaScript Canvas - 是否可以繪製取決於Math.random?

  drawFace = function() { 
       if (Math.random() < 0.05) { 
        Player.drawhappyface(context); 
       } 
       else if (Math.random() < 0.1) { 
        Player.drawsadface(context); 
       } 
      } 

      drawFace(); 

我可以證實,drawhappyface和drawsadface繪製方法的工作獨立於本功能(分別畫一個微笑,一顰)。但是使用這個函數及其邏輯,他們根本就不會被繪製(玩家完全沒有臉)。那麼,我寫錯了嗎?我受以下模擬的啓發,該模擬不斷使用Math.random動畫表達式:http://www.blobsallad.se/

如果我改爲寫這樣的函數,那麼在畫布上絕對沒有繪製任何東西(所有其他精靈等也不是拉):

 drawFace = function (context) { 
      if (Math.random() < 0.05) { 
       Player.drawhappyface(context); 
      } 
      else if (Math.random() < 0.1) { 
       Player.drawsadface(context); 
      } 
     } 

     drawFace(); 
+0

ÿ你有一個'if ... else if ...',概率低,沒有'else',當然會有幾個例子,它什麼都不做。 –

+2

您的第二個'drawFace'需要一個名爲'context'的參數,但是當您調用它時,您會提供零個參數。即,你可以'drawFace()'而不是'drawFace(foo)'。爲什麼要告訴'drawFace',如果在你調用它的時候沒有提供一個參數,那麼你會期待一個參數?因此,函數 – apsillers

回答

1

的問題可能是你叫兩個if語句Math.random(),然後他們會有不同的值。呼叫Math.random()只有一次,並保存值每次你需要時間/調用drawFace嘗試像這樣:

drawFace = function() { 
 
    var randomNumber = Math.random(); 
 
    console.log(randomNumber); 
 
    if (randomNumber < 0.05) { 
 
     console.log('randomNumber < 0.05'); 
 
    } 
 
    else if (randomNumber < 0.1) { 
 
     console.log('randomNumber < 0.1'); 
 
    } 
 
} 
 

 
drawFace();

,如果你只是想畫快樂或悲傷的臉,你可以做更簡單if else

drawFace = function() { 
 
    var randomNumber = Math.random(); 
 
    console.log(randomNumber); 
 
    if (randomNumber < 0.5) { 
 
     console.log('draw happy face'); 
 
    } else { 
 
     console.log('draw sad face'); 
 
    } 
 
} 
 

 
drawFace();

+0

中的'context'是'undefined'嗨。感謝您的回答。這工作!不知道你爲什麼低調!我已經注意到,我的角色的快樂和悲傷的臉現在隨機繪製!謝謝!然而,與我的靈感(http://www.blobsallad.se/)不同的是,沒有繪製任何東西時存在明顯的差距,所以我將不得不在數學上工作/想出解決方法。 – spaceships111

+0

@ spaceships111現在看到它也會記錄'randomNumber'每次你點擊「運行代碼片段」你可能需要改變你的if else取決於你想要什麼。 – caramba

+0

我很抱歉打擾你,但我的happyface和sadface表情變化很快不斷變化,因此看起來很糟糕。這是非常不同的,它每秒都會順利變化:http://www.blobsallad.se/這對我來說很奇怪,因爲我對randomNumber使用了相同的數學。我可能不得不提出一個後續問題來擴展這一點。 – spaceships111

相關問題