iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
0
Software Development

用Canvas打造自己的遊樂場系列 第 17

[Day17]用Canvas打造自己的遊樂場-Galaxian 有bug 明天要除蟲

  • 分享至 

  • xImage
  •  

今天呢原本是要寫敵人被擊中後被消除的過程,但是呢有點問題,我需要一些時間來解決.
那還是先把到目前為止的程式記錄下來.明天會再針對今天的問題進行除錯.

我的想法是在,移動子彈的過程,一邊檢查是否有擊中敵人

// 移動子彈
moveBullet = () => {
    // 玩家發射子彈
    if(player_shot) {
        bullet_y -= BULLET_SPEED;

        //確認子但是否擊中
        shootCheck(bullet_x, bullet_y);

        // 若子彈超出邊界,重新上膛
        if(bullet_y < 0) {
            player_shot = false;
        }
    }
}

這邊單純的引入今天新加入的函式,是沒有問題的.

// 是否擊中
shootCheck = (x, y) => {
    var col = Math.floor ((x - enemy_distance) / ENEMY_R);
    var row = Math.floor ((y - enemy_distance) / ENEMY_R);

    var enemyIndex = enemyToIndex(col, row);

    if(enemy_grid[enemyIndex] == 1) {
        enemy_grid[enemyIndex] = 0;
        player_shot = false;
    }
}

這邊就是測試的函式,到這邊我做了個測試.

可以看到,子但確實消滅了敵人,但卻是打死錯誤位置的敵人.
這個問題需要重新回去看一下顯示敵人位置的code.會花點時間.今天時間有點緊湊,我們明天開始除錯吧.


上一篇
[Day16]用Canvas打造自己的遊樂場-Galaxian 中秋團圓
下一篇
[Day18]用Canvas打造自己的遊樂場-Galaxian 找出問題點
系列文
用Canvas打造自己的遊樂場30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言