2011-02-04 16 views
2

私はしばらくゲームプログラミングに興味を持ち、OOPに関する多くの本を読もうとしました。問題は、ほとんどの場合、書籍にコードを表示し、「これをここに追加」「そこに追加」と言うが、ジャンプするのではなくOOPの「大きな図」を説明できない。私はOOPの観点から考える方法を知りたい。たとえば、私はこのスレッドObject Oriented application problems in game developmentを読んできました。これは、あなたのクラスについて考えているhowtoについての良い洞察を与えてくれます(player "has"、 "can" .... world "listen")。私はいくつかの助けをしたいと思う方法は、 "プレイヤークラス"のために残すべきものを計画するための正しい質問をするための考え方です。 "世界クラス"のために残すものはどれですか。私はコードを望んでいない、 "私は質問やマインドセットがOOPのために自然なものになりたい"コードを整理する方法。オブジェクト指向プログラミングの考え方

たとえば、私が衝突検出を処理している場合。私はチェックするために "世界"のためにこれを残すべきですか?プレイヤーがチェックするためにそれを残すべきですか?どの質問を私は自分自身に尋ねるべきですか?

「広い」質問に申し訳ありませんが、何かが役に立ちます。良い "本"からいくつかのヒントまで。

PD:私はムーチョプログラミングの経験に

敬具、私は「オブジェクト指向思考過程」の以前の版を読んで、全体のOOPのパラダイムを理解する上で非常に役に立つ本を見つけ

+0

"広範な"質問にごめんなさい。これは良い質問です。しかし、多くのプログラミング経験がなければ、私はOO以外の観点からプログラミングを学び、そこで働くことが簡単だと分かりました。私は言語を最初に学び、OOPを学ぶのが一番良いと信じています。ちょうど私の意見。 – prolink007

+0

http://www.amazon.com/Object-Oriented-Thought-Process-3rd/dp/0672330164/ref=sr_1_1?s=books&ie=UTF8&qid=1296849133&sr=1-1 – madmik3

+0

これはSOのための大きな質問ではありません。しかし、私は**多くの**良い質問をするためにそれを言い換えることができると思います:あなたの衝突検出の質問をしてください。 OOPの思考プロセスを理解するための手段として具体的な例を用いて、問題が真剣に問題になると思います。もう一度、すでに[これについてのいくつかの質問があります](http://stackoverflow.com/search?q=oop+game+object+collision)! –

答えて

0

私は「グロック」への最善の方法は、オブジェクト指向プログラミングの概念は、モジュール、またはビルディングブロックとしてコードを考えることだと思います - それは、この方法でモジュール化できるようにすることができます、その後、コードを書きます同じコードを何度も繰り返し書くのではなく、必要に応じてコードを呼び出すだけで、コードを必要とするときはいつでも再利用できます。それは教訓だけでなく教えられた主題です。あなたはそれが生成する出力の種類、それが取る引数の種類を知って、そしてどのようにそれはあなたがそれを行うために書いたものありません - あなたがそれを再利用するために後で戻ったときので、あなたのコードを文書化することも有用です。

2

書籍を読んでそこに出てプログラムをやめてください。 Javaを学ぶ。それを行うには本を使用してください、しかし、動きを通過しないでください、コードをダウンロードしないであなた自身を書く。当初、あなたはOOPの要点が何か疑問に思うでしょうが、より複雑な問題に遭遇し、OOPがあなたに与える自由を感謝し始めるでしょう。継承、カプセル化、ポリモーフィズムなどのことは、今すぐあなたのための用語です。あなたは彼らが何を意味しているのか分かっていますが、あなたは概念を使用するのに十分なほどプログラミングしていません。いったんそれらを使用して概念を例示するクラスを作成すると、実際のオブジェクト指向プログラミングを学び始めます。あなたはあなたのゲームOOPを作ることに集中すべきではありません。あなたはOOPをあなたのゲームに合わせることに集中すべきです。

物語の道徳的なので、プログラムを行っています。

0

あなたが言ったように、これは非常に広い質問です。経験で、あなたは何を使用する際の優れた感覚を持っています。

「ノウハウ」を知っていることを覚えて、「疑問の解消」を知ることは素晴らしいですが、あなたは「疑問の解消」を理解するための良い基盤を構築します。

今、あなたが持ってきた特定のものに答えるために。 publicをAPIに入れるものと考えてください。 「プレーヤークラス」をお持ちの場合、残りのコードでは何をしたいですか?あなたはそれをある意味でやりとりしたいと思っています。 「プレーヤークラス」と対話するインターフェイスは何ですか?あなたのインターフェースであるものは「公開」でなければなりません。

プライベートにする必要があるものは何ですか?たとえば、プレーヤクラスに有効な範囲内にある属性がある場合(1〜100とします)人々(コードの他の部分)がそれを崩壊させないようにするにはどうすればよいですか?あなたはそのためにプライベートを使用します。これにより、他の人が値を1001に設定するのを防ぐことができます。このようにして、悪い状態になった場合、それはコードの残りの部分ではなく、

デザインに関しては、デザインが変更されることに注意してください。プログラムで最初に立ち上げたときに、1つのクラスが衝突検出を行うべきかどうかを決定できます。 (つまり、あなたの "世界"には衝突検出器があります)おそらく最初に衝突検出器であなたの "世界"を書くだけです。そして、後であなたはコードをリファクタリングして、 "Collision detector"というクラスを持っています。その後、あなたはそれが別の場所にあると判断するかもしれませんが、衝突検出器を "持っている"という別のオブジェクトを持つことができるので簡単です。

ポイントは、あなたのコードをモジュール化すれば簡単です。厳しいルールはありません。まず、あなたが気に留めているデザインでコードを書いてください。途中では、より良いやり方を見つけようとしています。

+0

ありがとうございました。私はあなたが言及した本を見て、それはinterestnigに見える、主に....コード、コードとコードそれが意味をなさない! – fdelriog

0

書き込み、書き込みソフトウェア。人々はOOPからの取引が大きすぎます。これは、モジュール性や低結合性などの特定の設計原則を達成するためのアプローチにすぎません。あなたは実験し、コードを作るものを見ます - 良いコード、コードを柔軟で保守しやすいものにする方法。あなたは、純粋に機能的、手続き的、OOP、または他のパラダイムであろうと、良いデザインにつながる原則を理解するでしょう。

1

私はOOPを学ぶための鍵は確かにコードを書いていると思いますが、実際の世界をどのようにモデル化するかという点で考え始めます。つまり、車のオブジェクトはドア、タイヤ、エンジンなどの属性を持ちます。その行動はおそらくエンジンを始動させ、石油を変えるなど、あなたの気持ちを解き放ち、コードの書き方を煩雑で複雑なものにする方法に関連する方法を考えます。いくつかの問題は本質的に複雑ですが、OOPはそれを整理して実際の世界のファッションを考えるのに役立ちます。あなたはそれを行うことができます...ちょうど試し始める....

関連する問題