#include "DxLib.h"

const int WIDTH = 960, HEIGHT = 640; // ウィンドウの幅と高さのピクセル数

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    // ＤＸライブラリを使用する準備
    SetWindowText("ゲーム開発のアルゴリズム"); // ウィンドウのタイトル
    SetGraphMode(WIDTH, HEIGHT, 32); // ウィンドウの大きさとカラービット数の指定
    ChangeWindowMode(TRUE); // ウィンドウモードで起動
    if (DxLib_Init() == -1) return -1; // ライブラリ初期化 エラーが起きたら終了
    SetBackgroundColor(0, 0, 0); // 背景色の指定
    SetDrawScreen(DX_SCREEN_BACK); // 描画面を裏画面にする

    int img_bg = LoadGraph("image_Chapter12/move_player/bg.png"); // 変数に背景画像を読み込む
    int img_pl[] = { // 配列にキャラクターの画像を読み込む
        LoadGraph("image_Chapter12/move_player/player_l.png"),
        LoadGraph("image_Chapter12/move_player/player_r.png")
    };

    int player_x = WIDTH / 2;  // キャラクターのx座標
    int player_y = HEIGHT - 100; // キャラクターのy座標
    int player_dir = 0; // 向き 0=左 1=右

    while (true) { // メインループ
        ClearDrawScreen(); // 画面をクリアする

        // 上下キーの判定
        if (CheckHitKey(KEY_INPUT_UP) && player_y > 450) player_y = player_y - 10;
        if (CheckHitKey(KEY_INPUT_DOWN) && player_y < 590) player_y = player_y + 10;

        // 左右キーの判定
        if (CheckHitKey(KEY_INPUT_LEFT) && player_x > 30) {
            player_x = player_x - 10;
            player_dir = 0;
        }
        if (CheckHitKey(KEY_INPUT_RIGHT) && player_x < 930) {
            player_x = player_x + 10;
            player_dir = 1;
        }

        DrawGraph(0, 0, img_bg, FALSE); // 背景の表示
        DrawGraph(player_x - 30, player_y - 48, img_pl[player_dir], TRUE); // キャラクターの表示

        ScreenFlip(); // 裏画面の内容を表画面に反映させる
        WaitTimer(33); // 一定時間待つ
        if (ProcessMessage() == -1) break; // Windowsから情報を受け取りエラーが起きたら終了
        if (CheckHitKey(KEY_INPUT_ESCAPE) == 1) break; // ESCキーが押されたら終了
    }

    DxLib_End(); // ＤＸライブラリ使用の終了処理
    return 0; // ソフトの終了
}