ただいま勉強中なのですが、
http://dixq.net/g/
上の31章でいじってたら移動速度が速くなりました><;
ゆっくり動かすにはどうしたらいいですか?
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; //DXライブラリ初期化 エラーが起きたら終了
int i,x1=640-24,x2=0,image[16];
LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , image ) ; //画像を分割してimage配列に保存
while(1){
ClearDrawScreen(); //裏画面のデータを全て削除
if( ProcessMessage() == -1 ) break ; //異常がおきたら終了
x1-=3;
x2+=5;
for(i=0;i<100;i++)
DrawGraph(GetRand(640),GetRand(480),image[4],TRUE);//ランダムな場所に画像を描写
if(x1<0) break; //画像1のx座標が0未満になれば終了
ScreenFlip() ;//裏画面データを表画面へ反映
}
WaitKey(); // 何かキー入力があるまで待つ
DxLib_End() ;// DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
初歩の質問・・・です。。
Re:初歩の質問・・・です。。
まずはプログラムを理解することが大切です。
プレイヤーの移動速度はどこかで値で定義されているのではないでしょうか。(ごめんなさいソース見てません)
その変数が使用されている箇所を探し、値が元と違えばそれを直してみれば良いと思います。
それではない、それでもない場合、フレームレートが60以下でなければ、
描画タイミングを書き換えてしまった可能性があります。
フレームレートが60以下になるには、1000 / 60 ミリ秒待つ必要があります。
計算苦手なので自分で計算して値を見比べてください。私と同じくわからなければ、コンパイラに任せます。(※)
私が今この状況で考えられるのはこの位です。お役にたてなかったらごめんなさい@@;
※定数同士の計算はコンパイラが事前に計算してくれることがありますので、
そのまま1000 / 60と書いてしまった方が良いかもしれません。(例: a = 1 + 2 + b; -> 最適化 -> a = 3 + b;)
STGの方かと思ったら全然違かった… 忘れてください@@;;;
プレイヤーの移動速度はどこかで値で定義されているのではないでしょうか。(ごめんなさいソース見てません)
その変数が使用されている箇所を探し、値が元と違えばそれを直してみれば良いと思います。
それではない、それでもない場合、フレームレートが60以下でなければ、
描画タイミングを書き換えてしまった可能性があります。
フレームレートが60以下になるには、1000 / 60 ミリ秒待つ必要があります。
計算苦手なので自分で計算して値を見比べてください。私と同じくわからなければ、コンパイラに任せます。(※)
私が今この状況で考えられるのはこの位です。お役にたてなかったらごめんなさい@@;
※定数同士の計算はコンパイラが事前に計算してくれることがありますので、
そのまま1000 / 60と書いてしまった方が良いかもしれません。(例: a = 1 + 2 + b; -> 最適化 -> a = 3 + b;)
STGの方かと思ったら全然違かった… 忘れてください@@;;;
Re:初歩の質問・・・です。。
規約と注意事項を読みましょう。
ソースを貼る場合はタグを使って投稿しましょう。
原因はある関数を使っているが意味が無いことにあります、
その関数を削除するか意味を持たせましょう。
ソースを貼る場合はタグを使って投稿しましょう。
原因はある関数を使っているが意味が無いことにあります、
その関数を削除するか意味を持たせましょう。
Re:初歩の質問・・・です。。
これなんでx1とかx2とか使ってるんですか?
もし画像の座標をx1とかx2にしたいのならDrawGraphで座標を決める時にランダムな値じゃなくて、x1とかを使えばちゃんとなると思いますよ。
もし画像の座標をx1とかx2にしたいのならDrawGraphで座標を決める時にランダムな値じゃなくて、x1とかを使えばちゃんとなると思いますよ。
Re:初歩の質問・・・です。。
>>soodさん
for(i=0;i<100;i++)
DrawGraph(GetRand(640),GetRand(480),image[4],TRUE);//ランダムな場所に画像を描写
ここの第一引数と第二引数がランダムな値になっています。
Xが640まで、Yが480までを、for文で100回処理しています。
この処理は、x1<0 になるまで繰り返されます。
望みどおりの結果になるかどうかは解りませんが、
DrawGraph(x1, x2, image[4],TRUE); とすることで、ランダムな場所に描画は避けられると思います。
for(i=0;i<100;i++)
DrawGraph(GetRand(640),GetRand(480),image[4],TRUE);//ランダムな場所に画像を描写
ここの第一引数と第二引数がランダムな値になっています。
Xが640まで、Yが480までを、for文で100回処理しています。
この処理は、x1<0 になるまで繰り返されます。
望みどおりの結果になるかどうかは解りませんが、
DrawGraph(x1, x2, image[4],TRUE); とすることで、ランダムな場所に描画は避けられると思います。
Re:初歩の質問・・・です。。
描画先を裏画面に指定していた関数を消してしまっているようです。
SetDrawScreen ( DX_SCREEN_BACK );
をwhileループの前に入れてください。
また、裏画面に描画された画像は
ScreenFlip ();
が実行されるまで表示されません。
SetDrawScreen ( DX_SCREEN_BACK );
をwhileループの前に入れてください。
また、裏画面に描画された画像は
ScreenFlip ();
が実行されるまで表示されません。
Re:初歩の質問・・・です。。
上から順番に処理の内容を見てみましょう。 while(1){ ClearDrawScreen(); //裏画面のデータを全て削除 if( ProcessMessage() == -1 ){ break ; //異常がおきたら終了 } x1-=3;//x1を3少なくする x2+=5;//x2を5多くする for(i=0;i<100;i++){//100処理 DrawGraph(GetRand(640),GetRand(480),image[4],TRUE);//ランダムな場所に画像を描写 } if(x1<0){ break; //画像1のx座標が0未満になれば終了 } ScreenFlip() ;//裏画面データを表画面へ反映 } ですよね。 「今何がしたいか」を明確にし、それをまず日本語で書いてみてから、プログラムにすると 解り易いかもしれません。