こんにちは、久しぶりの質問になります。
私は今、コードを分割してシューティングゲームを作っています。ですが、まず、キーボードを押して動かすことができません。(分割せずにはできるんですが)
①シューティングゲームで分割の一番シンプルな形はどんな形ですか?
②取りあえず分割していて画像を動かせる方法が知りたいです。(きれいな形で)
いまいち分割してしまったらこんがらがってしまいました。返信お願いします。
分割
Re: 分割
C++のお話でしょうか?
オブジェクト指向の言語かどうかでお話も少し変わってくると思いますが・・・
①については
単純に分かりやすさ、可読性を重視するのなら
・描画関連の関数をまとめたソースコード
・自機制御の関数をまとめたソースコード
・敵制御の関数をまとめたソースコード
・BGMやSEを制御する関数をまとめたソースコード
・定数やグローバル変数の宣言をまとめたヘッダーファイル
といった具合に、それぞれの用途ごとに分けて管理すればいいと思います。
オブジェクト指向なら関数と情報を格納する変数をまとめてクラスにするのがいいでしょうね。
②についてですが
多分ここで僕がアレコレ言うよりもこのサイトの龍神録の館を見た方が参考になると思います。
龍神録の館
でも一応簡単に説明しますね
ソースを分割せずに一つのファイルにまとめた状態では上手くできる、とのことですね。
そこから分割した、ということは描画関数とキー入力の取得及び自機の制御関数を別々のソースコードに分けたということでしょう。
この時問題になるのは
・関数を呼び出せない
・情報(変数)をソースコード間で共有できない
のどちらかだと思います。
どちらにしてもexternというモノが必要になってきます。
まずはこれに関して勉強するといいですよ。
オブジェクト指向の言語かどうかでお話も少し変わってくると思いますが・・・
①については
単純に分かりやすさ、可読性を重視するのなら
・描画関連の関数をまとめたソースコード
・自機制御の関数をまとめたソースコード
・敵制御の関数をまとめたソースコード
・BGMやSEを制御する関数をまとめたソースコード
・定数やグローバル変数の宣言をまとめたヘッダーファイル
といった具合に、それぞれの用途ごとに分けて管理すればいいと思います。
オブジェクト指向なら関数と情報を格納する変数をまとめてクラスにするのがいいでしょうね。
②についてですが
多分ここで僕がアレコレ言うよりもこのサイトの龍神録の館を見た方が参考になると思います。
龍神録の館
でも一応簡単に説明しますね
ソースを分割せずに一つのファイルにまとめた状態では上手くできる、とのことですね。
そこから分割した、ということは描画関数とキー入力の取得及び自機の制御関数を別々のソースコードに分けたということでしょう。
この時問題になるのは
・関数を呼び出せない
・情報(変数)をソースコード間で共有できない
のどちらかだと思います。
どちらにしてもexternというモノが必要になってきます。
まずはこれに関して勉強するといいですよ。
最後に編集したユーザー jay on 2012年2月08日(水) 22:07 [ 編集 1 回目 ]
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 分割
設計に関しては
http://dixq.net/g/
こちらの「ゲームプログラミング設計」の章を参考にして下さい。
ちょうど、キーボード操作を受け付ける仕様で分割する方法を紹介しています。
d1~d5まで読めば自分で任意のモジュールを追加することが出来るようになると思います。
しかしピュアCでは大規模な設計がとても難しいです。
設計について興味があればC++を学び「デザインパターン」を学んでみると良いかもしれません。
ただC++はよくも悪くもC言語と互換性があるので、「なんちゃってC++」になりがちです。
そういう意味では一度JAVAやC#のように完全にクラスでなければ作れない環境で修業をしてみるというもの良いと思います。
・・と言うと話を大きくし過ぎかもしれませんが、とりあえずリンク先の情報を見て設計してみて、その後で「オブジェクト指向」というキーワードで調べてみて下さい。
http://dixq.net/g/
こちらの「ゲームプログラミング設計」の章を参考にして下さい。
ちょうど、キーボード操作を受け付ける仕様で分割する方法を紹介しています。
d1~d5まで読めば自分で任意のモジュールを追加することが出来るようになると思います。
しかしピュアCでは大規模な設計がとても難しいです。
設計について興味があればC++を学び「デザインパターン」を学んでみると良いかもしれません。
ただC++はよくも悪くもC言語と互換性があるので、「なんちゃってC++」になりがちです。
そういう意味では一度JAVAやC#のように完全にクラスでなければ作れない環境で修業をしてみるというもの良いと思います。
・・と言うと話を大きくし過ぎかもしれませんが、とりあえずリンク先の情報を見て設計してみて、その後で「オブジェクト指向」というキーワードで調べてみて下さい。