我很难确定如何做到这一点,同时避免并发性方面的潜在问题等。
JQuery中的游戏POST
是Score
到Django中的端点。目标是仅存储和显示前15个分数,并最好地模拟传统街机游戏的行为。
该行为应该将新分数与现有分数进行比较,并且只有在新分数进入记分牌时才会询问用户的姓名,从而取消其最低分数。
所以这里有几个关于它如何完成的想法(我不确定哪些Django函数和类也适合,所以请帮助我们):
方法1:
JQuery以POST
,data={"score": [someNumber], "name": "False"}
开头到Django的单独url端点,我们会说url(r'^scoreboard$', scoreBoardView)
,所以,$.post("url.com/scoreboard", data, function(Response){ if Response == ...;})
。
Django视图根据name
的值进行分支,并在从帖子中获取newScore
的值后指定变量score
。 (我不太确定哪些Django方法传递并将POST解析到视图中。)
newScore
的值与现有分数进行比较,并返回True
或False
响应,具体取决于分数是否排名。 (我还在考虑做这个的最好方法:我的想法是我按价值对现有分数进行排序,将新分数与最低值进行比较,如果更高,我可以删除并取代最低分,只对GET请求的分数排名。
如果为True,则将JQuery分支到另一个POST
,其中包含名称和分数(data={"score": [someNumber], "name": "[someName]"}
,这会删除排名最低的分数并创建新的Score
在数据库中输入。
方法2:
替代: 使用任一解决方案,但使用单独的端点。对于缺少大量数据,我不应该使用django-rest-framework。
也许还有其他选择。 谢谢。
答案 0 :(得分:1)
我建议至少做服务器端版本。客户端可以轻松操作,无效分数可以发布到您的游戏中。
如果您要求从服务器到客户端的分数,您将至少有一个优势,即不必向服务器发送低于列表中最低分数的分数请求。
因为分数可以实时更新,所以无论如何都需要进行服务器端测试,以查看分数是否有效。
答案 1 :(得分:1)
我不会做这些。
我建议您返回前15个结果(无论是否有您的分数)作为帖子的结果。所以,让我们说十五个分数分别为130分,120分,100分,97分......,然后你发布76分。无论如何,它应该会返回相同的前十五分。如果您发布的分数将替换前十五分之一,则应将其保存为数据库中的分数(我建议跟踪所有分数,除非您因磁盘空间严重废弃),然后返回前15名,然后包括你的新分数。
希望这有帮助!