#1
by ゆーや » 3年前
Dxlibを使ってクリックした場所に円形の衝撃波を表示するプログラミングを描いたのですが一度クリックしてしまうと二度目ができなくなってしまうので須賀どう改善すれよろしいでしょうか、理想としては一度目の表示が終わったら二度目の表示ができるというのを何度もできるようにしたいです
数秒たてば画像が消えるようにはなっています。簡単に言えば左クリックの入力が一度しかできないので何度もできるようにしたいです。
コード:
#include "DxLib.h"
// ウィンドウのタイトルに表示する文字列
const char TITLE[] = "学籍番号 名前:タイトル";
// ウィンドウ横幅
const int WIN_WIDTH = 600;
// ウィンドウ縦幅
const int WIN_HEIGHT = 400;
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow)
{
// ウィンドウモードに設定
ChangeWindowMode(TRUE);
// ウィンドウサイズを手動では変更させず、
// かつウィンドウサイズに合わせて拡大できないようにする
SetWindowSizeChangeEnableFlag(FALSE, FALSE);
// タイトルを変更
SetMainWindowText(TITLE);
// 画面サイズの最大サイズ、カラービット数を設定(モニターの解像度に合わせる)
SetGraphMode(WIN_WIDTH, WIN_HEIGHT, 32);
// 画面サイズを設定(解像度との比率で設定)
SetWindowSizeExtendRate(1.0);
// 画面の背景色を設定する
SetBackgroundColor(0x00, 0x00, 0xFF);
// DXlibの初期化
if (DxLib_Init() == -1) { return -1; }
// (ダブルバッファ)描画先グラフィック領域は裏面を指定
SetDrawScreen(DX_SCREEN_BACK);
// 画像などのリソースデータの変数宣言と読み込み
int number = 255;
float size = 1.0;
int Cr;
Cr = GetColor(255, 255, 255);
int x, y, Mouse,mouseFlag;
mouseFlag = 0;
int gh;
gh = LoadGraph("circle.png");
int graphFlag = 0;
// ゲームループで使う変数の宣言
// 最新のキーボード情報用
char keys[256] = { 0 };
// 1ループ(フレーム)前のキーボード情報
char oldkeys[256] = { 0 };
// ゲームループ
while (1)
{
// 最新のキーボード情報だったものは1フレーム前のキーボード情報として保存
// 最新のキーボード情報を取得
GetHitKeyStateAll(keys);
// 画面クリア
ClearDrawScreen();
//--------- ここからプログラムを記述 ----------//
// 更新処理
Mouse = GetMouseInput();
if ((Mouse&MOUSE_INPUT_LEFT)!=0)
{
mouseFlag = 1;
}
GetMousePoint(&x, &y);
// 描画処理
SetDrawBlendMode(DX_BLENDMODE_ALPHA, number);
if (mouseFlag==1)
{
number = number - 5;
size = size + 0.05;
graphFlag = 1;
}
if (graphFlag==1)
{
DrawRotaGraph(x - 32, y - 32, size,0, gh, true);
}
if (number<=0)
{
graphFlag = 0;
}
//--------- ここまでにプログラムを記述 ---------//
// (ダブルバッファ)裏面
ScreenFlip();
// 20ミリ秒待機(疑似60FPS)
WaitTimer(20);
// Windowsシステムからくる情報を処理する
if (ProcessMessage() == -1)
{
break;
}
// ESCキーが押されたらループから抜ける
if (CheckHitKey(KEY_INPUT_ESCAPE) == 1)
{
break;
}
}
// Dxライブラリ終了処理
DxLib_End();
// 正常終了
return 0;
}
Dxlibを使ってクリックした場所に円形の衝撃波を表示するプログラミングを描いたのですが一度クリックしてしまうと二度目ができなくなってしまうので須賀どう改善すれよろしいでしょうか、理想としては一度目の表示が終わったら二度目の表示ができるというのを何度もできるようにしたいです
数秒たてば画像が消えるようにはなっています。簡単に言えば左クリックの入力が一度しかできないので何度もできるようにしたいです。
[code]#include "DxLib.h"
// ウィンドウのタイトルに表示する文字列
const char TITLE[] = "学籍番号 名前:タイトル";
// ウィンドウ横幅
const int WIN_WIDTH = 600;
// ウィンドウ縦幅
const int WIN_HEIGHT = 400;
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow)
{
// ウィンドウモードに設定
ChangeWindowMode(TRUE);
// ウィンドウサイズを手動では変更させず、
// かつウィンドウサイズに合わせて拡大できないようにする
SetWindowSizeChangeEnableFlag(FALSE, FALSE);
// タイトルを変更
SetMainWindowText(TITLE);
// 画面サイズの最大サイズ、カラービット数を設定(モニターの解像度に合わせる)
SetGraphMode(WIN_WIDTH, WIN_HEIGHT, 32);
// 画面サイズを設定(解像度との比率で設定)
SetWindowSizeExtendRate(1.0);
// 画面の背景色を設定する
SetBackgroundColor(0x00, 0x00, 0xFF);
// DXlibの初期化
if (DxLib_Init() == -1) { return -1; }
// (ダブルバッファ)描画先グラフィック領域は裏面を指定
SetDrawScreen(DX_SCREEN_BACK);
// 画像などのリソースデータの変数宣言と読み込み
int number = 255;
float size = 1.0;
int Cr;
Cr = GetColor(255, 255, 255);
int x, y, Mouse,mouseFlag;
mouseFlag = 0;
int gh;
gh = LoadGraph("circle.png");
int graphFlag = 0;
// ゲームループで使う変数の宣言
// 最新のキーボード情報用
char keys[256] = { 0 };
// 1ループ(フレーム)前のキーボード情報
char oldkeys[256] = { 0 };
// ゲームループ
while (1)
{
// 最新のキーボード情報だったものは1フレーム前のキーボード情報として保存
// 最新のキーボード情報を取得
GetHitKeyStateAll(keys);
// 画面クリア
ClearDrawScreen();
//--------- ここからプログラムを記述 ----------//
// 更新処理
Mouse = GetMouseInput();
if ((Mouse&MOUSE_INPUT_LEFT)!=0)
{
mouseFlag = 1;
}
GetMousePoint(&x, &y);
// 描画処理
SetDrawBlendMode(DX_BLENDMODE_ALPHA, number);
if (mouseFlag==1)
{
number = number - 5;
size = size + 0.05;
graphFlag = 1;
}
if (graphFlag==1)
{
DrawRotaGraph(x - 32, y - 32, size,0, gh, true);
}
if (number<=0)
{
graphFlag = 0;
}
//--------- ここまでにプログラムを記述 ---------//
// (ダブルバッファ)裏面
ScreenFlip();
// 20ミリ秒待機(疑似60FPS)
WaitTimer(20);
// Windowsシステムからくる情報を処理する
if (ProcessMessage() == -1)
{
break;
}
// ESCキーが押されたらループから抜ける
if (CheckHitKey(KEY_INPUT_ESCAPE) == 1)
{
break;
}
}
// Dxライブラリ終了処理
DxLib_End();
// 正常終了
return 0;
}
[/code]