ページ 11

RPG

Posted: 2009年2月22日(日) 14:11
by 初心者
今、RPGゲームを作ろうと思っているんですが、参考になるページがあまりありません。
誰か、参考になるページがあれば教えてください。

Re:RPG

Posted: 2009年2月22日(日) 14:30
by kazuoni
確かにあまりない気がします。
http://dixq.net/g/
で導入なら見れますよ。
作る流れだけなら
ttp://wiki.game-develop.com/index.php?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2F%BD%E9%BF%B4%BC%D4%B8%FE%A4%B1%2F%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB%2F%C3%CA%B3%AC%C5%AA%B3%D8%BD%AC%2FFF%C9%F7RPG%A4%F2%BA%EE%A4%EC#s4dd3d50
に載ってます。あくまで流れだけですw
あとは書籍ですかね^^;

Re:RPG

Posted: 2009年2月22日(日) 21:12
by 初心者
返答ありがとうございます。
他には、ありませんか?

Re:RPG

Posted: 2009年2月22日(日) 22:17
by Justy
(探せばもっとあるかと思いますが)ソースを公開しているRPGです。
 解析すればきっと参考になるでしょう。


Battle for Wesnoth
ttp://www.wesnoth.org/

PlaneShift - A 3D Fantasy MMORPG
ttp://www.planeshift.it/

Egoboo
ttp://egoboo.sourceforge.net/

Re:RPG

Posted: 2009年2月23日(月) 21:47
by 初心者
返答ありがとうございます。
探してもらった、ページを基に作らせていただきます。
さっそく質問なんですが、
void MyMain(){
	Vector curvec1 = {0,0};

	int Key = GetJoypadInputState( DX_INPUT_KEY_PAD1 );
		if( Key & PAD_INPUT_UP ){
		curvec1 = AddVector( curvec1, JIKI_UP );
		g_jikipos = AddVectorInFrameTime( g_jikipos, curvec1 );
		DrawAnimation( g_jikipos.x, g_jikipos.y, 1, 0, FALSE,
			&g_jikiimage[12], 4, 12 );
	};
	if( Key & PAD_INPUT_LEFT ){
		curvec1 = AddVector( curvec1, JIKI_LEFT ); 
		g_jikipos = AddVectorInFrameTime( g_jikipos, curvec1 );
		DrawAnimation( g_jikipos.x, g_jikipos.y, 1, 0, FALSE,
			&g_jikiimage[4], 4, 12 );
	};
	if( Key & PAD_INPUT_RIGHT ){
		curvec1 = AddVector( curvec1, JIKI_RIGHT );
		g_jikipos = AddVectorInFrameTime( g_jikipos, curvec1 );
		DrawAnimation( g_jikipos.x, g_jikipos.y, 1, 0, FALSE,
			&g_jikiimage[8], 4, 12 );
	};
	if( Key & PAD_INPUT_DOWN){
		curvec1 = AddVector( curvec1, JIKI_DOWN );
		g_jikipos = AddVectorInFrameTime( g_jikipos, curvec1 );
		DrawAnimation( g_jikipos.x, g_jikipos.y, 1, 0, FALSE,
			&g_jikiimage[0], 4, 12 );
	};
	while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 1){
		ClsDrawScreen();
		DxLib_End();
	}
}
と書いてみましたが、キーを押したときしか、キャラが描画されません。
キーを押していなくても描画できる方法は、ありませんか?

Re:RPG

Posted: 2009年2月23日(月) 21:59
by SCI
フラグ変数を用意して、「入力」と「出力」の間にワンクッション置いてみてはどうでしょう。
「入力」→「出力」とすると、入力がなければ出力はされません。
「入力」→「状態をstatic変数で保存」→「変数の値によって出力」とすれば、期待したような状態になるのではないでしょうか。

Re:RPG

Posted: 2009年2月23日(月) 22:20
by Dixq (管理人)
MyMainっていつ呼ばれるんでしょう?

処理の流れをよく考えて見ましょう。

まず入力状態を調べ、何か処理をした後、
メッセージ処理が正常でかつエスケープが押されている間
画面を消してDXライブラリの終了をし続ける

って意味になってしまっています。

DXライブラリの終了処理を何度もやっていることになってますが、DXライブラリの終了関数は本当に終わりたい時に呼んでください。
まずプログラムを書く前にどういう流れで処理を書きたいのか書いてみて実装してみるのがいいかもしれません。

Re:RPG

Posted: 2009年2月24日(火) 18:55
by 初心者
SCIさんへ
具体的に教えてください。

Dixq (管理人)さんへ
>メッセージ処理が正常でかつエスケープが押されている間
画面を消してDXライブラリの終了をし続ける

確かにそうですね。