ページ 11

キャラの画像を動かしたいのですが、、、

Posted: 2014年6月15日(日) 13:03
by dfghjh

コード:

#include "DxLib.h"
#include <math.h>

#define g 9.8067
#define y_max 2.000

typedef struct{
	int px,py,handle;
	int time,time1;
}ch_t;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){

	char Key[256];
	int handle[16];
	int haikei;
	int flag=0;
	ch_t ch;
	double t;

	if(ChangeWindowMode(TRUE)!=DX_CHANGESCREEN_OK||DxLib_Init()==-1) return -1;
	
	ch.px=320;
	ch.py=240;

	SetDrawScreen(DX_SCREEN_BACK);
	LoadDivGraph("画像/キャラクタ10.png",16,4,4,32,32,handle);
	//haikei=LoadGraph("画像/無題.png");

  while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
 

	   if(Key[KEY_INPUT_RIGHT]==1)
		   ch.px+=5;
		 if(ch.px>640-32) ch.px=640-32;
	
	   if(Key[KEY_INPUT_LEFT]==1)
		   ch.px-=5;
	     if(ch.px<0) ch.px=0;

	   if(Key[KEY_INPUT_UP]==1){
		   ch.time=GetNowCount();
		   flag=1;
	   }

		ch.handle=handle[8];
		DrawGraph(ch.px,ch.py,ch.handle,TRUE);

	   if(flag==1){
		   ch.time1=GetNowCount();
		   t=(double)(ch.time1-ch.time)/1000.000;
		   ch.py=(int)((sqrt(2.000*g*y_max)*t-0.500*g*t*t)*480.000/y_max);
		   if(ch.py>0)
			   DrawGraph(ch.px,480-ch.py,handle[8],TRUE);
		   else
			   flag=0;
	   }

		
	   
		ScreenFlip();
    }
 
    DxLib_End();
    return 0;
}
上記のようにプログラムを記述しすると、「"Drawgraph"があいまいです」との指示を受けて、実行してみると、
画像左右の動きはできるのですが、y軸のジャンプがうまくできず、UPキーを押すと、yの0の位置に画像が描画されます。

何が間違ってるのか教えてください

Re: キャラの画像を動かしたいのですが、、、

Posted: 2014年6月15日(日) 14:22
by softya(ソフト屋)
ch.timeとch.time1は最初は差分は0ですから、tは0です。なのでif(ch.py>0) else flag=0; となります。
あとif(Key[KEY_INPUT_UP]==1){は押している間成立し続けるので、ジャンプを始めたらch.time=GetNowCount();を禁止しないといけません。

Re: キャラの画像を動かしたいのですが、、、

Posted: 2014年6月15日(日) 15:54
by えfgvれbtgr
返信ありがとうございます。

ch.time=GetNowCountの動きを止めるにはどうしたらいいでしょうか?

きけば聞くほど分からないことがでてきて、すみません

Re: キャラの画像を動かしたいのですが、、、

Posted: 2014年6月15日(日) 16:14
by みけCAT
「ジャンプを始めたらch.time=GetNowCount();を禁止」ということなので、

コード:

if(flag!=1)ch.time=GetNowCount();
でいいのではないでしょうか。

Re: キャラの画像を動かしたいのですが、、、

Posted: 2014年6月15日(日) 16:51
by fgtryついう
なんどもすみませんが

if(Key[KEY_INPUT_UP]==1){
// ch.time=GetNowCount();
     // flag=1;
if(flag!=1) ch.time=GetNowCount();
}


このように記述して実行したのですが、Upキーが反応せず、うまくいきませんでした。

Re: キャラの画像を動かしたいのですが、、、

Posted: 2014年6月15日(日) 16:55
by h2so5
名前を統一してください。

Re: キャラの画像を動かしたいのですが、、、

Posted: 2014年6月15日(日) 17:19
by ついうくん
すみません

今後はこれでいきます

Re: キャラの画像を動かしたいのですが、、、

Posted: 2014年6月15日(日) 17:27
by みけCAT

コード:

if(Key[KEY_INPUT_UP]==1){
    if(flag!=1) ch.time=GetNowCount();
    flag=1;
}
としてみてください。

Re: キャラの画像を動かしたいのですが、、、

Posted: 2014年6月15日(日) 17:53
by ついうくん
先ほどと同じ現象がおき、ジャンプせずy=0の地点に描画されます

Re: キャラの画像を動かしたいのですが、、、

Posted: 2014年6月15日(日) 18:14
by みけCAT
52行目を

コード:

ch.py=240-(int)((sqrt(2.000*g*y_max)*t-0.500*g*t*t)*480.000/y_max);
とすると、少し改善するかもしれません。

Re: キャラの画像を動かしたいのですが、、、

Posted: 2014年6月15日(日) 18:21
by ついうくん
いけました!

ただ、UPキーで、元の座標からy軸の+方向、-方向ともに、描画されてしまうので、後は自分でなんとかしてみます!