Mercurial > libervia-backend
diff frontends/wix/card_game.py @ 81:104a815bb23f
Tarot game: first draft
- wix: first draft of cards window
- shell script to split cards from Tarot game found on wikimedia commons
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 18 Apr 2010 15:47:10 +1000 |
parents | |
children | 1ac759ea28c3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontends/wix/card_game.py Sun Apr 18 15:47:10 2010 +1000 @@ -0,0 +1,106 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +""" +wix: a SAT frontend +Copyright (C) 2009, 2010 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 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 General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +""" + + + +import wx +import os.path, glob +import random +import pdb +from logging import debug, info, error +from tools.jid import JID +from quick_frontend.quick_chat import QuickChat +from contact_list import ContactList + +class Card(): + """This class is used to represent a card, graphically and logically""" + + def __init__(self, file): + """@param file: path of the PNG file""" + self.bitmap = wx.Image(file).ConvertToBitmap() + root_name = os.path.splitext(os.path.basename(file))[0] + self.family,self.value=root_name.split('_') + self.bout = True if self.family=="atout" and self.value in ["1","21","excuse"] else False + + print "Carte:",self.family, self.value, self.bout + + def draw(self, dc, x, y): + """Draw the card on the device context + @param dc: device context + @param x: abscissa + @param y: ordinate""" + dc.DrawBitmap(self.bitmap, x, y, True) + + +class CardPanel(wx.Panel): + """This class is used to display the cards""" + + def __init__(self, parent): + wx.Panel.__init__(self, parent) + self.SetBackgroundColour(wx.GREEN) + self.Bind(wx.EVT_PAINT, self.onPaint) + self.load_cards("/home/goffi/dev/divers/images/cards/") + + def load_cards(self, dir): + """Load all the cards in memory + @param dir: directory where the PNG files are""" + self.cards={} + self.deck=[] + self.cards["atout"]={} #As Tarot is a french game, it's more handy & logical to keep french names + self.cards["pique"]={} #spade + self.cards["coeur"]={} #heart + self.cards["carreau"]={} #diamond + self.cards["trefle"]={} #club + for file in glob.glob(dir+'/*_*.png'): + card = Card(file) + self.cards[card.family, card.value]=card + self.deck.append(card) + """for value in map(str,range(1,22))+['excuse']: + self.idx_cards.append(self.cards["atout",value]) + for family in ["pique", "coeur", "carreau", "trefle"]: + for value in map(str,range(1,11))+["valet","cavalier","dame","roi"]: + self.idx_cards.append(self.cards[family, value])""" #XXX: no need to sort the cards ! + + def onPaint(self, event): + print "toto", event + dc = wx.PaintDC(self) + x=0 + for card in random.sample(self.deck,13): + card.draw(dc,x,0) + x+=37 + +class CardGame(wx.Frame, QuickChat): + """The chat Window for one to one conversations""" + + def __init__(self, host): + wx.Frame.__init__(self, None, pos=(0,0), size=(800,550)) + + self.host = host + + self.sizer = wx.BoxSizer(wx.VERTICAL) + self.panel = CardPanel(self) + self.sizer.Add(self.panel, 1, flag=wx.EXPAND) + self.SetSizer(self.sizer) + self.SetAutoLayout(True) + + + #events +