ページ 11

起動中に起動させる方法

Posted: 2009年6月16日(火) 00:29
by niconico
シューティングを作っているのですが、一面から二面に移行、二面から三面に移行、……
さらに、イージー、ノーマル、ハードとか、すべて繋げてしまうとあまりに文章が長くなってしまう(できないことはないんですが……)ので、プログラム中にプログラムを差し替えることができないかということなんですが……
たとえば、プログラムAがタイトルだとしたら、
ハードでプログラムB
ノーマルでプログラムC
イージーでプログラムD
という風に起動させていくことはできないでしょうか?


調べるにしてもどのように調べればいいのかもわからなくて……

ありえないことを聞いていると思いますし、言葉で伝えるのは難しいのでもしかしたら足りてない部分もあるかもしれないですのですが、よろしくお願いします

Re:起動中に起動させる方法

Posted: 2009年6月16日(火) 00:48
by GPGA
できますけど、結構面倒ですよ。
境内電話やDSなど、メモリがあまりないハードでないと、今時ではやらないと思います。

環境がわかりませんが、Windows系なら「DLLファイル」、UNIX系なら「ELFファイル」で
検索してください。

Re:起動中に起動させる方法

Posted: 2009年6月16日(火) 01:45
by ねこ
ん~なんだか1ファイルにずっと書いてて、ファイル分割するのがやりたいことなんじゃない?って思ったのですが
ほぼ同じ内容のDLLをリンクするならファイル増やして管理すればいいだけでは?と思うんです。

例えば
Stage1e.cpp
Stage1n.cpp
Stage1h.cpp
Stage2e.cpp
Stage2n.cpp
Stage2h.cpp
・・・

というようにファイル分割する方法じゃダメなんでしょうか?

Re:起動中に起動させる方法

Posted: 2009年6月18日(木) 16:01
by niconico
返信ありがとうございます

DLLファイルで検索をかけて調べてみたのですが、どうもプログラムを共有しているAとBを同時に実行することのできることであって、Aを実行することによって、その結果Bが実行されるorCが実行されるのではないように思えたのですが、これであってますか?

あと、やっぱゲームなので、そういうことしたらゲーム画面って変わってしまいますよね....?

ねこさんの方法に似たようないまちょうどやっているいますね
とりあえず、
hard.cpp
normal.cpp
easy.cpp
で中身をcase文を使って面ごとにわけるつもりです
一面ごとに分けてたら、それだけでもファイルの数が多くなってしまうので

Re:起動中に起動させる方法

Posted: 2009年6月18日(木) 18:20
by GPGA
>DLLファイルで検索をかけて調べてみたのですが、どうもプログラムを共有しているAとBを同時に
>実行することのできることであって、Aを実行することによって、その結果Bが実行されるorCが
>実行されるのではないように思えたのですが、これであってますか?
ある意味間違っていませんが、それだとexeファイルを2つ用意しているような感覚ですね。

私が言いたいのは、画像と同じ扱いをプログラムでも行うということです。
例えば、タイトルに入ったらタイトルで必要な画像を読み込み、タイトルからゲームへ遷移したら
タイトルで使用していた画像を解放して、ゲームの画像を読み込みますよね。

同じように、タイトルに入ったらタイトルで使用するプログラムを読み込んで実行し
ゲームへ遷移したら、タイトルのプログラムを解放してゲームのプログラムを読み込み、実行するということです。

この読み込むプログラムと言うのがDLLファイルに該当します。

DLLファイルを使用して状態遷移を行うサンプルプロジェクトを添付しました。
プロジェクトの構造を見てもらえば、言わんとしていることがなんとなくわかると思います。
また、普通のファイル分割よりも面倒であることもわかると思います。

そのかわり、DLLを使用したプロジェクトは、プログラムの余計なメモリは食いませんし
DLL内のプログラムで変更があった場合、DLLのプロジェクトのみをリビルドすれば
そのほかのプログラムは一切いじる必要がありません。

Re:起動中に起動させる方法

Posted: 2009年6月18日(木) 18:33
by GPGA
開発環境を忘れました

OS:Windows XP Professional SP3
コンパイラ:Visual Studio 2008 Standerd Edition SP1

Re:起動中に起動させる方法

Posted: 2009年6月18日(木) 19:28
by niconico
サンプルプログラムをわざわざ作ってくれるとは・・・・・・
本当にありがとうございます

実行してみましたが、こういうことなのだな、と理解できました
これからこれを解析していきたいなんとかしていきたいと思います
GPGAさんありがとうございました