使用JQuery的帖子更新Django中的街机风格记分板

时间:2016-05-18 17:45:29

标签: jquery django http

我很难确定如何做到这一点,同时避免并发性方面的潜在问题等。

JQuery中的游戏POSTScore到Django中的端点。目标是仅存储和显示前15个分数,并最好地模拟传统街机游戏的行为。

该行为应该将新分数与现有分数进行比较,并且只有在新分数进入记分牌时才会询问用户的姓名,从而取消其最低分数。

所以这里有几个关于它如何完成的想法(我不确定哪些Django函数和类也适合,所以请帮助我们):

方法1:

  1. JQuery以POSTdata={"score": [someNumber], "name": "False"}开头到Django的单独url端点,我们会说url(r'^scoreboard$', scoreBoardView),所以,$.post("url.com/scoreboard", data, function(Response){ if Response == ...;})

  2. Django视图根据name的值进行分支,并在从帖子中获取newScore的值后指定变量score。 (我不太确定哪些Django方法传递并将POST解析到视图中。)

  3. newScore的值与现有分数进行比较,并返回TrueFalse响应,具体取决于分数是否排名。 (我还在考虑做这个的最好方法:我的想法是我按价值对现有分数进行排序,将新分数与最低值进行比较,如果更高,我可以删除并取代最低分,只对GET请求的分数排名。

  4. 如果为True,则将JQuery分支到另一个POST,其中包含名称和分数(data={"score": [someNumber], "name": "[someName]"},这会删除排名最低的分数并创建新的Score在数据库中输入。

  5. 方法2:

    1. 从记分板中所有分数的GET请求开始(不确定URL参数对所有分数是多少)。
    2. 对客户端的现有分数进行相同的比较。
    3. 如果分数高于排名最低的分数和POST,则分支关闭。
    4. 删除服务器上排名最低的分数。
    5. 替代: 使用任一解决方案,但使用单独的端点。对于缺少大量数据,我不应该使用django-rest-framework。

      也许还有其他选择。 谢谢。

2 个答案:

答案 0 :(得分:1)

我建议至少做服务器端版本。客户端可以轻松操作,无效分数可以发布到您的游戏中。

如果您要求从服务器到客户端的分数,您将至少有一个优势,即不必向服务器发送低于列表中最低分数的分数请求。

因为分数可以实时更新,所以无论如何都需要进行服务器端测试,以查看分数是否有效。

答案 1 :(得分:1)

我不会做这些。

我建议您返回前15个结果(无论是否有您的分数)作为帖子的结果。所以,让我们说十五个分数分别为130分,120分,100分,97分......,然后你发布76分。无论如何,它应该会返回相同的前十五分。如果您发布的分数将替换前十五分之一,则应将其保存为数据库中的分数(我建议跟踪所有分数,除非您因磁盘空间严重废弃),然后返回前15名,然后包括你的新分数。

希望这有帮助!