#pragma once
#define _USE_MATH_DEFINES // M_PIを使用
#include <cmath> // 三角関数を使用
#include <string.h> // strlen()を使用
#include "DxLib.h"

const int FRAME_RATE = 30; // フレームレートの定義
const int FRAME_TIME = 1000 / FRAME_RATE; // WAIT時間

// 画面に関する定数
const int COL = 15;   // 横方向のマスの数
const int ROW = 9;    // 縦方向のマスの数
const int BSIZE = 80; // 1マスの大きさ
const int WIDTH = COL * BSIZE;  // ウィンドウの幅のピクセル数
const int HEIGHT = ROW * BSIZE; // ウィンドウの高さのピクセル数
const int COLOR[] = { 0x000000, 0x8080a0, 0xe0ffff }; // 壁とブロックの色の定義
enum { FLOOR, WALL, BLOCK }; // 床、周囲の壁、ブロックの番号を定義
enum { TITLE, PLAY, OVER }; // 画面遷移用の値を定義

// プレイヤーの機体用の定数
const int FIGHTER_MAX = 2; // 2人で対戦プレイ
const int FIGHTER_KEY[] = { KEY_INPUT_R, KEY_INPUT_B }; // 操作キー
const int FIGHTER_SIZE = 30; // 機体の大きさ
const int FIGHTER_WIDTH = 3; // 機体の線の太さ
const int MAX_SPEED = 30;    // 速さの上限

// 関数プロトタイプ宣言
void initBlock(); // ブロックを初期状態にする関数
void drawBlock(); // ブロックを描く関数
void drawText(int x, int y, const char* txt, int val, int siz, int col); // 文字列の表示関数

// クラス（メンバの宣言）
class Fighter { // プレイヤーの機体のクラス
private:
    int x;     // x座標
    int y;     // y座標
    int lr;    // 角度の変化量（時計回り、反時計回りを定める）
    int angle; // 角度（向き）
    int speed; // 速さ
    int color; // 機体の色
    int score; // スコア
public:
    void init(int x, int y, int lr, int col); // 初期化
    int getCol(); // 色を返す
    int getSc();  // スコアを返す
    void draw(); // 機体を表示
    void move(int key); // 移動処理
};
