ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
AI
記事: 27
登録日時: 13年前

ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…

#1

投稿記事 by AI » 11年前

こんにちは。
今、C#+DXLibでゲームを作っています。
構成は、まずメインループがあり、そこには演算処理・描画処理などの部分があります。
それらの部分に、別のファイルにあるタイトル画面の処理やダンジョンの処理などを状況に応じて読み込んで実行していきます。
これらのファイルの中で、一々キーボードの読み込みやウィンドウの作成などのクラスを読み込んでいるのですが、
どのファイルでも使うものなので、もしできればメインループで一度読み込んでOKということにしたいのです。
そういうことはできるでしょうか?
C#を始めたばかりなので、基本的なことがわかっていないのだと思います。
やり方があれば教えてください。
あと、もし「こうしたほうがいいよ」というものがあれば、それも教えていただけると嬉しいです!

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

Re: ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…

#2

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

クラスのインスタンスを別のクラスでも使いたいということでしょうか? C#の文法レベルの理解度が分からないので教えていただけますか?

>一々キーボードの読み込みやウィンドウの作成などのクラスを読み込んでいる

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

AI
記事: 27
登録日時: 13年前

Re: ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…

#3

投稿記事 by AI » 11年前

C#は高校の頃に少しだけやっていて、Helloworldから簡単な計算のコードがかける程度です。最近は構造体を勉強しました。

>一々キーボードの読み込みやウィンドウの作成などのクラスを読み込んでいる
メインループとは別のファイルに、キーボードの処理をするクラスが有ります。
そのクラスのインスタンスを、メインループから呼んでいるタイトル・ダンジョン・街などの各ファイルで逐一作成し、
メソッドを利用しています。
この処理をなくし、メインループで一度インスタンスを作成しそれを各シーンで使い回せれば…と思っています。

これはふつうのコトなのでしょうか?インスタンスを何度も作ると無駄があってよくないのかなあと思っていたのですが、
これが普通であればこのままで大丈夫です。
このあたりの感覚もまだ全然なくて…説明もわかりづらくて申し訳ありません。

お手数ですが何卒よろしくお願いいたします!

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

Re: ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…

#4

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

インスタンスの生成は最低限に抑えるべきですので、1つのインスタンスが理想です。
メインから参照で受け渡すか、シングルトンにすべきかと思います。
「C# - Singleton(たった1つのインスタンス)」
http://hccweb1.bai.ne.jp/tsune-1/CSharp/singleton.html
インスタンスが複数あるとバグにも悩まされると思います。

あと、ちゃんとC#の文法やオブジェクト指向を学ばれたほうが良いと思いますよ。

【補足】
各クラスがキーボードのクラスのインスタンスを受け取ってよいかという抽象化設計的な問題もありますけど。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

AI
記事: 27
登録日時: 13年前

Re: ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…

#5

投稿記事 by AI » 11年前

〉ちゃんとC#の文法やオブジェクト指向を学ばれたほうが良いと思いますよ。
ありがとうございます!そうですよね、今ゲームを作っているのは、c#の学習のためなんです…何か楽しいことがないと続かないもので…

〉メインから参照で受け渡すか、
これは「参照渡し」のことでしょうか?
今調べてきたのですが、参照渡しは呼び出した変数をメソッド内から書き換えたいために利用するのですよね?
インスタンスを書き換えることはないと思うのですが、値渡しではいけないのでしょうか?
シングルトンについては家に帰ってから中身を理解しようと思います。いつもありがとうございます!

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

Re: ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…

#6

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

参照で受け取っても変更できない方法はあります。とう言うかクラスならカプセル化で出来ますよ。
c#を忘れてきているので、constはクラスに対して使えなかったと記憶してるんですが他にも方法があるかもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

AI
記事: 27
登録日時: 13年前

Re: ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…

#7

投稿記事 by AI » 11年前

カプセル化もよくわかってないので今後調べます!
シングルトンは(もう出来上がっていますし)使いやすそうではあるのですが、きっとこれをそのまま使って満足してしまいそうなので今後は参照渡しとか積極的に使っていきたいと思っています。
オブジェクト指向は言葉とイメージだけなんとなくわかっていたレベルだったのですが、調べてみたらすごく面白そうだったので、今作ってるものをエセオブジェクト指向っぽくしていってみたいです。
いつもお世話になっております、ありがとうございました!

閉鎖

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