![見出し画像](https://assets.st-note.com/production/uploads/images/96664271/rectangle_large_type_2_2d43fa0a65d412ec588ec9bd4a229bb2.jpeg?width=1200)
クリック回数を数えて文字列で描画:サンプルプログラム
![](https://assets.st-note.com/production/uploads/images/96865389/picture_pc_17cfb25497abe4915a48f1351e0a46d4.gif)
・敵画像をマウスでクリックすることで座標をランダムに移動させてます。
・クリック回数をカウントしていって文字列で描画しています。
#include "DxLib.h"
#define IMAGE_SIZE 50 // 画像1枚の大きさ
// 敵画像ハンドル
int EnemyGraph;
// 敵座標
int EnemyX;
int EnemyY;
// クリック回数
int ClickCount;
// ==============================
// *** 初期化処理 ***
// ==============================
void Game_Init()
{
// 敵画像の読み込み
EnemyGraph = LoadGraph( "敵.png" );
// 敵画像の初期座標
EnemyX = GetRand( 450 );
EnemyY = GetRand( 150 );
ClickCount = 0;
}
// ==============================
// *** 更新処理 ***
// ==============================
void Game_Update()
{
// マウス左ボタンを押しているとき
if( GetMouseInput() & MOUSE_INPUT_LEFT ){
// マウス座標
int MouseX, MouseY;
// マウス座標を取得して円の座標とします
GetMousePoint( &MouseX, &MouseY );
// マウス座標が敵画像の中に入っているか
if( MouseX >= EnemyX && MouseX <= EnemyX + IMAGE_SIZE &&
MouseY >= EnemyY && MouseY <= EnemyY + IMAGE_SIZE){
// クリックしたら座標をランダムに
EnemyX = GetRand( 450 );
EnemyY = GetRand( 150 );
// クリック回数を増やす
ClickCount++;
}
}
}
// ==============================
// *** 描画処理 ***
// ==============================
void Game_Draw()
{
// 敵の描画
DrawGraph( EnemyX, EnemyY, EnemyGraph, TRUE );
// クリック数を文字列で表示
DrawFormatString( 10, 10, GetColor( 255, 255, 255 ), "クリック数 %d", ClickCount );
}
// ==============================
// *** 終了処理 ***
// ==============================
void Game_End()
{
DeleteGraph( EnemyGraph );
}
// ******************************
// メイン関数
// ******************************
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode( TRUE );
SetGraphMode( 500, 200, 16 );
if( DxLib_Init() == -1 ){
return -1;
}
SetDrawScreen( DX_SCREEN_BACK );
Game_Init(); // *** 初期化処理 ***
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ){
Game_Update(); // *** 更新処理 ***
ClearDrawScreen();
Game_Draw(); // *** 描画処理 ***
ScreenFlip();
}
Game_End(); // *** 終了処理 ***
DxLib_End();
return 0;
}
サンプルプログラムで記述している描画や操作関係はDXライブラリを使っていますが、DXライブラリを使わない開発でも処理としては同じような実装で動作すると思います。