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

    float obj_x = 0.0f, obj_y = 0.0f, obj_z = 1000.0f; // 物体のx、y、z座標

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

        if (CheckHitKey(KEY_INPUT_UP))    obj_z += 10.0f; // 上キー
        if (CheckHitKey(KEY_INPUT_DOWN))  obj_z -= 10.0f; // 下キー
        if (CheckHitKey(KEY_INPUT_LEFT))  obj_x -= 10.0f; // 左キー
        if (CheckHitKey(KEY_INPUT_RIGHT)) obj_x += 10.0f; // 右キー
        DrawFormatString(0, 0, GetColor(255, 255, 255), "x=%f y=%f z=%f", obj_x, obj_y, obj_z);

        // カメラの位置と注視点を設定
        SetCameraPositionAndTarget_UpVecY(VGet(0.0f, 0.0f, 0.0f), VGet(0.0f, 0.0f, 1000.0f));

        SetUseZBuffer3D(TRUE); // Ｚバッファを有効にする
        SetWriteZBuffer3D(TRUE); // Ｚバッファへの書き込みを有効にする
        DrawSphere3D(VGet(obj_x, obj_y, obj_z), 100, 32, GetColor(0, 192, 255), GetColor(255, 255, 255), TRUE); // 3D空間に球を配置（描画）

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

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