Galactic Shooter 仕様書



## 1. 概要
**Galactic Shooter**は、タッチ操作でプレイヤーを移動し、敵やボスを倒してスコアを稼ぐ縦スクロール型シューティングゲームです。  
ゲームはモバイルデバイスでのプレイを想定しており、プレイヤーはタッチ操作で宇宙船をコントロールします。

---

## 2. 技術スタック
- **HTML5**:構造の定義  
- **CSS3**:レイアウトとビジュアルスタイルの設定  
- **JavaScript (Vanilla)**:ゲームロジックとインタラクションの実装  
- **Canvas API**:ゲーム描画のために使用  

---

## 3. 機能要件
- プレイヤーはタッチ操作で宇宙船を自由に動かせる。  
- 一定間隔で自動的に弾が発射される。  
- 敵が一定時間ごとに生成され、プレイヤーの攻撃で倒せる。  
- スコアが一定に達するとボスが登場し、HPを削り切ると倒すことができる。  
- ハイスコアをローカルストレージに保存・表示する。  
- 敵またはボスが画面下に到達した場合はゲームオーバーとなる。  

---

## 4. 非機能要件
- モバイルデバイスでのタッチ操作に最適化。  
- シンプルなデザインと軽量なコードにより、パフォーマンスを維持。  
- ローカルストレージにより、ブラウザを閉じてもハイスコアが保持される。  

---

## 5. アーキテクチャ設計
ゲームは以下の要素で構成されています:  
1. **プレイヤー**:画面下部に位置し、タッチ操作で自由に動く。  
2. **弾**:プレイヤーから一定間隔で発射される。  
3. **敵**:画面上部から定期的に出現して下に移動。弾が当たると消滅し、スコアが加算される。  
4. **ボス**:一定スコアごとに出現し、複数のHPを持つ。  
5. **UI**:スコアとハイスコアを画面左上に表示。  

---

## 6. クラス・関数仕様

### 6.1 `checkCollision(rect1, rect2)`
**目的**:2つの矩形(プレイヤーや弾、敵など)の衝突判定を行う。  
**引数**:
- `rect1`, `rect2`:衝突を判定する矩形オブジェクト(`x`, `y`, `width`, `height` を持つ)。  
**戻り値**:`true`(衝突時)、`false`(非衝突時)。  

---

### 6.2 `spawnBoss()`
**目的**:ボスを生成する。  
**挙動**:  
- 画面上部中央にボスを配置。  
- ボスHPは、初期値10にスコアに応じた補正値が加わる。  

---

### 6.3 `update()`
**目的**:ゲーム内の全要素(プレイヤー、弾、敵、ボス)の状態を1フレームごとに更新・描画する。  
**主要処理**:  
1. キャンバスのクリア  
2. プレイヤーの描画  
3. 弾の移動・描画・敵・ボスへのヒット判定  
4. 敵の生成、移動、当たり判定  
5. ボスの挙動とHP管理  
6. スコア表示の更新  
7. ゲームオーバー判定  

---

### 6.4 `gameOver()`
**目的**:ゲームオーバー時に呼び出される処理。  
**挙動**:  
1. ゲームの進行を停止。  
2. ハイスコアを更新(必要時)。  
3. アラートでスコアを表示し、ページをリロード。  

---

## 7. データフロー

```plaintext
ユーザータッチ入力
     ↓
プレイヤー位置更新
     ↓
弾の発射(定期)
     ↓
敵の生成(定期)
     ↓
弾と敵・ボスの衝突判定
     ↓
敵・ボスの削除およびスコア加算
     ↓
スコア表示とハイスコア更新
     ↓
ゲームオーバー判定

いいなと思ったら応援しよう!

この記事が参加している募集