2014-03-30 42 views
-1

我正在爲我的計算機課程製作一個遊戲,玩家在網格中移動,並根據他們的設置以及他們在playerPower上移動的地形應該減少不同。如何檢查箱子背景顏色...?

當玩家移動時,我需要檢查他們登陸的盒子的顏色是爲了確定扣除的電量。我似乎無法理解如何去做。

這裏是的jsfiddle:http://jsfiddle.net/nZ8vA/

的評論://HERE IS WHERE I NEED TO CHECK THE COLOUR是我需要檢查框的顏色,當玩家移動到它。

回答

2

我強烈建議使用單獨的變量記錄玩家的位置,因爲訪問JavaScript變量比試圖從CSS定位派生它更容易/更快,並且從DOM本身計算出背景顏色。不管怎麼說,這裏有一個快速的解決方案,我扔在一起,我想給你你想要的東西:

我加入這個變量來跟蹤玩家的位置:

// x, y coordinates of player 
var playerPos = [0, 0]; 

然後,檢查顏色,我把優勢的先前定義的map數組,它給出了每個地圖單元格的顏色。我寫了一個帶有兩個座標的小函數,並將它們饋送到地圖數組中以獲取顏色。使用開關/箱後,可讓您相應每種顏色迴應:

// Checks colour against predefined map 
function checkCol(cell, row){ 
    var color = map[row][cell]; 

    switch (color){ 
     // Brown 
     case "b": 
      break; 
     // Green 
     case "g": 
      break; 
     // White 
     case "w": 
      break; 

     default: 
      break; 
    } 
} 

最後,每按一次鍵,播放器位置的座標更新。一個辦法做到這一點(而地圖的邊界內保持)是像這樣(請注意,每個必須單獨代碼中的按鍵中放置相應的情況下):

// Left 
playerPos[0] = Math.max(0, playerPos[0] - 1); 

// Up 
playerPos[1] = Math.max(0, playerPos[1] - 1); 

// Right (you didn't specify you wanted this in your code with a comment, so just omit it if you don't want it) 
playerPos[0] = Math.min(map[0].length - 1, playerPos[0] + 1); 

// Down 
playerPos[1] = Math.min(map.length - 1, playerPos[1] + 1); 

// After each case, just call this to check the colour at the given position: 
checkCol(playerPos[0], playerPos[1]); 

該解決方案保留JavaScript內的所有邏輯,並且不需要檢查任何元素的CSS。

下面是更新後的JSFiddle,向您展示實施的代碼。使用Web開發人員工具檢查控制檯,以防您想驗證它是否返回正確的顏色。

希望這會有所幫助!如果您有任何問題,請告訴我。