2014-09-25 59 views
0

我正在申請一個遊戲,每輪有很多問題。每個玩家都可以回答問題(多個玩家可以回答相同的問題)並獲得不同數量的積分。該應用程序有一個球員名單和一開始的問題列表。如何在JavaScript中對此數據結構建模? (AngularJS)

我不知道該如何建模 - 我正在考慮每個問題都可能有一個字典,Player對象的鍵和他們得到多少點的值。我還考慮爲每個玩家提供一個字典,其中有一個問題對象和點的值(如果他們沒有回答那麼問題不是關鍵)。

我不確定哪個是最好的選擇,或者是否有更好的方法來做到這一點。爲許多玩家提供許多問題對象副本是否是一個好主意(反之亦然,對於其他選項)?

在我AngularJS廠我做了一個播放器類:

function Player(name, heard) { 
    this.name = name; 
    this.heard = heard; 
} 

和QuestionList和問題類

function Question(number) { 
    this.number = number; 
} 

function QuestionList() { 
    this.questions; 
} 

QuestionList.prototype.createQuestions(n) { 
    for (var i = 0; i < n; i++) 
     this.questions.push(new Question(i + 1)); 
} 

怎樣關聯起來?任何幫助將不勝感激,謝謝。

+1

我假設球員可以來來去去,但不管誰在玩,問題都會保持不變。這聽起來像信息存儲在播放器中,而不是在問題中。你有沒有考慮過一個'answers'數組作爲'player'的屬性?數組中的每個項目都可以包含問題(問題對象引用或ID號),選擇的答案,獲得的積分,回答的時間等。 – user113215 2014-09-25 02:59:09

+0

每個回合的玩家都是相同的。 你可以展開對象引用/ id號的東西嗎?我認爲這是我需要避免重複。 另外,我需要遍歷所有問題以顯示記分牌。在你的方法中,我只需要通過每個玩家搜索每個問題編號的問題編號/積分值? – quantumtremor 2014-09-25 03:03:25

回答

1

每一回合都有很多問題,每個問題都有很多選擇(和積分值),每個玩家都有很多選擇,你可以在這些選擇上加總每個問題的得分。

function Round(questions){ 
    this.questions=questions;//array of Question instances 
} 

function Question(question){ 
    this.question=question;//the question "What's a green animal?" 
    this.choices=choices;//array of choice instances 
} 
function Choice(question,choice,pointsWorth){ 
    this.question=question;//the question it belongs to---the parent class 
    this.choice=choice;//"Alligator" 
    this.pointsWorth=pointsWorth;//the correct answer is worth 5, wrong answers 0? 
} 
function Player(){ 
    this.choices=[]; 
} 
Player.prototype.chooseChoice=function(choice){ 
    this.choices.push(choice); 
} 
Player.prototype.score=function(){ 
    return sum(this.choices);//You gotta write this function. this.choices[0].pointsWorth+this.choices[1].pointsWorth etc 
} 
+0

謝謝。選擇就像一個多對多的關係幫手嗎? – quantumtremor 2014-09-25 03:39:34

+0

那麼選擇只是一個問題的選擇。因此,對於「什麼是1 + 1」這個問題,選擇可以是「新選擇(問題」,「兩」,5)「,另一個可以是」新選擇(問題,「三」,0)' – 2014-09-25 03:44:17

+0

另外,選擇和問題文本大聲回答;我唯一要記錄的是點值 - 正確的兩個值取決於他們得到答案的速度有多快,另外一些值是不正確的,所以我不需要爲每個問題單獨選擇一個值。我做了一個ScoreValue類,它有不同的分數值,Round有一個列表。 這是否改變了什麼,或者你寫的結構還是很好? – quantumtremor 2014-09-25 03:55:15