2

html5 キャンバス Javascript を使用して学校向けのゲームを作成する必要があります。私はjavascriptを初めて使用し、まだ学習中ですが、この問題について本当に助けが必要です。誰かが私を助けてくれれば幸いです。私はいくつかのことを試しましたが、何もうまくいかないようで、途方に暮れています。

これがプレーヤー オブジェクトのコードです。左から右に移動できます。問題は、キャンバスを離れることです。x軸のキャンバスにとどまりたい。

// Things to do when keys are down
function onKeyDown(event) {

    // prevent arrow keys from scrolling the page
    if (event.keyCode >= 37 && event.keyCode <= 39) event.preventDefault();

    switch (event.keyCode) {
        case 37:
            player.vx = -1;
            player.image = player.imgLeft;
            break; // left key
     // case 38: player.vy = -1; break; // up key
        case 39:
            player.vx = 1;
            player.image = player.imgRight;
            break; // right key
    }
}

// Things to do when keys are up
function onKeyUp(event) {
    switch (event.keyCode) {
        case 37:
        case 39:
            player.vx = 0;
            player.image = player.original;
            break; // left or right key released
     // case 38: player.vy = 0; break; // up or down key released
    }
}

これは私がこれまでに得たものです....

if ((player.x >= 800) && (player.x  <= 0)) {

} else {

}
4

2 に答える 2

1

境界内にいることを確認するために、2 つの関数を追加することを検討できます。(基本的にあなたのコードと同じですが、あなたのelseステートメントで返される私の真の条件があります。)

// returns true if param is in range [0..799]
function isInXrange(intPos)
{
  if ((intPos>=0) && (intPos<800))
    return true;
  else
    return false;
}
// returns true if param is in range [0..599]
function isInYrange(intPos)
{
  if ((intPos>=0) && (intPos<600))
    return true;
  else
    return false;
}

次に、プレーヤーを移動する関数と、壁との衝突/範囲外のさまよいを処理する別の関数を追加できます

function movePlayer()
{
    if (isInXRange(player.x))
        player.x += player.vx;
    if (isInXRange(player.y))
        player.y += player.vy;
}

function handleOutOfBounds()
{
    if (isInXRange(player.x) == false)
    {
        // do something;
    }

    if (isInYRange(player.y) == false)
    {
        // do something else
    }
}
于 2013-04-04T11:46:43.547 に答える