'bool' 型の使用方法を安全にする方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ららいふ2

'bool' 型の使用方法を安全にする方法

#1

投稿記事 by ららいふ2 » 7年前

コード:

#include "DxLib.h"

#define  WAIT_TIME 1
#define FIVE_BLOCK 180
#define FOUR_BLOCK 160
#define THREE_BLOCK 140
#define TWO_BLOCK 120
#define ONE_BLOCK 100
#define ALL_BLOCK_Y 95
#define KASANARI 25
#define AIDA 220
#define AAIDA 420

struct position
{       
	  int x;
	  int y;
	
};


struct position one;
struct position two;
struct position three;
struct position four;
struct position five;

        



void Draw()
{
    
	    static int near_Backhandle = LoadGraph("画像/背景.png");
	
        static int one_block = LoadGraph("画像/1.png");
		static int two_block = LoadGraph("画像/2.png");
		static int three_block = LoadGraph("画像/3.png");
		static int four_block = LoadGraph("画像/4.png");
        static int five_block = LoadGraph("画像/5.png");
		one.x = 40;
		two.x = 40;
		three.x = 40;
		four.x = 40;
		five.x = 40;
		one.y = 150;
		two.y = 200;
		three.y = 250;
		four.y  = 300;
		five.y = 350;

	
		
	
		


        DrawExtendGraph( five.x ,five.y, five.x+THREE_BLOCK, five.y+ALL_BLOCK_Y,  five_block, TRUE);
	    DrawExtendGraph( four.x , four.y,four.x+THREE_BLOCK, four.y+ALL_BLOCK_Y,  four_block, TRUE);
	    DrawExtendGraph( three.x , three.y, three.x+THREE_BLOCK,three.y+ALL_BLOCK_Y, three_block, TRUE);
	    DrawExtendGraph( two.x , two.y, two.x+THREE_BLOCK,two.y+ALL_BLOCK_Y, two_block, TRUE);
		DrawExtendGraph( one.x , one.y, one.x+THREE_BLOCK,one.y+ALL_BLOCK_Y, one_block, TRUE);


		ScreenFlip();
}

void move(){
int Mouse;
int Mouse_x,Mouse_y;
        one.x = 40;
		two.x = 40;
		three.x = 40;
		four.x = 40;
		five.x = 40;
		one.y = 150;
		two.y = 200;
		three.y = 250;
		four.y  = 300;
		five.y = 350;

Mouse = GetMouseInput();  
SetMouseDispFlag(TRUE);
 GetMousePoint(&Mouse_x,&Mouse_y);
 
 
 if ( Mouse&MOUSE_INPUT_LEFT ){

	 if(one.x + THREE_BLOCK > Mouse_x  >one.x && one.y +50 > Mouse_y > one.y  ){
                             one.x = Mouse_x;
							 one.y = Mouse_y;
	 }

	 if(two.x + THREE_BLOCK > Mouse_x  >two.x && two.y+50 > Mouse_y > two.y  ){
                             two.x = Mouse_x;
							 two.y = Mouse_y;
	 }
		 if(three.x + THREE_BLOCK > Mouse_x  >three.x && three.y +50> Mouse_y > three.y  ){
                             three.x = Mouse_x;
							 three.y = Mouse_y;
	 }

		 if(four.x + THREE_BLOCK > Mouse_x  >four.x && four.y +50 > Mouse_y > four.y  ){
                             four.x = Mouse_x;
							 four.y = Mouse_y;
	 }

		 if(five.x + THREE_BLOCK > Mouse_x  >five.x && five.y +50 > Mouse_y > five.y  ){
                             five.x = Mouse_x;
							 five.y = Mouse_y;
	 }
 
 }

}


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE);

		   SetBackgroundColor(255,255,255);
		DxLib_Init(); 
		SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定


		Draw();
		

         while( 1 ){
			 move();
			 ClearDrawScreen();
                ProcessMessage();
                if( CheckHitKey(KEY_INPUT_ESCAPE) == 1 ){
                        break;
                }
				 ClearDrawScreen();
        }

      
        

        DxLib_End(); // DXライブラリ終了処理
        return 0;
}




というプログラムを実行したら







1>------ ビルド開始: プロジェクト: GameProg, 構成: Debug Win32 ------
1>2013/09/29 2:29:32 にビルドを開始しました。
1>InitializeBuildStatus:
1> "Debug\GameProg.unsuccessfulbuild" のタッチ タスクを実行しています。
1>ClCompile:
1> test.cpp
1>c:\users\稜太郎\desktop\gameprog\test.cpp(107): warning C4804: '>' : 演算中の 'bool' 型の使用方法が安全ではありません
1>c:\users\稜太郎\desktop\gameprog\test.cpp(107): warning C4804: '>' : 演算中の 'bool' 型の使用方法が安全ではありません
1>c:\users\稜太郎\desktop\gameprog\test.cpp(112): warning C4804: '>' : 演算中の 'bool' 型の使用方法が安全ではありません
1>c:\users\稜太郎\desktop\gameprog\test.cpp(112): warning C4804: '>' : 演算中の 'bool' 型の使用方法が安全ではありません
1>c:\users\稜太郎\desktop\gameprog\test.cpp(116): warning C4804: '>' : 演算中の 'bool' 型の使用方法が安全ではありません
1>c:\users\稜太郎\desktop\gameprog\test.cpp(116): warning C4804: '>' : 演算中の 'bool' 型の使用方法が安全ではありません
1>c:\users\稜太郎\desktop\gameprog\test.cpp(121): warning C4804: '>' : 演算中の 'bool' 型の使用方法が安全ではありません
1>c:\users\稜太郎\desktop\gameprog\test.cpp(121): warning C4804: '>' : 演算中の 'bool' 型の使用方法が安全ではありません
1>c:\users\稜太郎\desktop\gameprog\test.cpp(126): warning C4804: '>' : 演算中の 'bool' 型の使用方法が安全ではありません
1>c:\users\稜太郎\desktop\gameprog\test.cpp(126): warning C4804: '>' : 演算中の 'bool' 型の使用方法が安全ではありません
1>ManifestResourceCompile:
1> すべての出力が最新のものです。
1>LINK : fatal error LNK1168: ファイル C:\Users\稜太郎\Desktop\GameProg\Debug\GameProg.exe を開いて書き込むことができません。
1>
1>ビルドに失敗しました。
1>
1>経過時間 00:00:01.42
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========


このような結果が返ってきました



解決する方法を教えてください

ららいふ2

Re: 'bool' 型の使用方法を安全にする方法

#2

投稿記事 by ららいふ2 » 7年前

*補足
DXライブラリです

nil
記事: 428
登録日時: 9年前

Re: 'bool' 型の使用方法を安全にする方法

#3

投稿記事 by nil » 7年前

>if(one.x + THREE_BLOCK > Mouse_x >one.x && one.y +50 > Mouse_y > one.y )
条件分岐の文法が間違ってます。
C/C++では
a>b>cといった条件の書き方が出来ません。
(コンパイルは出来ますが実行結果は望まれたものではないでしょう)

a > b && b > c
と言った感じに書きなおす必要があります。

アバター
へにっくす
記事: 630
登録日時: 8年前
住所: 東京都

Re: 'bool' 型の使用方法を安全にする方法

#4

投稿記事 by へにっくす » 7年前

質問の答えは涼雅さんが書いてるので、他に気になったところを。
ららいふ2 さんが書きました:LINK : fatal error LNK1168: ファイル C:\Users\稜太郎\Desktop\GameProg\Debug\GameProg.exe を開いて書き込むことができません。
このエラーが出ると言うことは、GameProg.exeを実行している可能性が高いです。
コンパイルするときは、GameProg.exeを終了してからにしてください。コンパイルが成功すれば、修正が反映されます。
written by へにっくす

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: 'bool' 型の使用方法を安全にする方法

#5

投稿記事 by softya(ソフト屋) » 7年前

ちゃんと終了しないのは、ProcessMessage()の戻り値をチェックしていないからでは?

【追記】
こちらのトピックが放置されています。続きをお願いします。
「DXライブラリのマウスについて • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=13937
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ららいふ2

Re: 'bool' 型の使用方法を安全にする方法

#6

投稿記事 by ららいふ2 » 7年前

皆さん丁寧にありがとうございます

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: 'bool' 型の使用方法を安全にする方法

#7

投稿記事 by softya(ソフト屋) » 7年前

ららいふ2 さんが書きました:皆さん丁寧にありがとうございます
申し訳ありません。フォーラムルールをお読みくださる様にお願いします。
http://dixq.net/board/board.html

返答が不十分ですので、何がどう良かったのか、果たして問題が解決したのか、こちらに伝わっておりません。
4. 義務行為

[C言語何でも質問掲示板でのみ適用される事項]

・トピックを立て、解決した場合は「解決しました」とだけ書かず、どうやって解決したか他の人に分かるように書いて  からトピックを終了して下さい。
・複数の回答者がいた場合、都合の良い、または自分の気が向いた回答者にだけ返信を書かず、回答をくれた人 全員に対して出来る限りの返信を書きましょう。
・回答者のコメントの中に複数質問があった場合、出来る限りその全てに答えるようにしましょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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