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

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

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

#1

投稿記事 by dfghjh » 11年前

コード:

#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の位置に画像が描画されます。

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

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

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

#2

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

ch.timeとch.time1は最初は差分は0ですから、tは0です。なのでif(ch.py>0) else flag=0; となります。
あとif(Key[KEY_INPUT_UP]==1){は押している間成立し続けるので、ジャンプを始めたらch.time=GetNowCount();を禁止しないといけません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

えfgvれbtgr

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

#3

投稿記事 by えfgvれbtgr » 11年前

返信ありがとうございます。

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

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

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#4

投稿記事 by みけCAT » 11年前

「ジャンプを始めたらch.time=GetNowCount();を禁止」ということなので、

コード:

if(flag!=1)ch.time=GetNowCount();
でいいのではないでしょうか。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

fgtryついう

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

#5

投稿記事 by fgtryついう » 11年前

なんどもすみませんが

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


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

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

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

#6

投稿記事 by h2so5 » 11年前

名前を統一してください。

ついうくん

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

#7

投稿記事 by ついうくん » 11年前

すみません

今後はこれでいきます

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#8

投稿記事 by みけCAT » 11年前

コード:

if(Key[KEY_INPUT_UP]==1){
    if(flag!=1) ch.time=GetNowCount();
    flag=1;
}
としてみてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ついうくん

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

#9

投稿記事 by ついうくん » 11年前

先ほどと同じ現象がおき、ジャンプせずy=0の地点に描画されます

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#10

投稿記事 by みけCAT » 11年前

52行目を

コード:

ch.py=240-(int)((sqrt(2.000*g*y_max)*t-0.500*g*t*t)*480.000/y_max);
とすると、少し改善するかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ついうくん

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

#11

投稿記事 by ついうくん » 11年前

いけました!

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

閉鎖

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