我正在爲我的計算機課程製作一個遊戲,玩家在網格中移動,並根據他們的設置以及他們在playerPower上移動的地形應該減少不同。如何檢查箱子背景顏色...?
當玩家移動時,我需要檢查他們登陸的盒子的顏色是爲了確定扣除的電量。我似乎無法理解如何去做。
這裏是的jsfiddle:http://jsfiddle.net/nZ8vA/
的評論://HERE IS WHERE I NEED TO CHECK THE COLOUR
是我需要檢查框的顏色,當玩家移動到它。
我正在爲我的計算機課程製作一個遊戲,玩家在網格中移動,並根據他們的設置以及他們在playerPower上移動的地形應該減少不同。如何檢查箱子背景顏色...?
當玩家移動時,我需要檢查他們登陸的盒子的顏色是爲了確定扣除的電量。我似乎無法理解如何去做。
這裏是的jsfiddle:http://jsfiddle.net/nZ8vA/
的評論://HERE IS WHERE I NEED TO CHECK THE COLOUR
是我需要檢查框的顏色,當玩家移動到它。
我強烈建議使用單獨的變量記錄玩家的位置,因爲訪問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開發人員工具檢查控制檯,以防您想驗證它是否返回正確的顏色。
希望這會有所幫助!如果您有任何問題,請告訴我。