PHPを使用して書いているゲームがあります。私の質問の目的のために、私のゲームを iPhone の「Words with Friends」と比較できます。このゲームに慣れていない人のために、これはオンライン/モバイルのスクラブル ゲームです。ゲームは 3 つの主要なステップで構成されます。
- 最初の 2 人のユーザーがゲームを開始することを決定します。
- 2番目に、2人のユーザーのゲームデータを保持するデータベーステーブル「DATA」内に新しい行が作成されます。
- 3 つ目、そして最後に、2 人はゲームをプレイする新しいページに移動します。ゲームオーバーになると「DATA」テーブルの行が削除され、勝敗が保存されて「USER」テーブルに反映されます。Words with Friends と同様に、ユーザーはいつでも複数の「オープン ゲーム」を持つことができます。つまり、別のゲームを開始する前に、あるゲームを終了する必要はありません。
背景: MySQL データベースには、少なくとも 2 つのテーブルがあり、1 つは一般的なプレーヤー データ用で、1 つは USER というラベルが付けられ、もう 1 つは現在進行中のゲームの統計を保持するための DATA と呼ばれます。各ユーザーには、アカウントを作成するときに一意の 9 桁の ID プライマリ キーが与えられます。
このようなことを達成するために使用されるベスト プラクティスについてアドバイスが必要です。私の意見ではかなり原始的なアイデアがいくつかありましたが、それらは機能しますが、より専門的なものを使用したいと考えています.
私のアイデアの 1 つは、2 つのユーザー ID のうち小さい方の ID を大きい方の ID の先頭に連結し、それをデータベースに保存することでした。例。adam と alan の 2 人のユーザーがいます。それらの ID は123456789
、223456789
それぞれ および です。GAMEID
これら 2 つは、が に等しいDATA テーブルに新しい行を作成するゲームを開始し123456789223456789
ます。彼らはゲームの途中でプレイし、サインアウトします。翌日、彼らは新しいゲームを始めようとします。データベースは、どのユーザーが小さい ID を持っているかを確認し、それらを連結して、ゲームの記録が既に存在するかどうかを確認します。ゲームがすでに開始されていることに気づき、123456789223456789
まったく新しいゲームを作成する代わりに、すでに進行中のゲームに戻します。
これは確かにやり過ぎであり、この問題を回避するもっと簡単な方法があるはずです。感謝し、提案やヒントをお願いします。