検索結果 19 件

by ウーパールーパー山田
6年前
フォーラム: C言語何でも質問掲示板
トピック: キャラを動かすってだけのクラス設計
返信数: 16
閲覧数: 7971

Re: キャラを動かすってだけのクラス設計

>usaoさん 「キーボードからの入力で画面のキャラクターを上下左右に動かす」という最初の例題と並行して 練習として簡易インベーダーゲームをC++で書いています。 (インベーダーゲームに関してはキーボード入力もクラスとして書いています。) そこでusaoさんに教えていただいた考え方がピタッと一致した感じです。 「player(自機)クラスが外から言われたとおりに動く」という実装にしてkeyboardクラスと離したおかげで キーボードで動かないenemy(侵略者)クラスやbullet(弾)クラスと同じcharクラスから継承させることができました。 usaoさんの言わんとしていたこととずれてるかも...
by ウーパールーパー山田
6年前
フォーラム: C言語何でも質問掲示板
トピック: キャラを動かすってだけのクラス設計
返信数: 16
閲覧数: 7971

Re: キャラを動かすってだけのクラス設計

>purinさん Pimplイディオム、初めて聞きました。 確かにこう書けば、ヘッダファイルが簡潔に書けるのとコンパイル時間が短くなりますね! ヒープを使うのとクラスが増えちゃうのがデメリットって感じでしょうか。 今の私だとクラスがたくさん増えると面倒に見えちゃうんですよね。 もうちょっとうまくクラスを書けるようになりたいです、、、 オブジェクト指向のことで、 実をいうと私、オブジェクト指向を使うと何がどう便利になるのかというのはよくわかっていません。 入門サイトで「こんな機能があって便利である」と言われただけで、まだ実際に使って便利と実感できたわけではないですし。 色々なC言語の入門サイトを...
by ウーパールーパー山田
6年前
フォーラム: C言語何でも質問掲示板
トピック: キャラを動かすってだけのクラス設計
返信数: 16
閲覧数: 7971

Re: キャラを動かすってだけのクラス設計

御二方、ご返信ありがとうございます。
内容は読ませていただきました。
明日、昼から時間がとれるのでそのときに今までのご指導を踏まえてソースコードを書いてみたいと思います。
手短な返答で申し訳ないです。
by ウーパールーパー山田
6年前
フォーラム: C言語何でも質問掲示板
トピック: キャラを動かすってだけのクラス設計
返信数: 16
閲覧数: 7971

Re: キャラを動かすってだけのクラス設計

>usaoさん
私の考えなのに私より上手くまとめてくださいました。ありがとうございます。


usaoさんの方法についてですが、一体どういった意図があってそうしているのでしょうか?

(1)の「キーボードクラスとキャラクタークラスの間に誰か仲介人を挟む」というのは
キーコンフィグをしたいときに便利だとか、それに付随して入力デバイスがキーボードじゃなくなったときにメンテしやすいなどの
利点があるのかなーと予想しています。(違ったら教えてください)

それから、(4)のところで
わざわざ「自発的にではなく」と書いてあるということは自発的ではない場合のメリットが何か存在するのか
併せて教えてほしいです。
by ウーパールーパー山田
6年前
フォーラム: C言語何でも質問掲示板
トピック: キャラを動かすってだけのクラス設計
返信数: 16
閲覧数: 7971

Re: キャラを動かすってだけのクラス設計

>usaoさん

ミスったあああ!
(ぼくもわからんです。)編集して修正しておきました。大変失礼しました。
by ウーパールーパー山田
6年前
フォーラム: C言語何でも質問掲示板
トピック: キャラを動かすってだけのクラス設計
返信数: 16
閲覧数: 7971

Re: キャラを動かすってだけのクラス設計

返信ありがとうございます。 >usaoさん チャートがすごく分かりやすくて捗ります。 せっかく分かりやすいチャートなので自分の中の考えを整理するために利用させていただきました。 ただ、その中で分からなかったのが  →どんなキー操作でキャラクターがどの方向にどれだけ動くのか を決定するのは誰か?   →どうやって 「キャラクタのーの座標を変更する役割を持つ誰か」に,その移動方向を通達するのか? キャラクターがどの方向にどれだけ動くのかを決定するのはキャラクタークラス自身ではないのですか? キャラクタークラスが現在のキーの状態を見るためにキーボードクラスのインターフェースを持っている、という設計を...
by ウーパールーパー山田
6年前
フォーラム: C言語何でも質問掲示板
トピック: キャラを動かすってだけのクラス設計
返信数: 16
閲覧数: 7971

Re: キャラを動かすってだけのクラス設計

返信ありがとうございます。 >purinさん ああっ!そうなんですね! てっきり画像クラスは継承させて使うものだとばかり思い込んでいたので メンバ変数として使うとは分かりませんでした。(C++入門者失格かも、、、) たしかに画像クラスを配列にする状況はあんまり思いつかないかもです。 ちょっと分からないところがあって、 メンバ変数として画像クラスを持たせる場合、前方宣言などで余計なインクルードを省略できます。(c++の場合) と、ありますがどういう意味ですか? メンバ変数として画像クラスのポインタを持たせる、という意味でしょうか? それから、 入力クラスも実装したら便利なのかもしれませんが、今回...
by ウーパールーパー山田
6年前
フォーラム: C言語何でも質問掲示板
トピック: キャラを動かすってだけのクラス設計
返信数: 16
閲覧数: 7971

キャラを動かすってだけのクラス設計

「キーボードからの入力で画面のキャラクターを上下左右に動かす」 このような動作をさせたい場合、どのようなクラスが考えられますか? この文章から見たまま抽出するのであれば「キーボード入力のためのクラス」「キャラクターを管理するクラス」が必要なのかな?と思います。 しかし他のサイトには同じ動作のはずなのに、さらに「画像クラス」「スプライトクラス」「コントローラクラス(?)」などたくさんのクラスが必要だと書いてありました。 まったく意味が分かりません。どれから作り始めればよくて、どれとどれがどんな関係にあるのか、さっぱりでございます。 私にクラス設計の考え方を教えてもらえませんか? まずは簡単な例を...
by ウーパールーパー山田
7年前
フォーラム: C言語何でも質問掲示板
トピック: 使われていない関数のメモリの無駄
返信数: 14
閲覧数: 6858

Re: 使われていない関数のメモリの無駄

どうやってタスクマネージャからそんな高度な情報を読み取ったのかわかりませんが、 コード量の違う2つの実行ファイルを同時に実行して、タスクマネージャの「メモリー(プライベートワーキングセット)」の欄を見比べました もしかして何かマズかったですか 100MB, 200MB分のソースコード(100万行位?)を書くのは大変だし、もし、ウーパールーパー山田さんがそれだけ書けたとしたら、どんなコーディングテクニックも(DLL分けとか抽象化とか)楽勝になっているはず。 さっき上記の方法で見比べたら、百行ぐらいしか違わないのに数MB違っていたような気がするんです ただ今見たらそうでもなかったので単なる見間違...
by ウーパールーパー山田
7年前
フォーラム: C言語何でも質問掲示板
トピック: 使われていない関数のメモリの無駄
返信数: 14
閲覧数: 6858

Re: 使われていない関数のメモリの無駄

抽象化というのは入門サイトの抽象クラスや抽象関数について説明しているページを読めばよかったでしょうか?

自作ゲームを実行してタスクマネージャで確認したところDLLかスクリプト言語にすれば数百MBのメモリが節約できるのではないか
という予測ができました(合っているかは知りません)。
これに対して抽象化がどれくらいのメモリ節約に貢献してくれるかはわかりませんが、この方向でもう少し調べてみたいと思います。

御回答ありがとうございました!
オフトピック
私は耳音痴、筆音痴を併発しているのでリソースデータについて全くいじれません(あまえ)
by ウーパールーパー山田
7年前
フォーラム: C言語何でも質問掲示板
トピック: 使われていない関数のメモリの無駄
返信数: 14
閲覧数: 6858

Re: 使われていない関数のメモリの無駄

今は「メモリを2GB使用します」終わり どれくらいの処理がどれくらいのbyte数になるのかはわかりませんが、 メモリ2GB使用するのって結構プレイヤーを選別しちゃっているような気がします 全てのキャラクターが全員別のインターフェースを持つせいでメソッドが大量発生するという話であれば、それもそれでもうちょっとちゃんと抽象化したほうがいいでしょうね。 プログラミングは初心者なので"今は"C言語以外は勉強したくないです(あまえ) 格ゲーってキャラクターごとにそれぞれ千差万別で多彩な動きをしているように感じますし、 それが数十キャラも登場しようものなら(なんならスマブラみたいにたくさんのステージギミ...
by ウーパールーパー山田
7年前
フォーラム: C言語何でも質問掲示板
トピック: 使われていない関数のメモリの無駄
返信数: 14
閲覧数: 6858

使われていない関数のメモリの無駄

現在、1つのボタンだけで操作できる簡単な格闘ゲームの製作を計画しております。 それに関連して疑問に思ったことがあるのでここで質問させてください。 今回のような単純な格ゲーでは考慮していないのですが、 市販されているような格ゲーでは操作できるキャラクターがたくさん存在していて、それぞれがとても複雑な動作をしています。 とすると現在操作されていないたくさんのキャラクターの動作について書かれているたくさんの関数は結構大きなメモリ領域を無駄に占有していると思います。 この使われていない無駄なメモリ領域についてどういった解決策があるのか気になりネットで色々調べてみました。 そうしたところ解決策になりうる...
by ウーパールーパー山田
8年前
フォーラム: C言語何でも質問掲示板
トピック: カーソルで画面内のボタンをクリックさせたい
返信数: 5
閲覧数: 7472

Re: カーソルで画面内のボタンをクリックさせたい

ご返信ありがとうございます >>THムラオサさん 当たり判定関数の中でマウスの座標を取得するのは良いのでしょうか? メニューボタンが複数ある場合、それぞれの当たり判定をするたびにマウスの座標を取得するのは無駄ではないのでしょうか? ただ、今回のは例であって分かりやすさ優先で書いてくださっているのであれば、ごめんなさい それと私も初心者ですので何か間違ったことを吐いてしまっている場合もごめんなさい >>ISLeさん 「コールバック」を調べたら「コールバック関数」がでてきたのでそれを読んできましたがこれで良かったでしょうか? それとメニューボタンを「登録して」、という部分と、メニューボタンマネージ...
by ウーパールーパー山田
8年前
フォーラム: C言語何でも質問掲示板
トピック: カーソルで画面内のボタンをクリックさせたい
返信数: 5
閲覧数: 7472

カーソルで画面内のボタンをクリックさせたい

半年ぶりにC言語を触る初心者です DXライブラリを使っています マウスカーソルでゲーム画面内のメニューボタンをクリックするまでを実装したいのですがしっくりくる方法が思いつきません 今考えている方法は /*Mouse.cpp*/ void MouseCheck(); //マウスポインタの現在位置とマウスボタンの押下状態を調べる bool MouseReturn(); //マウスボタンの押下状態を返す bool MouseHitCheck(int ボタンの大きさ); //マウスポインタとメニューボタンの当たり判定をする main関数で毎フレームごとにMouseCheck()を呼び出します menu...
by ウーパールーパー山田
8年前
フォーラム: C言語何でも質問掲示板
トピック: 不完全型構造体のポインタが複数ほしい
返信数: 9
閲覧数: 4836

Re: 不完全型構造体のポインタが複数ほしい

指す先の型にかかわらず、ポインタはサイズが(環境によって)決まっています。 だから配列も作れます。 もしサイズが決まっていなかったら、単体の struct tagEnemy *Enemy; も定義できないのではないでしょうか? そうでした 迂闊でした、、、 それと毎度毎度コードを書いてくださりありがとうございます すごく分かりやすいです! あるいは敵構造体ポインタ自体を隠してしまって、外部には敵番号だけでやりとりするのも方法です。 その方が色々とシンプルかもしれません。 先に挙げてくれた先頭ポインタを返却する方法もそうですがどの方法を使えば一番スマートに 書けるのか今、考えあぐねているところ...
by ウーパールーパー山田
8年前
フォーラム: C言語何でも質問掲示板
トピック: 不完全型構造体のポインタが複数ほしい
返信数: 9
閲覧数: 4836

Re: 不完全型構造体のポインタが複数ほしい

質問する前にみけCATさんのやりかたで試していたのですがコンパイルが通りませんでした ですが、どうやらポインタ配列とは関係ないところの記述ミスが原因でコンパイルが通らなかったようです お手数おかけしました 本当にすみません (配列はサイズが分からないと宣言できないから、たとえ不完全構造体のポインタでも配列は作れないのかという 思い込みが自分の中にあったので記述ミスを探すのを怠っていました) ただ、疑問なのですがお二人ともmallocを使用していますが、mallocを使用しない方法でもいいのでしょうか? 例えばtagEnemy構造体が定義されているファイルにstaticなtagEnemy構造体の...
by ウーパールーパー山田
8年前
フォーラム: C言語何でも質問掲示板
トピック: 不完全型構造体のポインタが複数ほしい
返信数: 9
閲覧数: 4836

不完全型構造体のポインタが複数ほしい

struct tagEnemy *Enemy; データ隠蔽のために不完全型構造体を使っていますが 例えば上記のソースコードの場合、敵をたくさん出現させたいときに配列を使いたいですが構造体のサイズが分からないので配列は使えません がんばってポインタ一つ一つに命名していってもいいのですが それだと配列の添字とfor文を使った場合のように敵の処理を一度に済ませることができません なにか良い方法はないのでしょうか?それとも複数のオブジェクトが欲しい場合に不完全型構造体を使うのが間違いなのでしょうか? 投げやりなのですが自分ではどんなに考えても調べても解決できませんでした ご教授よろしくお願いします
by ウーパールーパー山田
8年前
フォーラム: C言語何でも質問掲示板
トピック: フラグメンテーションって気にした方がいいんですか
返信数: 2
閲覧数: 2320

Re: フラグメンテーションって気にした方がいいんですか

ご返信ありがとうございます! フラグメンテーションが起きた時の対処方法ということはメモリが確保できなかったときにも臨機応変に対処するための 仕組みを作っておくということですか・・・ 私なら面倒なので強制終了させちゃいますけど 実は現在、フォルダ内のファイル名をchar型配列に格納していくプログラムを作成中なのですが はじめにフォルダ内のファイル数を数えてファイル数の分だけchar型配列を確保して、 ファイル名をchar型配列に格納するためにまた最初からファイルを操作するという作業が 二度手間のように感じたので質問させていただきました(身の上話) ちょっと面倒ですが上記の方法でいこうと決心できま...
by ウーパールーパー山田
8年前
フォーラム: C言語何でも質問掲示板
トピック: フラグメンテーションって気にした方がいいんですか
返信数: 2
閲覧数: 2320

フラグメンテーションって気にした方がいいんですか

こんばんわ ネットを調べても中々、お目当ての情報が得られないので質問させてください ヒープ領域の確保と解放を繰り返すと、小さい空きメモリがたくさんできるフラグメンテーションという状態になるそうですが これはプログラムを書く方からしたらどういった対応をするべきなのでしょうか あるサイトではヒープ領域の確保はなるべく纏めてやったほうが小さい空きメモリができにくいと記述されており、 またあるサイトでは纏めてメモリを確保しよう(配列)とするとフラグメンテーションにより確保できない場合があるけど リスト構造にすればそんなことは起きづらいよと記述されていました 実際、プログラムを書く方からしたらどちらの言...

詳細検索ページへ移動する