2010-08-26 51 views
2

我正在做一個基於多人遊戲的文本卡片遊戲,在Django中每個卡片允許每個玩家做一些標準動作(繪製更多卡片,獲得金幣,獲得積分等),也許其他一些能力(如從對手手中摧毀一張牌,給予對手減點等等)。Django戰略紙牌遊戲結構

我創建了一個卡類:

class Card(models.Model): 
    name = models.CharField(max_length=255, verbose_name="Name") 
    description = models.TextField(verbose_name="Description") 
    victory = models.BooleanField("Victory Card") 
    action = models.BooleanField("Action Card") 
    reaction = models.BooleanField("Reaction Card") 
    treasure = models.BooleanField("Treasure Card") 
    attack = models.BooleanField("Attack Card") 

    plus_action = models.IntegerField(max_length=2, verbose_name="Plus actions", null=True, blank=True) 
    plus_card = models.IntegerField(max_length=2, verbose_name="Plus cards", null=True, blank=True) 
    plus_buy = models.IntegerField(max_length=2, verbose_name="Plus buy", null=True, blank=True) 
    plus_gold = models.IntegerField(max_length=2, verbose_name="Plus gold", null=True, blank=True) 
    plus_victory = models.IntegerField(max_length=2, verbose_name="Plus victory", null=True, blank=True) 

    cost = models.IntegerField(max_length=2, verbose_name="Cost") 

我的問題是,我不知道如何來代表其他的技能。我曾考慮過房產,但我不確定是否要走這條路或如何去做。

你們有什麼建議嗎?提前致謝!

問候,
安德里

+0

噢,我希望你的意思的策略卡牌遊戲關於Django的... :) – 2010-08-26 13:37:16

+0

有什麼其他的」一些例子能力」?它是否涉及需要堅持的數據或根據您已有的數據發生的事情? – 2010-08-26 13:53:33

+0

@Nathan Long嗯,我希望第一個評論會對我有所幫助:D所以我想我們甚至;) – AndriJan 2010-08-26 13:53:39

回答

0

如果你想很多關於你的模型的複雜性和不通過它們的值需要任何的搜索或過濾,可以實現類似 class CardPropetry(object): ... 其中將包含所有需要的值。

然後你可以序列化/反序列化(django docs)該類的實例進/出db.TextField

更新時間:

我沒有測試此代碼,但類似的事情應該工作

models.py:

import yaml 
import pickle 
from django.db import models 

class CardProperties(onbject): 
    pass 

class Card(models.Model): 

    properties = models.TextField() 

    def set_properties(self, obj): 
     self.properties = pickle.dumps(obj) 

    def get_properties(self): 
     return pickle.loads(self.properties) 

views.py:

def view(request): 

    card = Card.objects.get(pk=key) 
    properties = card.get_properties() 

    properties.god_mode = True 

    card.set_properties(properties) 

    card.save() 
+0

我從來沒有做過這樣的事情,但那會如何工作?你可以給我一個例子嗎? – AndriJan 2010-08-26 15:20:25

+0

我更新了我的帖子,這段代碼應該說明主要想法。你也可以在dict中存儲屬性並將它保存爲json或yaml格式。 – Tiendil 2010-08-26 17:14:32

0

這個答案來得太遲的是任何直接使用我猜想,但對於其他人試圖做類似的東西...

我想你在做自治領的實現,而你試圖代表卡片的文字能力。顯然你不想在主引擎中實現每個卡片的機制,因此你需要存儲卡片效果的腳本並執行它們。

您可以將代碼存儲在一個文本字段,並做到這一點:

How do I execute a string containing Python code in Python?