#include "DxLib.h" //<プロトタイプ宣言> void title(); void Init_Dat(); void Kouza_01(); void Kouza_02(); void Kouza_03(); //グローバル変数 int x = 1024 / 2.0;//丸の座標 int y = 768 / 2.0;//丸の座標 double ax = 0.0;//x座標の加速度 double ay = 0.0;//y座標の加速度 int blue;//青色を設定 int Graph;//画像読み込み int scene = 0;//シーンを管理するフラグ int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){ ChangeWindowMode(TRUE), SetGraphMode(800, 600, 32),//今回はウィンドウモード DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK); blue = GetColor(0, 0, 255); Graph = LoadGraph("ジョニー.png"); //<ループ処理> while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) != 1){ //<シーンの切り替え> switch (scene){ case 0: title(); break; case 1: Kouza_01(); break; case 2: Kouza_02(); break; case 3: Kouza_03(); break; default: break; } } //<終了処理> DxLib_End(); return 0; } void title(){ DrawFormatString(200, 300, GetColor(255, 255, 255), "講座用プログラムの実行"); DrawFormatString(240, 350, GetColor(255, 255, 255), "1,2,3キーを押してスタート "); DrawFormatString(240, 400, GetColor(255, 255, 255), "F1キーでタイトルに戻る"); DrawFormatString(240, 450, GetColor(255, 255, 255), "ESCキーで終了"); if (CheckHitKey(KEY_INPUT_1) == 1) scene = 1; if (CheckHitKey(KEY_INPUT_2) == 1) scene = 2; if (CheckHitKey(KEY_INPUT_3) == 1) scene = 3; } void Kouza_01(){//第一回の講座でやったプログラムのまとめ //十字キー操作 if (CheckHitKey(KEY_INPUT_RIGHT) != 0)//右キーを押したら x++;//右にずれる if (CheckHitKey(KEY_INPUT_LEFT) != 0)//左キーを押したら x--;//左にずれる if (CheckHitKey(KEY_INPUT_UP) != 0)//上キーを押したら y--;//上にずれる if (CheckHitKey(KEY_INPUT_DOWN) != 0)//下キーを押したら y++;//下にずれる DrawCircle(x, y, 1024 / 8.0, blue, true, 1);//円を描画 if (CheckHitKey(KEY_INPUT_F1) != 0){ Init_Dat();//変数初期化関数 scene = 0;//sceneをタイトルにする } } void Kouza_02(){ //十字キー操作 if (CheckHitKey(KEY_INPUT_RIGHT) != 0)//右キーを押したら ax = 5.0;//右に一定の加速度を代入 if (CheckHitKey(KEY_INPUT_LEFT) != 0)//左キーを押したら ax = -5.0;//左に一定の加速度を代入 if (CheckHitKey(KEY_INPUT_RIGHT) == 0 && CheckHitKey(KEY_INPUT_LEFT) == 0)//左右 のキーが押されていない場合 ax *= 0.9;//x座標の減速処理 if (CheckHitKey(KEY_INPUT_UP) != 0)//上キーを押したら ay = -5.0;//上に一定の加速度を代入 if (CheckHitKey(KEY_INPUT_DOWN) != 0)//下キーを押したら ay = 5.0;//下に一定の加速度を代入 if (CheckHitKey(KEY_INPUT_UP) == 0 && CheckHitKey(KEY_INPUT_DOWN) == 0)//上下の キーが押されていない場合 ay *= 0.9;//y座標の減速処理 if (-1.5 < ax && ax < 0 || 0 < ax && ax < 1.5)//-1.5 < ax < 0 か 0 < ax < 1.5に なったら ax = 0;//加速度を0にする if (-1.5 < ay && ay < 0 || 0 < ay && ay < 1.5)//-1.5 < ay < 0 か 0 < ay < 1.5に なったら ay = 0;//加速度を0にする DrawFormatString(20, 20, GetColor(255, 255, 255), "ax ... %f", ax);//axの加速度 を表示する DrawFormatString(20, 40, GetColor(255, 255, 255), "ay ... %f", ay);//ayの加速度 を表示する x += ax;//加速度を毎フレームx座標に加算する y += ay;//加速度を毎フレームy座標に加算する DrawCircle(x, y, 1024 / 8.0, blue, true, 1);//円を描画 if (CheckHitKey(KEY_INPUT_F1) != 0){ Init_Dat();//変数初期化関数 scene = 0; } } void Kouza_03(){ //十字キー操作 if (CheckHitKey(KEY_INPUT_RIGHT) != 0)//右キーを押したら ax = 5.0;//右に一定の加速度を代入 if (CheckHitKey(KEY_INPUT_LEFT) != 0)//左キーを押したら ax = -5.0;//左に一定の加速度を代入 if (CheckHitKey(KEY_INPUT_RIGHT) == 0 && CheckHitKey(KEY_INPUT_LEFT) == 0)//左右 のキーが押されていない場合 ax *= 0.9;//x座標の減速処理 if (CheckHitKey(KEY_INPUT_UP) != 0)//上キーを押したら ay = -5.0;//上に一定の加速度を代入 if (CheckHitKey(KEY_INPUT_DOWN) != 0)//下キーを押したら ay = 5.0;//下に一定の加速度を代入 if (CheckHitKey(KEY_INPUT_UP) == 0 && CheckHitKey(KEY_INPUT_DOWN) == 0)//上下の キーが押されていない場合 ay *= 0.9;//y座標の原則処理 if (-1.5 < ax && ax < 0 || 0 < ax && ax < 1.5)//-1.5 < ax < 0 か 0 < ax < 1.5 になったら ax = 0;//加速度を0にする if (-1.5 < ay && ay < 0 || 0 < ay && ay < 1.5)//-1.5 < ay < 0 か 0 < ay < 1.5 になったら ay = 0;//加速度を0にする DrawFormatString(20, 20, GetColor(255, 255, 255), "ax ... %f", ax);//axの加速度 を表示する DrawFormatString(20, 40, GetColor(255, 255, 255), "ay ... %f", ay);//ayの加速度 を表示する x += ax;//加速度を毎フレームx座標に加算する y += ay;//加速度を毎フレームy座標に加算する DrawGraph(x, y, Graph, false);//画像描写 if (CheckHitKey(KEY_INPUT_F1) != 0){ Init_Dat();//変数初期化関数 scene = 0; } } void Init_Dat(){ x = 800 / 2.0;//丸の座標 y = 600 / 2.0;//丸の座標 ax = 0.0;//x座標の加速度 ay = 0.0;//y座標の加速度 }
© Copyright 2025 ExpyDoc