添削をお願いします

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
KSGK
記事: 9
登録日時: 6年前

添削をお願いします

#1

投稿記事 by KSGK » 6年前

C++とDXLIBで画像が切り替わるアプリを作りました。
今回のは意外と長くなってしまいましたが、ちょっとしたことでも指摘してもらえるとありがたいです。

いらない処理、短くできるところなどが特に知りたいです。
お願いします。

○挙動
 ・ランダムボタンで画像がランダムに切り替わる。(画像は100枚)
 ・画像クリックで画像の表裏が変わる。(偶数が表、奇数が裏)

コード:

#include "DxLib.h"

 
//3大処理
int ProcessLoop(){
    if(ProcessMessage()!=0)return -1;
    if(ClearDrawScreen()!=0)return -1;
    return 0;
}

void Load(int *Handle){
	LoadDivGraph( "画像\\型.png" , 100 ,10 , 10 ,128 , 144 , Handle ) ;
}

void GetMouse(int *Mx, int *My, int *Mf){
	GetMousePoint( Mx, My );//マウスの座標
	
	if(( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0 )//クリック関係
    {
		if(*Mf!=0||*Mf==3){*Mf=3;return;}
        *Mf=1;
    }
    else if(( GetMouseInput() & MOUSE_INPUT_RIGHT ) != 0 )
    {
		if(*Mf!=0||*Mf==3){*Mf=3;return;}
        *Mf=2;
    }
	else
	{
		*Mf=0;
	}
}

void GetDrawNum(int Mx,int My,int Mf,int *DrawNum){
	
	if ( Mx>=225 && Mx<=305 && My>=360 && My<=390 && Mf==1 ){
		*DrawNum = GetRand(49)*2 ;
	}
}

void SetDraw(int Mx,int My,int Mf,int *Gf,int *DrawNum){
	
	if ( Mx>=256 && Mx<=384 && My>=168 && My<=312 && Mf!=0 ){
		
		if(Mf==1&&*Gf==0){
			(*DrawNum)++;
			(*Gf)++;
		}else if(Mf==1&&*Gf==1){
			(*DrawNum)--;
			(*Gf)--;
		}
	}
	if(*DrawNum<0)  (*DrawNum)++;
	if(*DrawNum>99) (*DrawNum)--;
}


void Draw(int *Handle,int Mx,int My,int Mf,int Gf,int DrawNum,int Cr){
	DrawBox(255,360,305,390,Cr,FALSE);                      //ランダムボタン
	DrawGraph( 320-64 , 240-72 , Handle[DrawNum] , FALSE ) ;//画像
	DrawFormatString(10,10,Cr,"%d,%d,%d",Mx,My,Mf);         //マウス関係の字
	DrawFormatString(10,30,Cr,"%d,%d",Gf,DrawNum);          //画像関係の字
}
 
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
    ChangeWindowMode(TRUE);
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK ) == -1)return -1;
    
	int Handle[100],Gf,DrawNum;//画像関係
	Gf=0;
	DrawNum=0;
    int Mx,My,Mf;//マウス関係
	Mf=0;
	int Cr=GetColor(255,255,255);
	
	
	Load(Handle);
   
	while(ProcessLoop()==0){
		
		GetMouse(&Mx,&My,&Mf);
		GetDrawNum(Mx,My,Mf,&DrawNum);
		SetDraw(Mx,My,Mf,&Gf,&DrawNum);
		
		Draw(Handle,Mx,My,Mf,Gf,DrawNum,Cr);
        ScreenFlip();
		
    }
    DxLib_End();
    return 0;
}

 

“C言語何でも質問掲示板” へ戻る