请允许我为我的问题建立一个环境:
,我的问题是::存储个人游戏信息的最佳方法是什么?为了使游戏正确运行,网站需要以某种方式保存有关游戏的信息;具体来说,一个计数器每次玩家猜对了魔术数字时都会增加。
审议要点:
发布于 2021-01-16 01:28:17
存储游戏信息很可能是这项任务的直接部分。考虑如何构建模型。我将有一个Game
、PlayerInGame
和User
模型(我假设您已经有了)。
这看起来像是一个使用直通模型(PlayerInGame
)的机会,因为你需要有某种方式来表示游戏中的玩家是胜利者还是输家。
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/
正如克雷格所指出的,这是一个开放的问题,其中的实时部分太长,无法在这里解释;但希望这些想法已经让你开始了!
https://stackoverflow.com/questions/65742745
复制相似问题