首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# WinForm 實作飛機發射子彈擊中敵機銷毀的核心邏輯與程式碼架構

     編輯:程式設計綜合問答

核心物件模型

  • Plane:位置、圖片、移動邏輯。
  • Bullet:位置、速度、存活旗標、繪製/更新。
  • Enemy:位置、血量、移動模式、碰撞箱。

主迴圈

Timer gameLoop = new Timer { Interval = 16 }; // ~60 FPS
gameLoop.Tick += (s, e) => {
    UpdateBullets();
    UpdateEnemies();
    CheckCollisions();
    this.Invalidate();
};
gameLoop.Start();

子彈更新與碰撞檢測

void UpdateBullets() {
    for (int i = bullets.Count - 1; i >= 0; i--) {
        Bullet b = bullets[i];
        b.Y -= b.Speed;
        if (b.Y < 0) { bullets.RemoveAt(i); continue; }
        foreach (Enemy en in enemies) {
            if (b.Bounds.IntersectsWith(en.Bounds)) {
                en.HP -= b.Damage;
                bullets.RemoveAt(i);
                if (en.HP <= 0) enemies.Remove(en);
                break;
            }
        }
    }
}

關鍵點總結

  • 使用 Rectangle.IntersectsWith 做 AABB 碰撞,簡單高效。
  • 反向迴圈移除集合元素避免索引錯亂。
  • 雙緩衝 this.DoubleBuffered = true 消除閃爍。
  • 資源 (Image) 統一管理,避免重複載入。

擴充建議

加入粒子特效、音效、分數、波次系統、Boss 戰,逐步演進為完整射擊遊戲。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved