ページ 11

マウスの判定がうまくできないので教えていただきたいです

Posted: 2021年1月12日(火) 11:45
by Yukiq_
visualstdio2019で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 Cr;
	Cr = GetColor(255, 255, 255);

	int x, y, Mouse,mouseFlag;
	mouseFlag = 0;

	int gh;
	gh = LoadGraph("circle.png");

	Mouse = GetMouseInput();
	
	// ゲームループで使う変数の宣言


	// 最新のキーボード情報用
	char keys[256] = { 0 };

	// 1ループ(フレーム)前のキーボード情報
	char oldkeys[256] = { 0 };

	// ゲームループ
	while (1)
	{
		// 最新のキーボード情報だったものは1フレーム前のキーボード情報として保存
		// 最新のキーボード情報を取得
		GetHitKeyStateAll(keys);

		// 画面クリア
		ClearDrawScreen();
		//---------  ここからプログラムを記述  ----------//

		// 更新処理
		if ((Mouse&MOUSE_INPUT_LEFT))
		{
			mouseFlag = 1;
		}
		GetMousePoint(&x, &y);
		// 描画処理
		if (mouseFlag==1)
		{

			DrawGraph(x, y, gh, true);
		}
		DrawFormatString(10, 10, Cr, "%d", mouseFlag);
		//---------  ここまでにプログラムを記述  ---------//
		// (ダブルバッファ)裏面
		ScreenFlip();	

		// 20ミリ秒待機(疑似60FPS)
		WaitTimer(20);

		// Windowsシステムからくる情報を処理する
		if (ProcessMessage() == -1)
		{
			break;
		}

		// ESCキーが押されたらループから抜ける
		if (CheckHitKey(KEY_INPUT_ESCAPE) == 1)
		{
			break;
		}
	}
	// Dxライブラリ終了処理
	DxLib_End();

	// 正常終了
	return 0;
}

Re: マウスの判定がうまくできないので教えていただきたいです

Posted: 2021年1月12日(火) 12:51
by Meta3
ループないでMouse = GetMouseInput(); //◆◆◆してないから

コード:

	while (1)
	{
		// 最新のキーボード情報だったものは1フレーム前のキーボード情報として保存
		// 最新のキーボード情報を取得
		GetHitKeyStateAll(keys);

		// 画面クリア
		ClearDrawScreen();
		//---------  ここからプログラムを記述  ----------//

   Mouse = GetMouseInput(); //◆◆◆

		// 更新処理
		if ((Mouse&MOUSE_INPUT_LEFT))
		{