# HG changeset patch # User souliane # Date 1382090322 -7200 # Node ID 2805fa3f4bdf715a931d9370df4b706535a3eddb # Parent 66633443bcd7ab109c5e861178f795b0148a8c88 tools: moved src/tools/games.py to src/tools/frontends/ diff -r 66633443bcd7 -r 2805fa3f4bdf frontends/src/primitivus/card_game.py --- a/frontends/src/primitivus/card_game.py Wed Oct 23 00:28:00 2013 +0200 +++ b/frontends/src/primitivus/card_game.py Fri Oct 18 11:58:42 2013 +0200 @@ -19,7 +19,7 @@ import urwid from urwid_satext import sat_widgets -from sat.tools.games import TarotCard +from sat.tools.frontends.games import TarotCard from sat_frontends.quick_frontend.quick_card_game import QuickCardGame from sat_frontends.primitivus.xmlui import XMLUI diff -r 66633443bcd7 -r 2805fa3f4bdf frontends/src/wix/card_game.py --- a/frontends/src/wix/card_game.py Wed Oct 23 00:28:00 2013 +0200 +++ b/frontends/src/wix/card_game.py Fri Oct 18 11:58:42 2013 +0200 @@ -24,7 +24,7 @@ import pdb from logging import debug, info, error from sat.tools.jid import JID -from sat.tools.games import TarotCard +from sat.tools.frontends.games import TarotCard from sat_frontends.quick_frontend.quick_card_game import QuickCardGame from sat_frontends.wix.xmlui import XMLUI diff -r 66633443bcd7 -r 2805fa3f4bdf src/plugins/plugin_misc_quiz.py --- a/src/plugins/plugin_misc_quiz.py Wed Oct 23 00:28:00 2013 +0200 +++ b/src/plugins/plugin_misc_quiz.py Fri Oct 18 11:58:42 2013 +0200 @@ -29,7 +29,7 @@ from wokkel import disco, iwokkel, data_form from sat.tools.xml_tools import dataForm2XML -from sat.tools.games import TarotCard +from sat.tools.frontends.games import TarotCard from time import time diff -r 66633443bcd7 -r 2805fa3f4bdf src/plugins/plugin_misc_tarot.py --- a/src/plugins/plugin_misc_tarot.py Wed Oct 23 00:28:00 2013 +0200 +++ b/src/plugins/plugin_misc_tarot.py Fri Oct 18 11:58:42 2013 +0200 @@ -26,8 +26,8 @@ from wokkel import disco, iwokkel, data_form from sat.tools.xml_tools import dataForm2XML -from sat.tools.games import TarotCard +from sat.tools.frontends.games import TarotCard from time import time try: diff -r 66633443bcd7 -r 2805fa3f4bdf src/tools/frontends/games.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/tools/frontends/games.py Fri Oct 18 11:58:42 2013 +0200 @@ -0,0 +1,75 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# SAT: a jabber client +# Copyright (C) 2009, 2010, 2011, 2012, 2013 Jérôme Poisson (goffi@goffi.org) + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +"""This library help manage general games (e.g. card games) and it is shared by the frontends""" + +SUITS_ORDER = ['pique', 'coeur', 'trefle', 'carreau', 'atout'] # I have switched the usual order 'trefle' and 'carreau' because card are more easy to see if suit colour change (black, red, black, red) +VALUES_ORDER = [str(i) for i in xrange(1, 11)] + ["valet", "cavalier", "dame", "roi"] + + +class TarotCard(object): + """This class is used to represent a car logically""" + + def __init__(self, tuple_card): + """@param tuple_card: tuple (suit, value)""" + self.suit, self.value = tuple_card + self.bout = self.suit == "atout" and self.value in ["1", "21", "excuse"] + if self.bout or self.value == "roi": + self.points = 4.5 + elif self.value == "dame": + self.points = 3.5 + elif self.value == "cavalier": + self.points = 2.5 + elif self.value == "valet": + self.points = 1.5 + else: + self.points = 0.5 + + def get_tuple(self): + return (self.suit, self.value) + + @staticmethod + def from_tuples(tuple_list): + result = [] + for card_tuple in tuple_list: + result.append(TarotCard(card_tuple)) + return result + + def __cmp__(self, other): + if other is None: + return 1 + if self.suit != other.suit: + idx1 = SUITS_ORDER.index(self.suit) + idx2 = SUITS_ORDER.index(other.suit) + return idx1.__cmp__(idx2) + if self.suit == 'atout': + if self.value == other.value == 'excuse': + return 0 + if self.value == 'excuse': + return -1 + if other.value == 'excuse': + return 1 + return int(self.value).__cmp__(int(other.value)) + # at this point we have the same suit which is not 'atout' + idx1 = VALUES_ORDER.index(self.value) + idx2 = VALUES_ORDER.index(other.value) + return idx1.__cmp__(idx2) + + def __str__(self): + return "[%s,%s]" % (self.suit, self.value) diff -r 66633443bcd7 -r 2805fa3f4bdf src/tools/games.py --- a/src/tools/games.py Wed Oct 23 00:28:00 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -# SAT: a jabber client -# Copyright (C) 2009, 2010, 2011, 2012, 2013 Jérôme Poisson (goffi@goffi.org) - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. - -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -from logging import debug, info, error -"""This library help manage general games (e.g. card games)""" - -SUITS_ORDER = ['pique', 'coeur', 'trefle', 'carreau', 'atout'] # I have switched the usual order 'trefle' and 'carreau' because card are more easy to see if suit colour change (black, red, black, red) -VALUES_ORDER = [str(i) for i in xrange(1, 11)] + ["valet", "cavalier", "dame", "roi"] - - -class TarotCard(object): - """This class is used to represent a car logically""" - #TODO: move this in a library in tools, and share this with frontends (e.g. card_game in wix use the same class) - - def __init__(self, tuple_card): - """@param tuple_card: tuple (suit, value)""" - self.suit, self.value = tuple_card - self.bout = self.suit == "atout" and self.value in ["1", "21", "excuse"] - if self.bout or self.value == "roi": - self.points = 4.5 - elif self.value == "dame": - self.points = 3.5 - elif self.value == "cavalier": - self.points = 2.5 - elif self.value == "valet": - self.points = 1.5 - else: - self.points = 0.5 - - def get_tuple(self): - return (self.suit, self.value) - - @staticmethod - def from_tuples(tuple_list): - result = [] - for card_tuple in tuple_list: - result.append(TarotCard(card_tuple)) - return result - - def __cmp__(self, other): - if other is None: - return 1 - if self.suit != other.suit: - idx1 = SUITS_ORDER.index(self.suit) - idx2 = SUITS_ORDER.index(other.suit) - return idx1.__cmp__(idx2) - if self.suit == 'atout': - if self.value == other.value == 'excuse': - return 0 - if self.value == 'excuse': - return -1 - if other.value == 'excuse': - return 1 - return int(self.value).__cmp__(int(other.value)) - # at this point we have the same suit which is not 'atout' - idx1 = VALUES_ORDER.index(self.value) - idx2 = VALUES_ORDER.index(other.value) - return idx1.__cmp__(idx2) - - def __str__(self): - return "[%s,%s]" % (self.suit, self.value)