1

PHPテキストベースのゲームを開発しています。ゲームでタスクを整理しています。基本的にタスクはゲームの理解を深めます。

タスクは、ゲーム内の小さなアクションのグループです。

例えば:

タスクの説明: 自転車を盗んで修理し、別の都市に出荷する必要があります。

3つのアクションが含まれています。

  1. 自転車を盗む
  2. 自転車を修理する
  3. 別の都市(ロンドンとしましょう)に発送します

これらの 3 つのアクションは、1 つの異なるページで可能です。

TASK(task_id, title, description (TASK Description Above),STATUS) のテーブルを作成したのですが、タスクのアクションの保存方法と実行方法がわかりません。

関連テーブル TASK_ACTIONS (task_id, action_id,action(?),done) を使用するという 1 つのアイデアがあります。

しかし、アクション アクション(?) を格納する形式がわかりません:

アクションを確認するSQL文は以下の3点のようです。

  1. 自転車が盗まれたかどうか。はいの場合、アクションを完了にマークします
  2. 自転車は修理されたか、まだ損傷しています。修復された場合は、アクションを完了とマークします
  3. 自転車がロンドンに出荷されたかどうか。発送された場合は、アクション完了のマークを付けます

上記のすべてが完了とマークされている場合は、TASK STATUS を COMPLETED としてマークし、次のタスクを表示します。

4

1 に答える 1

1

これを行う安価な方法は次のようになります。

tasks
{
    user_id
    has_theft_bike
    has_repaired_bike
    ... 
}

ただし、これを展開するのは簡単ではありません。より正しい方法は、アクション テーブルですべてのアクションを定義することです。

 actions // defines all possible actions (also actions not part of a task)
 {
      action_id
      description
 }

 user_actions // has one record for every action a user commits
 {
      user_id
      action_id
      date // possible extra
 }

 tasks // all possible tasks
 {
     task_id
     name
 }

 task_actions // all actions linked to a task
 {
     task_id
     action_id
 }

このようにして、ユーザーが行うすべてのアクションをログに記録します。自転車を盗むアクションと自転車を修理するアクションを作成できます。

たとえば、タスク 5 (自転車を盗んで修理する) を完了するために必要なすべてのアクションを取得できます。次に、これらすべてのアクション ID が現在のユーザーの user_actions テーブルにある場合。ユーザーがタスクを完了したことを意味します。

数人のユーザーがいる場合、 user_actions テーブルが非常に速く成長するというわけではありません。

于 2011-10-19T13:57:24.330 に答える