显示相同的'session',回合制django游戏

时间:2012-06-01 08:12:43

标签: django django-middleware

我真的不知道这种弥漫性问题是否适用于此,但无论如何我都会试一试。

我正在Django建立一个回合制(Yatzee)游戏,我为用户/玩家设置了一个简单的拉力模型,并为每个用户记分板提供了一个更复杂的模型。

新游戏会生成一个新的记分板,它基本上由多个int-fields和boolean-fields组成,每个得分一个(例如,如果你得到一个两对,有一个字段可以保存得分和将其设置为“已分配”的字段

问题在于,通过这种方法,我在每次转弯后将得分保存到数据库(sqlite),我将能够“暂停”游戏并稍后继续。

我现在想要开始研究,而不知道从哪里开始寻找是如何通过网络“主持”两场或多场比赛。如果他们都坐在同一台电脑上没有问题,因为我可以通过javascript控制玩家/记分牌的数量。

为了实现这一目标,我正在考虑以某种方式将属于'togheter'的记分板分配给某个会话,但是我应该如何以及在哪里这样做是有点超出我的范围。< / p>

我已经阅读了一些关于Django中间件的内容,但是不能确定这样做是不是比试图从模型层解决它更好的方法(相信会有点难......?)。 / p>

2 个答案:

答案 0 :(得分:1)

实现此目的的一种方法是构建一个javascript框架,用于轮询后端的玩家活动。有许多玩家活动需要跟踪:

  1. 新游戏
  2. 玩家离开游戏/超时
  3. 远程玩家轮到掷骰子
  4. 本地玩家轮到掷骰子
  5. 我建议使用带有计时器的AJAX函数,该计时器轮询服务器以获取更新或发布本地播放器活动。

    当我说javascript框架时,我指的是在客户端处理自动轮询和更新的方法。

    请注意,您不能依赖javascript来处理游戏规则,骰子滚动等所有必须在服务器上完成的操作。 javascript应该只更新播放器的GUI以显示当前状态。

    因此,您可以通过以下操作进行AJAX调用:开始新游戏,检查远程活动,滚动骰子,保存播放器选项(玩家选择将3 *六个保存为一对等等)等等。

答案 1 :(得分:0)

我不知道中间件与此有什么关系。

最简单的方法肯定是让游戏模型中的外键指向Player1和Player2的auth.User模型。