我正在使用HTML5畫布構建遊戲。HTML5畫布遊戲開發複雜化
你可以在這裏找到它,以及源代碼:www.techgoldmine.com。
我會做一個jsFiddle,但是在所有的誠實方面,我的注意力都太短了(而且我自己也太愚蠢)去了解它是如何工作的。
我目前被困在一個函數,該函數會查看畫布兩邊某些元素的位置,並移動它們以使它們覆蓋的y軸區域不重疊。我稱他們爲渦輪機,但薄的白色矩形會更準確。我建議刷新幾次,直觀地瞭解發生了什麼。
這是滋生渦輪機的功能:
function gameStateNewLevel(){
for (var i = 0; i < 4; i++){
turbine = {};
turbine.width = 10;
turbine.height = 150;
turbine.y = Math.floor(Math.random()*600)
if (Math.random()*10 > 5){
turbine.side = leftSide;
}else{
turbine.side = rightSide;
}
turbine.render = function(){
context.fillStyle = "#FFFFFF"
context.fillRect(turbine.side, turbine.y, turbine.width,turbine.height);
}
turbine.PositionTop = turbine.y;
turbine.PositionBottom = turbine.y + turbine.height;
turbines.push(turbine);
}
context.fillStyle = "#FFFFFF"
switchGameState(GAME_STATE_PLAYER_START);
}
到目前爲止,我已經建立(與你的幫助了不起的人)的函數挑選出每一種(即循環的一部分)渦輪機,並開始比較他們彼此。我完全難倒當談到了解我將如何讓他們移動,並停止在需要的時候:
function updateTurbines(){
var l = turbines.length-1;
for (var i = 0; i < l; i++){
var tempTurbine1 = turbines[i];
tempTurbine1.PositionTop = tempTurbine1.y;
tempTurbine1.PositionBottom = tempTurbine1.y + tempTurbine1.height;
for (var j = 0; j < l; j++) {
var tempTurbine2 = turbines[j];
tempTurbine2.PositionTop = tempTurbine2.y;
tempTurbine2.PositionBottom = tempTurbine2.y + tempTurbine2.height;
if ((tempTurbine1 !== tempTurbine2) && FIXME == true){
if(tempTurbine1.PositionBottom >= tempTurbine2.PositionTop){
turbines[j].y -=2;
//A while loop breaks the browser :(
}
}
}FIXME = false;
}
}
更多的解釋和信息任何意見或請求非常歡迎。我也有一種感覺,我很嚴重地使這個複雜化。該死的我的頭痛。祝福你。
我不太清楚你的問題是什麼。我只能看到那些「渦輪機」起重,然後它們流出屏幕,有時渦輪機停留在屏幕上。我不知道你重疊的意思,你能否詳細說明一下? – pimvdb 2012-02-13 17:04:11
當然,我添加了一個函數,將渦輪機生成爲描述。他們在y軸上的位置是自動確定的,我需要確保他們在玩家開始玩時不會互相重疊。 – styke 2012-02-13 17:12:06