場地除了有可以給在圖形物件活動的地方
也可以設定某些區域是不能進入
這就可以設定當物件 "碰撞" 到某個邊界時就不能再前進
所以先作一個簡單的例子
建立一個 300x300 的矩形的區域和一個在區域內的物件
物件是不是有出界
就用 if 判斷物件 box 的 (x, y) 上下左右是不是已經超過四個邊
因為矩形是從左上角向右下拉出一個區域填色
所以只要找出 右邊的x值和下邊的x值
box_x + box_width // 右
box_y + box_height // 下
再用 if 判斷 box 有沒有碰到邊界
if(box_x == 0){ ... } // 碰到左邊
if(box_x + box_width == 0){ ... } // 碰到右邊
if(box_y == 0){ ... } // 碰到上邊
if(box_y + box_height == 0){ ... } // 碰到下邊
就可以設定使用鍵盤的 上下左右、WSAD
讓物件碰到邊時就不能繼續
window.addEventListener('keydown', function(e){
    if(e.code === 'KeyW')  {
      if(box_y !== 0){
        ctx.clearRect(0, 0, area, area);
        box_y = box_y - 10;
        ctx.fillRect(box_x, box_y, box_size, box_size);
      }
    }
    if(e.code === 'KeyD')  {
      if(box_x + box_size !== area){
        ctx.clearRect(0, 0, area, area);
        box_x = box_x + 10;
        ctx.fillRect(box_x, box_y, box_size, box_size);
      }
    }
    if(e.code === 'KeyS')  {
      if(box_y + box_size !== area){
        ctx.clearRect(0, 0, area, area);
        box_y = box_y + 10;
        ctx.fillRect(box_x, box_y, box_size, box_size);
      }
    }
    if(e.code === 'KeyA')  {
      if(box_x !== 0){
        ctx.clearRect(0, 0, area, area);
        box_x = box_x - 10;
        ctx.fillRect(box_x, box_y, box_size, box_size);
      }
    }
},true);