ページ 11

ボタン操作が上手くいきません

Posted: 2015年1月27日(火) 02:15
by isyy
今ボタンを押したら背景が変わるという仕組みを実装したいのですが、上手くいきません。
以下ソースコード一部
haikei.cpp

コード:

#include "DxLib.h"
#include "struct.h"
#include "difine.h"
extern struct haikei h;
void haikei(){
	DrawGraph(h.x,h.y,h.img,FALSE);
	DrawGraph(h.x,h.y-460,h.img,FALSE);
	if (CheckHitKey(KEY_INPUT_F))h.flag = FLAG_ON;
	if(h.y==460+MARGIN)
		h.y=10;
	h.y+=SCROLL_SPEED;
}
void haikei2(){
	if (h.flag = FLAG_ON)DrawGraph(h.x, h.y, h.img2, TRUE);
}
init.cpp

コード:

#include "DxLib.h"
#include "struct.h"
#include "difine.h"
struct ch c;
struct enemy enemey;
struct haikei h;
struct shot s[SHOT];
struct eshot es;
struct nwaykai nk;
struct boss b;
struct bshot bs;
int speed;
int b_img[2][12];
int i;
void GameInit()
{
	SetDrawScreen(DX_SCREEN_BACK);
	h.img=LoadGraph("img/back.bmp");
	c.img=LoadGraph("img/kao.bmp");//自機の画像
	s[i].img = LoadGraph("img/kao.bmp");//ホーミング玉の画像
	enemey.img=LoadGraph("img/kao.bmp");//敵の画像
	enemey.damageimg=LoadGraph("img/kao.bmp");//敵のやられ画像
	nk.img=LoadGraph("img/kao.bmp");
	es.img = LoadGraph( "img/kao.bmp" );
	b.img=LoadDivGraph("img/char/0.png",12, 4, 3, 73,73,b_img[0]);
	h.img2 = LoadGraph("img/back/0/back0.png");
	b.speed = 5;
	nk.speed=50;
	speed=5;
	h.x = 0;
	h.y = 0;
	b.x = 50;
	b.y =100;
	c.x=320;
	c.y=500; 
	c.speed=5;
	h.flag = FLAG_OFF;
	enemey.x[0]=50;
	enemey.y[0]=200;
	enemey.x[1]=100;
	enemey.y[1]=55;
	for(int	i=0;i<SHOT;i++){
		s[i].flag=FLAG_OFF;
	}
    enemey.flag=FLAG_OFF;
	enemey.damageflag = FLAG_OFF;
	enemey.speed=5;
	s[i].speed=10;
	enemey.muki=MOVE_RIGHT;
	s[i].bflag=FLAG_OFF;
	es.flag = FLAG_OFF ;
	es.counter= FLAG_OFF ;
	GetGraphSize(c.img,&c.w,&c.h);
	GetGraphSize(s[i].img,&s[i].w,&s[i].h);
	GetGraphSize( es.img , &es.sw , &es.sh ) ;
	GetGraphSize(b.img, &b.w, &b.h);
	GetGraphSize(enemey.img,&enemey.w,&enemey.h);
}
struct.h

コード:

struct ch
{
	int x;
	int y;
	int img;
	int h;
	int w;
	int speed;
};
struct shot
{
	int speed;
	int w;
	int h;
	int img;
	int flag;
	int bflag;
	int x;
	int y;
};
struct enemy
{
	
	int y[4];
	int w;
	int h;
	int x[4];
	int vx;
	int vy;
	int cnt;
	int wait;
	int damageflag;
	int damageimg;
	int damagecounter;
	int speed;
	int muki;
	int flag;
	int counter;
	int pattern;
	int size;
	int img;
};
struct haikei{
	int x;
	int y;
	int img;
	int img2;
	int img3;
	int flag;
};
struct eshot{
	int x;
	int y;
	int flag;
	int bflag;
	int img;
	int sw;
	int sh;
	int counter;
	double sb; 
	double sbx;
	double sby;
	double bx;
	double by;
	double sx;
	double sy;
};
struct nwaykai{
	float vx;
	float vy;
	int x;
	int y;
	int img;
	int speed;
};
struct boss{
	int x;
	int y;
	int flag;
	int Hp;
	int img;
	int h;
	int w;
	int dflag;
	int muki;
	int speed;
};
struct bshot{
	int x;
	int y;
	int img;
	int h;
	int w;
	int bflag;
};
 struct PointData{
	double x;
	double y;
};
define.h

コード:

#include "DxLib.h"
#define SHOT 100
#define FLAG_ON 1
#define FLAG_OFF 0
#define WINDOW_H 480
#define WINDOW_W 640
#define MOVE_UP 1
#define MOVE_DAWN 0
#define MOVE_RIGHT 1
#define MOVE_LEFT 0
#define SCROLL_SPEED 1
#define MARGIN 0
#define ENEMEY_MAX 100
#define ENMEY_NUNBER 3
#define SHFTNUM 15
#define PI 3.14159		// 円周率
haikei.cppでfを押したらh.flagをFLAG_ONにして背景を描画するというものなのですがなぜかif文が飛ばされてそのまま描画されてしまいます。
if文の書き方が間違えてるのでしょうか

Re: ボタン操作が上手くいきません

Posted: 2015年1月27日(火) 05:10
by Yunix
パッと見たところ、haikei.cppの14行目の条件文が間違っています。
if (h.flag = FLAG_ON) ではなく、
if (h.flag == FLAG_ON) ではないでしょうか。

Re: ボタン操作が上手くいきません

Posted: 2015年1月27日(火) 05:47
by isyy
ご指摘ありがとうございます。上手くいきました