DXライブラリでシーンを切り替える方法を教えてください

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

DXライブラリでシーンを切り替える方法を教えてください

#1

投稿記事 by フリーナ » 11年前

環境 Win7 VC++ 2010express dxライブラリ

DXライブラリでシーンを切り替える方法を知りたいです。
シーンをメイン関数でswitch文を使って状態を確認して次のシーンに移行してくれるようにしたんですが、うまくいきません。
うまく次のシーンにいってくれません。シーンごとに関数を作ってメイン関数で
順番に起動していく、あるいは切り替えたりしたいんですが最初の処理でとまってしまいます。解決策を教えてください。



#include "DxLib.h"
enum {FEED, MENU} change = FEED;
void feedlogo()
{
SetDrawScreen(DX_SCREEN_BACK);

int i;
int feeder;
feeder = LoadGraph("feeder.png");
for (i = 255; i >= 0; i--)
{
ClearDrawScreen();

SetDrawBright(i, i, i);
DrawGraph(0, 0, feeder, TRUE);
ScreenFlip();
}
change = MENU;
}



void GameTitle()
{
int menugamen;
menugamen = LoadGraph("menugamen.png");
DrawGraph(0, 0, menugamen, TRUE);
}



int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; //Change Window
if( DxLib_Init() == -1 ) return -1; //if error, System is Down.
SetGraphMode( 800, 600, 32 ); //WindowSize Change.
switch(change)
{
case FEED: void feedlogo(); break;
case MENU: void GameTitle(); break;
}
while( 1 ){
if( CheckHitKey(KEY_INPUT_ESCAPE) == 1 ){
break;
}
}
DxLib_End() ;//終了処理をする関数
return 0 ;
}

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

Re: DXライブラリでシーンを切り替える方法を教えてください

#2

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

コードを提示するときはBBcodeを有効にした状態でcodeタグで囲み、
かつ適切なインデントをしていただけると、見やすくて助かります。

WinMain関数内のswitchは1回しか呼ばれないので、GameTitle()の処理は行われません。
解決策は、このswitchの部分をwhileなどのループにいれて、何回も処理させることです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

フリーナ

Re: DXライブラリでシーンを切り替える方法を教えてください

#3

投稿記事 by フリーナ » 11年前

みけCAT さんが書きました:コードを提示するときはBBcodeを有効にした状態でcodeタグで囲み、
かつ適切なインデントをしていただけると、見やすくて助かります。

WinMain関数内のswitchは1回しか呼ばれないので、GameTitle()の処理は行われません。
解決策は、このswitchの部分をwhileなどのループにいれて、何回も処理させることです。
回答ありがとうございます!メイン関数の部分を

コード:

while (!ProcessMessage()) {
			switch(status)
			{
			case FEED: void feedlogo(); break;
           case MENU: void GameTitle(); break;
			}
        ScreenFlip();
}
としてみたんですが、次に進みません。

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

Re: DXライブラリでシーンを切り替える方法を教えてください

#4

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

インデントがあれなので、修正をかけました。
コードを見る限りC言語の基礎的な理解が足りませんので、ゲームプログラミングの館を理解することとC言語の復習を並行でされることをオススメします。
「ゲームプログラミングの館」やC言語でわからないことは質問して下さい。 ここの部分に手を付けるのはまだ早そうに感じます。

コード:

#include "DxLib.h"
enum {FEED, MENU} change = FEED;
void feedlogo() {
	SetDrawScreen( DX_SCREEN_BACK );

	int i;
	int feeder;
	feeder = LoadGraph( "feeder.png" );
	for ( i = 255; i >= 0; i-- ) {
		ClearDrawScreen();

		SetDrawBright( i, i, i );
		DrawGraph( 0, 0, feeder, TRUE );
		ScreenFlip();
	}
	change = MENU;
}



void GameTitle() {
	int menugamen;
	menugamen = LoadGraph( "menugamen.png" );
	DrawGraph( 0, 0, menugamen, TRUE );
}



int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) {
	ChangeWindowMode( TRUE ) ;  //Change Window
	if( DxLib_Init() == -1 ) return -1;  //if error, System is Down.
	SetGraphMode( 800, 600, 32 );  //WindowSize Change.
	switch( change ) {
	case FEED:
		void feedlogo();
		break;
	case MENU:
		void GameTitle();
		break;
	}
	while( 1 ) {
		if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 ) {
			break;
		}
	}
	DxLib_End() ;//終了処理をする関数
	return 0 ;
}
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: DXライブラリでシーンを切り替える方法を教えてください

#5

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

フリーナ さんが書きました:回答ありがとうございます!メイン関数の部分を

コード:

while (!ProcessMessage()) {
			switch(status)
			{
			case FEED: void feedlogo(); break;
           case MENU: void GameTitle(); break;
			}
        ScreenFlip();
}
としてみたんですが、次に進みません。
statusはどこから出てきたのでしょうか?
WinMain関数以外の部分を変えていないなら、changeの値をチェックしないと意味ないと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

フリーナ

Re: DXライブラリでシーンを切り替える方法を教えてください

#6

投稿記事 by フリーナ » 11年前

もうどうすればいいのかわかりません。。
シーン移動できません。失敗します。
ビルド失敗です。移動できません。システムもできません。
どうすればいんでしょうか。

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

Re: DXライブラリでシーンを切り替える方法を教えてください

#7

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

フリーナ さんが書きました:もうどうすればいいのかわかりません。。
シーン移動できません。失敗します。
ビルド失敗です。移動できません。システムもできません。
どうすればいんでしょうか。
私の書いた、
コードを見る限りC言語の基礎的な理解が足りませんので、ゲームプログラミングの館を理解することとC言語の復習を並行でされることをオススメします。
「ゲームプログラミングの館」やC言語でわからないことは質問して下さい。 ここの部分に手を付けるのはまだ早そうに感じます。
と言うことだと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

フリーナ

Re: DXライブラリでシーンを切り替える方法を教えてください

#8

投稿記事 by フリーナ » 11年前

これって誰もが陥るものなんでしょうか?
基礎を学んだんだけど、抜け落ちてしまうことって?
急いだらだめですかね?

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

Re: DXライブラリでシーンを切り替える方法を教えてください

#9

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

>これって誰もが陥るものなんでしょうか?

だれでもではありませんが、よく目にします。

>基礎を学んだんだけど、抜け落ちてしまうことって?

簡単に学べるなら専門学校とか必要ないですよね。
基礎をちゃんと学べている保証もないです。

>急いだらだめですかね?

そもそも、ちゃんと出来るのに数年かかるので焦っても仕方ありませんよ。
焦る人はやりたい目標と今自分のできる事のギャップで嫌になって挫折しやすいです。
自分の成長を楽しみながらやる人が伸びますね。 ← 私の印象です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

フリーナ

Re: DXライブラリでシーンを切り替える方法を教えてください

#10

投稿記事 by フリーナ » 11年前

softya(ソフト屋) さんが書きました:>これって誰もが陥るものなんでしょうか?

だれでもではありませんが、よく目にします。

>基礎を学んだんだけど、抜け落ちてしまうことって?

簡単に学べるなら専門学校とか必要ないですよね。
基礎をちゃんと学べている保証もないです。

>急いだらだめですかね?

そもそも、ちゃんと出来るのに数年かかるので焦っても仕方ありませんよ。
焦る人はやりたい目標と今自分のできる事のギャップで嫌になって挫折しやすいです。
自分の成長を楽しみながらやる人が伸びますね。 ← 私の印象です。
成長を楽しむですか。。。
私は、ゲームを作りたくてCをはじめたんですが
いきなり、大きなものは無理だから小さなものからと、決めて簡単なアクションゲームを作ろうと
今やっているんですが、メニューとかそういうのをつくっててそれもうまくいかなくて
正直、落ち込んでます。
なんか、システムとかもうまくくめるのか心配です。独学なので先生もいないし
だから、自分でつくってやるしかないのですが。。。。がんばるしかないですよね?

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

Re: DXライブラリでシーンを切り替える方法を教えてください

#11

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

> いきなり、大きなものは無理だから小さなものからと、決めて簡単なアクションゲームを作ろうと

それでも初っ端には規模が大きいですね。
そもそも「ゲームプログラミングの館」の基礎的な部分の内容を理解されている様に見えません。

>なんか、システムとかもうまくくめるのか心配です。独学なので先生もいないし

システムを組めない人はタイトル部分も組めませんね。
逆にタイトルよりも本編をちゃんとやるべきです。

>だから、自分でつくってやるしかないのですが。。。。がんばるしかないですよね?

私も独学ですよ。
時代は違いますから、ネットもないし雑誌ぐらいしかなったです。

取り組み方の違いといえば、自分で今出来る事と出来ないことを考えて少しずつ実験しながら基礎を固めたことでしょうか。
振り返るとそうなんですが、やっていた時はなにか動きがわからないと気持ち悪から調べまくったが正解かも知れません。
サンプルのコードがあったら、少し変えて予想通りに動けばOK。だめなら何故こうなるのか考えて再実験。
1命令毎の動作と複数の命令が合わさった動作がイメージで見えてなかったら、それは全く分かっていないと言えます。

たとえば、「ゲームプログラミングの館」のコードですが説明だけでサンプルコードを見ずに書けますか? それが理解しているどうかの差です。

【補足】
> だから、自分でつくってやるしかないのですが。。。。がんばるしかないですよね?

私は楽しんでいたので、がんばった覚えはありません。
やりたから勉強を放り投げて、徹夜して遊んでいただけです。
※ みなさんは「勉強を放り投げ」を真似してはいけません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

フリーナ

Re: DXライブラリでシーンを切り替える方法を教えてください

#12

投稿記事 by フリーナ » 11年前

softya(ソフト屋) さんが書きました:> いきなり、大きなものは無理だから小さなものからと、決めて簡単なアクションゲームを作ろうと

それでも初っ端には規模が大きいですね。
そもそも「ゲームプログラミングの館」の基礎的な部分の内容を理解されている様に見えません。

>なんか、システムとかもうまくくめるのか心配です。独学なので先生もいないし

システムを組めない人はタイトル部分も組めませんね。
逆にタイトルよりも本編をちゃんとやるべきです。

>だから、自分でつくってやるしかないのですが。。。。がんばるしかないですよね?

私も独学ですよ。
時代は違いますから、ネットもないし雑誌ぐらいしかなったです。

取り組み方の違いといえば、自分で今出来る事と出来ないことを考えて少しずつ実験しながら基礎を固めたことでしょうか。
振り返るとそうなんですが、やっていた時はなにか動きがわからないと気持ち悪から調べまくったが正解かも知れません。
サンプルのコードがあったら、少し変えて予想通りに動けばOK。だめなら何故こうなるのか考えて再実験。
1命令毎の動作と複数の命令が合わさった動作がイメージで見えてなかったら、それは全く分かっていないと言えます。

たとえば、「ゲームプログラミングの館」のコードですが説明だけでサンプルコードを見ずに書けますか? それが理解しているどうかの差です。
たぶん、かけないと思います。私が見たのは画像表示のそのあたりだけです。正直。。
急いで、もうつくろうって気持ちが先行してしまってるんだと思います。
正直、私は最初、C#をやっていました。3年前にJAvaを入門を終えて放置してしまい結局プログラミングから離れてしまい
最近(9ヶ月)前)にC#をはじめて、XNA+C#でゲームを作ろうと思ってました。最初は入門サイトやサンプルのおいてあるブログを見ながらでした
カードゲームを作ろうと思ってました。でも結局素材を集めてシステムが作れずに、まさに今と同じ状態でタイトルやフェードインなどの最初だけ
つくって、中身のシステムはまったく作れずに終わり、逃げるように別の言語に移行しました。JavaからRubyなどやって
結局入門を終えて放置で、Rubyのほうはdxrubyというライブラリを使ってウィンドウゲームを作ってたんですがそれ以降は何がしたいのかも
わからずに、放置してC言語の入門をしてこないだC++の入門を終えてDXライブラリを知ってゲームを作ろうと思ったのです。
自分が、システム面をつくれずに放置していたのは事実です。でも、自分はどれかひとつの言語を使いこなさないと駄目だなと思い
ここにきました。前にもいろいろ聞いてましたが、やっぱり自分はひとつの言語を使いこなさないと駄目なんだなと悟り
がんばろうと思っています。今も。でも、正直心配なこともあったりします。うまくいかなくてどうしようと思うときもあります。。。

フリーナ

Re: DXライブラリでシーンを切り替える方法を教えてください

#13

投稿記事 by フリーナ » 11年前

楽しむことはあります。
自分がゲームを作ってるときに画像表示ができたり
すらすらキャラを動かしたりできたときはうれしくて
面白かったです。でもそこから何か自分には大きいものが作れるんではないかと思って
大きなものに挑戦してみたいと思ったんです。

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

Re: DXライブラリでシーンを切り替える方法を教えてください

#14

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

今の現状を正直に書くと、どの言語でも共通なプログラムの流れそのものを理解していない様に見えます。
つまり、どういう順番でプログラムの命令が動くかイメージができているように見えません。
そのぐらい不思議なコードを書いています。
JavaでもC#でもRubyでも大事な部分は同じでなので、どの言語もちゃんとやっていれば間違わないはずの部分です。

あと、ProcessMessage()がどういう役割なのかリファレンスを調べる事さえしていないようです。
どの言語やAPIやライブラリでも同じですが1つ1つの命令や関数などで疑問を調べること放棄したら理解することなど出来ません。
今までやった全部の言語で同じことをしていたのではないかと思われます。

厳しいことを書きましたが、堂々巡りされているようなので、堂々巡りから抜け出すチャンスだと思っていただけば幸いです。

【補足】
> 今も。でも、正直心配なこともあったりします。うまくいかなくてどうしようと思うときもあります。。。

突き落とすみたいで申し訳ないですが、誰にもうまくいく保証などできませんよ。
私の印象ではゲームプログラミングを目指す人の8割は挫折すると思います。
なので、大丈夫だとはとても言えません。
具体的な統計的には、プログラマーを目指す人の6割は最終的にプログラミングを出来ないと言う統計が出ています。
「本の虫: 60%の人間はプログラミングの素質がない」
http://cpplover.blogspot.jp/2012/05/60.html

でも、やらないと出来るどうかも分からないというのも事実です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: DXライブラリでシーンを切り替える方法を教えてください

#15

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

もうひとつ書いておくと、#1の質問で みけCATさんが#2で提案した、
「解決策は、このswitchの部分をwhileなどのループにいれて、何回も処理させることです。」
で返答でwhile (!ProcessMessage()) {でProcessMessage()を使っていますが、ProcessMessage()の役割自体には疑問は無かったのでしょうか?
そこをスルーしてしまっているのが、全てにおいての問題点かもしれません。
分からなければ質問すればよかったのです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

フリーナ

Re: DXライブラリでシーンを切り替える方法を教えてください

#16

投稿記事 by フリーナ » 11年前

今、URLの論文を見たのですが
やはり私には素質というものがないのでしょうか?
なんだか、ここにきてどんどんおちこんでいきそうです。
いままでの時間がすべて意味のないものになってるかもしれないという疑問さえわきます。
やらなければ、やらなければとおもってますが、素質やら変なことを考えてしまいます。

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

Re: DXライブラリでシーンを切り替える方法を教えてください

#17

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

フリーナ さんが書きました:今、URLの論文を見たのですが
やはり私には素質というものがないのでしょうか?
なんだか、ここにきてどんどんおちこんでいきそうです。
いままでの時間がすべて意味のないものになってるかもしれないという疑問さえわきます。
やらなければ、やらなければとおもってますが、素質やら変なことを考えてしまいます。
遅咲きの人もいるので私には分かりませんとしか言えません。
失敗の原因を追求せず、今後に活かせなかればそれは無駄にしていることになりますので、今後の行動で決まるんじゃないでしょうか。
失敗を恐れたら何も出来ません。人は何かしら失敗しながら生きていますので、失敗を今後に活かしてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

フリーナ

Re: DXライブラリでシーンを切り替える方法を教えてください

#18

投稿記事 by フリーナ » 11年前

softya(ソフト屋) さんが書きました:
フリーナ さんが書きました:今、URLの論文を見たのですが
やはり私には素質というものがないのでしょうか?
なんだか、ここにきてどんどんおちこんでいきそうです。
いままでの時間がすべて意味のないものになってるかもしれないという疑問さえわきます。
やらなければ、やらなければとおもってますが、素質やら変なことを考えてしまいます。
遅咲きの人もいるので私には分かりませんとしか言えません。
失敗の原因を追求せず、今後に活かせなかればそれは無駄にしていることになりますので、今後の行動で決まるんじゃないでしょうか。
失敗を恐れたら何も出来ません。人は何かしら失敗しながら生きていますので、失敗を今後に活かしてください。
やってみます。

アバター
Hiragi(GKUTH)
記事: 167
登録日時: 14年前
住所: 大阪府
連絡を取る:

Re: DXライブラリでシーンを切り替える方法を教えてください

#19

投稿記事 by Hiragi(GKUTH) » 11年前

今現在の私と同じ感じの人だなぁと思ったので私の意見も今更ながら書き込ませてもらいます。

素質がないな、とか周りが凄すぎて本当に自分はそんなことができるようになるのだろうか、とか、
気にしてはいけません^^ 焦らずにゆっくりとやっていけばいいのです。全然わからなくなることなどしょっちゅうあるのでそうなったらプログラミングを投げ出しましょう←
投げ出したらまたいつかふとやりたくなってくるものです。そんでまた自分でやりたいことができたら(勉強を捨てて)頑張って作ってみて、調べて、何度も試行錯誤してみましょう、
ダメだったらまたソレを破棄してプログラミングを投げ出しましょう← そんな繰り返しでも全然問題ない(?)と思っています。
(それで消されたソースコードは数知れず...)

私自身、小学6年の時からプログラミングを初めて(その当時からココを利用させて頂いて)
嫌になっては投げ捨てて嫌になっては投げ捨ててを繰り返してC言語すらまだ満足にかけませんしゲームなんて一つも作ったことの無いまま4年が立っています。
(昔マリオみたいなのつくろうとしたけど結局重力を表現した所で挫折したりSTGつくろうとして自機のアニメーションして諦めたり色々)

専門学校とか行ってる人とかなら半年で習得できてしまう程度のモノを4年間でまだ習得できてないようなものですが、別に焦る必要も無いしむしろ焦るほうが逆効果だと思っています。
素質など気にするだけ無駄です。質問ならココでできるし、調べれば大抵のものが出てくるこの時代ですし、使えるものは使いまくって楽しみましょう!

同じような自分が書いた日記とソレに対するコメントが役に立つかもしれないので貼っときます

http://dixq.net/forum/blog.php?u=77&b=4650
だいがくせい!

閉鎖

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