首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Django网站上存储/模拟游戏数据的最佳方法?

在Django网站上存储/模拟游戏数据的最佳方法?
EN

Stack Overflow用户
提问于 2021-01-15 19:55:00
回答 1查看 224关注 0票数 0

请允许我为我的问题建立一个环境:

  • 在我的网站上,用户注册一个帐户,然后转到游戏页面
  • ,一旦5个玩家加载到游戏页面,一个新的游戏就开始了。这款游戏的工作原理如下:
    • 玩家猜测数字,直到他们找到“魔术数”,即1-100
    • 中的随机数,一旦3名玩家猜对了魔术数,其余2名被宣布为输家并被踢出了

,我的问题是::存储个人游戏信息的最佳方法是什么?为了使游戏正确运行,网站需要以某种方式保存有关游戏的信息;具体来说,一个计数器每次玩家猜对了魔术数字时都会增加。

审议要点:

  • I希望能同时进行多个游戏(website.com/
  • 可以同时进行多个游戏),所以解决方案不应该抑制这一点。
    • 是我和Django一起运行我的网站,同时也可能是我在线实现的游戏的简化版本。实际上,该解决方案能够保存游戏中的多个动态变量/信息。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-16 01:28:17

存储游戏信息很可能是这项任务的直接部分。考虑如何构建模型。我将有一个GamePlayerInGameUser模型(我假设您已经有了)。

这看起来像是一个使用直通模型(PlayerInGame)的机会,因为你需要有某种方式来表示游戏中的玩家是胜利者还是输家。

代码语言:javascript
运行
复制
class Game(models.Model):
     winning_magic_number = models.IntegerField()
     players = models.ManyToManyField(
        User,
        through='PlayerInGame',
        through_fields=('game', 'user'),
    )

class PlayerInGame(models.Model):
      WINNER = 'Winner'
      LOSER = 'Loser'
      UKNOWN = 'Unknown'
      PLAYER_TYPE_CHOICES = [
             (WINNER, 'Winner'),
             (LOSER, 'Loser'),
             (UKNOWN, 'Unknown')
         ]

     user = models.ForeignKey(User, on_delete=models.CASCADE)
     game = models.ForeignKey(User, on_delete=models.CASCADE)
     type = models.CharField(choices=PLAYER_TYPE_CHOICES)

每次用户加入一个游戏时,您都应该创建一个PlayerInGame模型的实例,其中包括加入的用户和他们已经加入的游戏。他们可以从Unknown开始,随着游戏的发展,他们的状态也会发生变化。

这个应用程序的实时方面--需要让玩家猜数字并让模型做出相应的响应--可能是更具挑战性的部分。你需要一个Websocket。有关如何使用Django + websockets创建实时特性,请参见Django通道。https://channels.readthedocs.io/en/stable/

正如克雷格所指出的,这是一个开放的问题,其中的实时部分太长,无法在这里解释;但希望这些想法已经让你开始了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65742745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档