質問させてください

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

質問させてください

#1

投稿記事 by pop » 9年前

 ここのゲームプログラミングの館のおかげでDXライブラリをつかってシューティングゲームを作れるようなったので、自分なりに今度はクラスを使って書いてみようと思オブジェクト指向について色々サイトをめぐって調べているのですが、ほとんどがWIN32 APIやDirectXをつかっていて自分の知識ではわからないことだらけだったので悩んでいます。そこで、いくつか質問させてください。

 
  1. DXライブラリをDirectXの代替として使用できるか。
     
  2. オブジェクト指向というのはクラスを部品とする考えであってますよね。ということは、自機の情報が入っているプレイヤーというクラスとキー入力とパッド入力を得るキーというクラスがあるとして、キークラスを使ってプレイヤークラスを操作させることや、画面に表示させるクラスを使って表示することが可能ということで合ってますか?
     
  3. その場合どのようにかけばいいのか?また、どのように勉強すればいいのか?
     
  4. またWIN32 APIとDirectXを覚える場合どっちが簡単ですか?最終的に両方覚えたいのですがモチベーション的に最初に覚えるとしたら。
ちょっと質問内容が当たり前すぎるとか意味的にわかりづらいかもしれませんが、よろしくお願いします。自分はC/C++の基礎知識がわかる程度の初心者レベルに毛が生えた程度です。

通りすがりの名無し

Re: 質問させてください

#2

投稿記事 by 通りすがりの名無し » 9年前

こんばんは

さっそくですが、
1,
 DirectXの代替というと役不足な感じですね
 あくまでもライブラリで必要最低限の処理を簡単にまとめてもらっているのがDXLibなので
 本格的に細かくやることになるのならDXLibを使わずDirectXからちゃんとやらないといけませんね

2,
 少し違うと言うよりオブジェクト指向の一部でしかないですね
 ワタシなんかがオブジェクト指向を説明するともっと出来る人たちから修正など飛んできそうなので
 ざっくりいいますが、classなどだけではなく処理などをオブジェクト(物)として一つに纏めたりなどして相互作用させて処理をすすめていこうという事です。
 それにより複雑な処理などをオブジェクト単位で作ることによりわかりやすくしたり、外部からアクセスされたくない変数
 を隠蔽したり(カプセル化)、同じ情報をもった子classをつくったり(継承)などをすることで、より効率的にまたエラーなどを少なくコーディングする
 技術の事です。

3,
 (´・ω・`)知らんがな ケースバイケース。まず作りたい物の概要をまとめて簡単な企画書でもたててがんばってください

4,
 WIN APIからはじめればいいんじゃない?
 APIも奥が深いけどやるならそっちからがいいんじゃない?


結局あれだ。
それにDirectX,WIn32 API,DxLibも結局最終的になにがしたいかが重要だ
プログラミングをするのは求める結果を実現する為のツールであってそれが結果じゃない。
両方覚えたいですって言われてどこまでってなる、とりあえず目標でも書いてでもくれたら答えやすいけど。
あと覚えるっていうのも全部となったら普通の人なら数年以上かかると思う。
モチベーションうんぬんいっていて数年耐えきれるの?

厳しい言いようだけど、まぁそれだけ大変だよって事だ

アバター
MNS
記事: 35
登録日時: 9年前

Re: 質問させてください

#3

投稿記事 by MNS » 9年前

>1. DXライブラリをDirectXの代替として使用できるか。
なんとしての代用なのか分かりませんが、
オブジェクト指向のプログラムにDXライブラリを使用できるのか、と捉えると、
DXライブラリがオブジェクト指向プログラミングに使えないということはありませんし、
逆に、DirectXがオブジェクト指向でないプログラミングでは使えない、ということもありません。
ただし、DXライブラリは提供される関数群が既に利便的であるような作りをされているので、
わざわざDXライブラリ用のクラスを作ることは少ないと思います。
つまり、グラフィック部分はそのまま使い、ゲームプログラム部分をオブジェクト指向で書くという感じになるでしょう。

>2. オブジェクト指向というのはクラスを部品とする考えであってますよね。ということは、自機の情報が入っているプレイヤーというクラスとキー入力とパッド入力を得る
>キーというクラスがあるとして、キークラスを使ってプレイヤークラスを操作させることや、画面に表示させるクラスを使って表示することが可能ということで合ってますか?
クラスが部品というよりは、オブジェクトが部品といったほうが正しいと思います。
クラスはあくまで部品の設計図のようなもので、オブジェクトの種類を表すものです。
キークラスでプレイヤークラスを操作させることができるか、という質問はいまいちニュアンスを掴みかねるのですが、
キークラスがメンバーとしてプレイヤークラスのインスタンス(オブジェクト)をもてば、
それを通じてプレイヤークラスの各メンバにアクセスさせることは可能です。もちろんパブリックなものですが。
しかしそういう構造がよいかどうかはまた別の話で、
そのキークラスや、画像を表示させるクラスが、
もっと具体的にどんなクラスであるかがハッキリしないと何ともいえないと思います。

>3. その場合どのようにかけばいいのか?また、どのように勉強すればいいのか?
class Player
{
//~~~
};
class Key
{
Player m_player;
   Player* m_player; //ポインタでもつ場合
};
まあ超簡素なものでいえばこんなものになるんじゃないでしょうか。
PlayerのインスタンスをKeyクラスが持つという構造はあまり考えられないので、
実際はポインタか参照を得ることになると思います。
オブジェクト指向が学びたいのならネット上に散在している情報でいいと思いますが、
実際にそれをゲームプログラミングに当てはめている方法は確かに少ないかもしれませんね。
DirectXやWin32APIのせいで純粋なプログラムがみえてこないようなら、
DXライブラリ+C++でのゲーム開発を扱った本が出ているので、
それを参考にしてみるのもよいのでは?


4. またWIN32 APIとDirectXを覚える場合どっちが簡単ですか?最終的に両方覚えたいのですがモチベーション的に最初に覚えるとしたら。
私はどっちもやったことがないので何とも言えませんが、
難易度的にはWin32APIのほうが易しいと思います。
ただし、興味がゲームプログラミングのほうに向いているなら
DirectXのほうが色々と惹き立てられるかもしれません。

pop

Re: 質問させてください

#4

投稿記事 by pop » 9年前

通りすがしの名無しさん、MNSさん返信ありがとうございます。
ズバッと答えていただいておかげで自分の未熟さがわかりました。
もう一度一から勉強しなおし、WIN32APIを勉強してもっと知識なり技術なり身に着けたいと思います

閉鎖

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