2011-09-10 14 views
0

これは私が達成しようとしているものです。 私は50の異なる仕事のセットを持っています(クラス、つまり兵士、魔道師、修道士など)ジョブコレクションを実装する最適なアルゴリズムは何ですか?

各ユーザーは、クエストを完了するたびにランダムにカードを手に入れます。 ある時点であなたは兵士と僧侶を持つことができますが、魔術師はいなくなります。あなたのコレクションは、あなたが(あなたが10人の兵士を持つことができますが、あなたのコレクションのためにのみyesまたはnoです)同じカードを取得することができ、いつでもで

 
Soldier Yes 
Mage  No 
Monk  Yes 

のように見えることを意味します

あなたがドロップすることができ、いつでも仕事。しかし、あなたは私が今の兵士を持っていない場合でも、気付いた場合 は、したがって、あなたが兵士を落とした場合、コレクションは、この

 
Soldier Yes 
Mage  No 
Monk  Yes 

のようになります。「収集」の仕事を続けます。私はすでにその仕事を "収集"しています。

私はこれをMySQLとPHPで実装する最良の方法を考えていましたか?

今のアイデアは2 です。1.新しいテーブルコレクションを作成し、取得したジョブごとに1つのレコードを保存します。 2.セパレータとしてパイプを使用してフィールドを1つ作成し、結果をインボード/爆発します。

+0

は、あなたの質問の90%関連性があるように見える(と、私は逃しましたポイント)またはあなたはSQLで多対多の関係を行う方法について尋ねるだけですか? –

答えて

0

なぜビットマスクの列を1つ使用しないのですか?

セイSoldier = 1,Mage = 2,Monk = 4

したがって、メイジとモンクだけがある場合、値は2 | 4 = 6になります。

スキーマを変更することなく、後で別のクラスを簡単に追加することができます。

0

重大な問題がない限り、別のテーブルで問題ありません。必要に応じて後で属性にジョブを追加できるという特別な利点があります(例:初心者/マスター、経験値など)。ビットマスクを使用するのは柔軟ではないので、後で醜いdbスキームで終わることがあります。また、兵士や僧侶の仕事をしているすべてのユーザーが必要な場合など、ユーザー間でクイックルックアップを行うこともできません。

0

テーブルに「deleted」という名前のフィールドが追加されました。 0 ==存在、1 ==削除 そのようにして、ゲーム内のすべてのカードの話をすることができます。それは、しかし、いくつかの行を追加する可能性があります。

あなたはどう思いますか?

http://apps.facebook.com/talesofm/jobs(あなたが仕事を持っている場合、あなたがそれを持っていない場合、それは黒と白になり、色付けされます)

関連する問題