2016-08-12 15 views
0

現在、私はJavascript + HTML5キャンバスでマルチサイドプロジェクトとしてマルチプレイヤーチェスゲームを作っています。私はボードを代表するためのベストプラクティスが何かを知りたいと思います。Javascriptでチェスゲームのオブジェクトと2Dの配列を作成する

オプション1:オブジェクトの2D配列 - 私は、すべてのボードピースに共通の機能を持つPieceモジュールを持っています。私はその後、ピースから継承するすべての作品のオブジェクトを持っています。 - 次に、32個のオブジェクトで2D配列を作成し、その位置をボード上に設定できます。

オプション2:2Dの配列 - 特定の整数が与えられたピースを表す2Dグリッドを簡単に作成できます。

どちらのオプションが「ベスト」ですか、それとも良いものがありますか?私は全体的にオブジェクト指向のアプローチを取ろうとしています。

任意の入力を気に入ってください。みんなありがとう。

+0

オプション1は、それぞれのオブジェクトにピースを識別する整数を含めることができますが、ピースのタイプ、白または黒の情報も含めることができます。 'pieces = [{id :1、side: 'white'、type: 'pawn'}、...] オプション2を使用すると、ほとんどまたはまったく効果がなくなり、自分自身を制限するように見えます。目標が全体的にOOに行く場合は、オブジェクトを参照してください! –

+0

個人的に私はオブジェクトの2D配列に行きますので、その部分に何があるのか​​、ボックスの色は何か、どのプレイヤーがその部分に属しているのかなどの情報を簡単に取得できます。 –

答えて

1

オブジェクトを使ってOOPを勉強して、全体的に「より良い」コードを作成することもできます...非常に大きな「ボード」を持つゲームをプログラミングしている場合、つまりサイズが千またはそれ以上のタイルパフォーマンス上の理由から、整数アプローチを検討するかもしれません。

しかし、8x8のチェス盤は、現代のJS通訳者にとっては何もないので、狂っているかもしれません。

+0

32個のオブジェクトを作成しますかポーンオブジェクト、ナイトオブジェクト2個など)、または必要に応じて6個のオブジェクトを作成して使用できますか? 2番目のオプションは、位置を格納するという面では難しいですが、最初のオプションは32個の変数を必要とします... – jebusayah

+0

再び、32個の変数は大したことではありません。明らかに、それらをグローバルスコープ内の個々の変数として保存せず、それらをボードを表す配列に入れてはいけません...空の四角形は単にヌルです。オブジェクトの中にはオブジェクトを置くことができます。違うものなど –

+0

大丈夫、ありがとう! – jebusayah

0

intの配列よりも多くのデータを格納できるので、オブジェクトの2D配列がおそらくより良い選択となります。たとえば、番号5と6を使用して黒と白のポーンを表す代わりに、typeのプロパティとcolorのプロパティを持つオブジェクトを持つことができます。

0

私の意見では、ボードを表現するためのオブジェクトの配列を使用する方が便利です。各ピースオブジェクトとそのグラフィック表現(CSSクラス)を簡単にアタッチすることができます。より厄介なアプローチと間違いなくOOではありません。

関連する問題