問卷調查模塊實現的過程中的歷程

目前,遊戲已經到了收尾階段,爲了配合公測,特意做了一個問卷調查模塊,用於收集玩家對遊戲的反饋。下面使我們的設計歷程。

設計之初,我們曾經想過使用數據庫保存,爲了實現這個模塊將增加配置庫裏2-3個表,因爲考慮到這個模塊屬於不大重要的模塊(一次性使用),這樣做增加了數據庫的維護了成本,我們的遊戲的配置表已經很多了很多了。

於是我們使用文件來保存問卷調查的配置信息:

題目的類別: 1: 單選;2: 多選 3:問答

    題號 => array(
        'subject' => '問卷調查的題目',
        'type'    => '題目的類別',
        'options' => array(
            題號 . 序號 => '題目的答案',
        ),
    ),
如以下的格式:
return array(
    2 => array(
        'subject' => '你覺得目前遊戲在美術方面存在哪些不足?(多選)',
        'type' => 2,
        'options' => array(
            201 => '裝備道具貿易品等不夠華麗',
            202 => '港口場景畫不夠寫實',
            203 => '港口場景畫不夠寫實',
        ),
    ),
);

注意:題號和序號的必須聯合 ,這樣才能保證題目對應相應的答案,這是構造這個數組的特別需要注意的地方。

所有的玩家都能參加這次問卷,也就是說這個表不涉及到分庫的問題,於是我們在”全局庫“中建立一張表,每個用戶一條記錄,字段有id ,uid, result。result是用戶問卷調查的結果的序列化,使用json_encode序列化。

知識點:

1)獲取一個文件中的數組,使用include。

2) 構建一個合理的數組

3)問卷調查的設計思路

這次問卷調查的主要需求:

1)每個玩家只做一次問卷調查

2)只有問卷調查所有的題目做完才能提交

針對第一個需求,在提前之前檢測一下玩家是否已經提交。對於第2個問題,我們是這樣做的:使用一個json保存玩家的選擇 格式爲{題號:答案},最後統計這個json的長度,和問卷調查的總長度對比,就可以知道題目是否做完,最後,通過ajax把json對象傳到服務器,即可統計玩家的選擇了。

獲取單選題答案

    $(".radio1").each(function () {
        var questionId = $(this).attr('subject');
        var answerId = $("input[type='radio']:checked", this).val();

        if (answerId) {
            result[questionId] = answerId;
        }
    });
知識點:

1) $.each() 和 $(‘').each()的區別

2)$(':checked')和$(":checked", this)的區別

3)需要驗證答案是否爲空,因爲即使獲取不到答案,也會追加到result中

4)動態構建json的方法。

5) $(this).find('')這個函數使用

獲取多選題答案:

    // 獲取多選題答案
    $(".checkbox2").each(function () {
        var questionId = $(this).attr('subject');

        var answerId  = [];

        // 循環讀取多個選擇項
        $("input[type='checkbox']:checked", this).each(function () {
            answerId.push($(this).val());
        });

        if (answerId.length -> 0) {
            result[questionId] = answerId;
        }
    });
知識點:
1)多選題多選,比單選題,多一次循環

2)判斷數組爲空的方法

獲取json的長度,沒有專門的函數,只能循環json

    // 獲取json的長度
    var j = 0;

    for (var i in result) {
        j++;
    }
提交json到服務器,這裏讓我想到了,在URL中,可以直接把JS數組傳到服務器中,那可不可以把json對象直接傳入到URL中呢,最後測試不可以。於是想到了遍歷json,自己構建合法的URL,還有一個方法就是 使用jquery $_get() 第二個參數,把json直接傳入到服務器。

在做這個模塊的時候,還遇到一個知識點就是 使用json_decode()把json轉成數組,需要加入第二個參數並設置爲true,否則是一個對象。

最後學到一點設計的問題,必須檢查玩家提交的結果:驗證題號和答案的合法性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章