#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, 255); // 背景色の指定
    SetDrawScreen(DX_SCREEN_BACK); // 描画面を裏画面にする

    int obj_x = WIDTH / 2, obj_y = HEIGHT / 2; // 物体の座標を代入する変数
    int obj_vx = 5, obj_vy = 5; // x軸方向の速さ、y軸方向の速さを代入する変数

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

        obj_x = obj_x + obj_vx; // x座標を変化させる
        obj_y = obj_y + obj_vy; // y座標を変化させる
        if (obj_x < 0) obj_vx = 5;       // 画面左端に達した時
        if (obj_x > WIDTH) obj_vx = -5;  // 画面右端に達した時
        if (obj_y < 0) obj_vy = 5;       // 画面上端に達した時
        if (obj_y > HEIGHT) obj_vy = -5; // 画面下端に達した時
        DrawCircle(obj_x, obj_y, 30, GetColor(255, 255, 255), TRUE); // 円を描く

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

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