Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--VisualMatchActivity.py30
-rw-r--r--card.py26
-rw-r--r--deck.py26
-rw-r--r--gencards.py46
-rw-r--r--sprites.py121
-rwxr-xr-xvisualmatch.py42
-rw-r--r--window.py38
7 files changed, 174 insertions, 155 deletions
diff --git a/VisualMatchActivity.py b/VisualMatchActivity.py
index df5e88e..99c749e 100644
--- a/VisualMatchActivity.py
+++ b/VisualMatchActivity.py
@@ -63,7 +63,6 @@ from StringIO import StringIO
from constants import *
from sprites import *
import window
-import gencards
import grid
import deck
import card
@@ -87,7 +86,6 @@ class VisualMatchActivity(activity.Activity):
# Set things up.
self._read_journal_data()
datapath = self._find_datapath(_old_sugar_system)
- gencards.generator(datapath, self._numberO, self._numberC)
self._setup_toolbars(sugar86)
canvas = self._setup_canvas(datapath)
self._setup_presence_service()
@@ -100,10 +98,10 @@ class VisualMatchActivity(activity.Activity):
#
# Button callbacks
#
- def _select_game_cb(self, button, activity, cardtype):
+ def _select_game_cb(self, button, activity, card_type):
if self.vmw.joiner(): # joiner cannot change level
return
- activity.vmw.cardtype = cardtype
+ activity.vmw.card_type = card_type
activity.vmw.new_game()
def _robot_cb(self, button, activity):
@@ -139,20 +137,14 @@ class VisualMatchActivity(activity.Activity):
if activity.vmw.joiner(): # joiner cannot change decks
return
activity.vmw.numberO = numberO
- gencards.generate_number_cards(activity.vmw.path,
- activity.vmw.numberO,
- activity.vmw.numberC)
- activity.vmw.cardtype = 'number'
+ activity.vmw.card_type = 'number'
activity.vmw.new_game()
def _number_card_C_cb(self, button, activity, numberC):
if activity.vmw.joiner(): # joiner cannot change decks
return
activity.vmw.numberC = numberC
- gencards.generate_number_cards(activity.vmw.path,
- activity.vmw.numberO,
- activity.vmw.numberC)
- activity.vmw.cardtype = 'number'
+ activity.vmw.card_type = 'number'
activity.vmw.new_game()
def _robot_time_spin_cb(self, button):
@@ -175,7 +167,7 @@ class VisualMatchActivity(activity.Activity):
try: # Try reading restored settings from the Journal.
self._play_level = int(self.metadata['play_level'])
self._robot_time = int(self.metadata['robot_time'])
- self._cardtype = self.metadata['cardtype']
+ self._card_type = self.metadata['cardtype']
self._low_score = [int(self.metadata['low_score_beginner']),\
int(self.metadata['low_score_expert'])]
self._numberO = int(self.metadata['numberO'])
@@ -187,7 +179,7 @@ class VisualMatchActivity(activity.Activity):
except: # Otherwise, use default values.
self._play_level = 0
self._robot_time = 60
- self._cardtype = 'pattern'
+ self._card_type = 'pattern'
self._low_score = [-1,-1]
self._numberO = PRODUCT
self._numberC = HASH
@@ -458,7 +450,7 @@ class VisualMatchActivity(activity.Activity):
self.vmw = window.VisualMatchWindow(canvas, datapath, self)
self.vmw.level = self._play_level
- self.vmw.cardtype = self._cardtype
+ self.vmw.card_type = self._card_type
self.vmw.robot = False
self.vmw.robot_time = self._robot_time
self.vmw.low_score = self._low_score
@@ -482,7 +474,7 @@ class VisualMatchActivity(activity.Activity):
self.metadata['robot_time'] = self.vmw.robot_time
self.metadata['numberO'] = self.vmw.numberO
self.metadata['numberC'] = self.vmw.numberC
- self.metadata['cardtype'] = self.vmw.cardtype
+ self.metadata['cardtype'] = self.vmw.card_type
self.metadata['matches'] = self.vmw.matches
self.metadata['robot_matches'] = self.vmw.robot_matches
self.metadata['total_time'] = int(self.vmw.total_time)
@@ -650,15 +642,15 @@ class VisualMatchActivity(activity.Activity):
self._send_event("P:" + str(self.vmw.level))
self._send_event("X:" + str(self.vmw.deck.index))
self._send_event("M:" + str(self.vmw.matches))
- self._send_event("C:" + self.vmw.cardtype)
+ self._send_event("C:" + self.vmw.card_type)
self._send_event("D:" + str(self._dump()))
elif text[0] == 'J': # Force a request for current state.
self._send_event("j")
self.waiting_for_deck = True
elif text[0] == 'C':
e,text = text.split(':')
- _logger.debug("receiving cardtype from sharer " + text)
- self.vmw.cardtype = text
+ _logger.debug("receiving card_type from sharer " + text)
+ self.vmw.card_type = text
elif text[0] == 'P':
e,text = text.split(':')
_logger.debug("receiving play level from sharer " + text)
diff --git a/card.py b/card.py
index 3aad51f..5e9e0a0 100644
--- a/card.py
+++ b/card.py
@@ -32,14 +32,12 @@ from sprites import *
# if shape == SELECTMASK then generate special card-selected overlay
#
class Card:
- def __init__(self, sprites, path, cardtype, width, height, attributes):
+ def __init__(self, sprites, svg_string, attributes):
if attributes[0] == SELECTMASK:
- self.spr = Sprite(sprites, 0, 0,
- self.load_image(path, "selected", width, height))
+ self.spr = Sprite(sprites, 0, 0, svg_str_to_pixbuf(svg_string))
self.index = SELECTMASK
elif attributes[0] == MATCHMASK:
- self.spr = Sprite(sprites, 0, 0,
- self.load_image(path, "match", width, height))
+ self.spr = Sprite(sprites, 0, 0, svg_str_to_pixbuf(svg_string))
self.index = MATCHMASK
else:
self.shape = attributes[0]
@@ -50,10 +48,7 @@ class Card:
self.color*NUMBER*FILLS+\
self.num*FILLS+\
self.fill
- self.spr = Sprite(sprites, 0, 0,
- self.load_image(path, cardtype+"-"+\
- str(self.index),
- width, height))
+ self.spr = Sprite(sprites, 0, 0, svg_str_to_pixbuf(svg_string))
def show_card(self):
self.spr.set_layer(2000)
@@ -62,7 +57,12 @@ class Card:
def hide_card(self):
self.spr.hide()
- def load_image(self, path, file, w, h):
- return gtk.gdk.pixbuf_new_from_file_at_size(
- os.path.join(path, file+".svg"), int(w), int(h))
-
+#
+# Load pixbuf from SVG string
+#
+def svg_str_to_pixbuf(svg_string):
+ pl = gtk.gdk.PixbufLoader('svg')
+ pl.write(svg_string)
+ pl.close()
+ pixbuf = pl.get_pixbuf()
+ return pixbuf
diff --git a/deck.py b/deck.py
index 4e836b8..77b3050 100644
--- a/deck.py
+++ b/deck.py
@@ -19,12 +19,14 @@ import random
from sprites import *
from constants import *
from card import *
+from gencards import generate_pattern_card, generate_number_card, \
+ generate_word_card
#
-# Class for defining deck of cards
+# Class for defining deck of card
#
class Deck:
- def __init__(self, sprites, path, cardtype, width, height, level=HIGH):
+ def __init__(self, sprites, card_type, numbers_type, scale, level=HIGH):
# Create the deck of cards.
self.cards = []
# If level is 'simple', only generate one fill type
@@ -37,9 +39,23 @@ class Deck:
for color in range(0, COLORS):
for num in range(0, NUMBER):
for fill in range(0, fill_range):
- self.cards.append(Card(sprites, path, cardtype,
- width, height,
- [shape,color,num,fill]))
+ if card_type == 'pattern':
+ self.cards.append(Card(sprites,
+ generate_pattern_card(
+ shape,color,num,fill,scale),
+ [shape,color,num,fill]))
+ elif card_type == 'number':
+ self.cards.append(Card(sprites,
+ generate_number_card(
+ shape,color,num,fill,
+ numbers_type,scale),
+ [shape,color,num,fill]))
+ else:
+ self.cards.append(Card(sprites,
+ generate_word_card(
+ shape,color,num,fill,scale),
+ [shape,color,num,fill]))
+
# Remember the current position in the deck.
self.index = 0
diff --git a/gencards.py b/gencards.py
index 892275b..fd1e174 100644
--- a/gencards.py
+++ b/gencards.py
@@ -214,17 +214,18 @@ def svg_star(n, x, y, stroke, fill):
def background(stroke,fill,width):
return svg_rect(124.5,74.5,11,9,0.25,0.25,stroke,fill,width)
-def header(stroke,fill,width):
+def header(stroke,fill,width,scale):
svg_string = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
svg_string += "<!-- Created with Emacs -->\n"
svg_string += "<svg\n"
svg_string += " xmlns:svg=\"http://www.w3.org/2000/svg\"\n"
svg_string += " xmlns=\"http://www.w3.org/2000/svg\"\n"
svg_string += " version=\"1.0\"\n"
- svg_string += " width=\"125\"\n"
- svg_string += " height=\"75\">\n"
+ svg_string += "%s%f%s" % (" width=\"",125*scale,"\"\n")
+ svg_string += "%s%f%s" % (" height=\"",75*scale,"\">\n")
+ svg_string += "%s%f%s%f%s" % ("<g\n transform=\"matrix(",scale,
+ ",0,0,",scale,",0,0)\">\n")
svg_string += background(stroke,fill,width)
- svg_string += "<g>\n"
return svg_string
def footer():
@@ -484,37 +485,38 @@ def pattern_card(t, c, n, s):
#
# Card generators
#
-def generate_pattern_card(t,c,n,s):
- svg_string = header(BLACK,color_pairs[c][1],0.5)
+def generate_pattern_card(t,c,n,s,scale):
+ svg_string = header(BLACK,color_pairs[c][1],0.5,scale)
svg_string += pattern_card(card_types[t],color_pairs[c],n+1,fill_styles[s])
svg_string += footer()
return svg_string
-def generate_number_card(t,c,n,s,mO,mC):
+def generate_number_card(t,c,n,s,number_types,scale):
stab = {0:5,1:7,2:11}
methodO = [number_roman, number_product, number_chinese, number_word]
methodC = [dots_in_a_line, dots_in_a_circle, points_in_a_star,\
number_hash, dice]
methodX = number_arabic
- svg_string = header(BLACK,color_pairs[c][1],0.5)
+ svg_string = header(BLACK,color_pairs[c][1],0.5,scale)
svg_string += number_card(t,(n+1)*stab[s],color_pairs[c][0],
- methodX,methodO[mO],methodC[mC])
+ methodX,methodO[number_types[0]],
+ methodC[number_types[1]])
svg_string += footer()
return svg_string
-def generate_word_card(t,c,n,s):
- svg_string = header(BLACK,color_pairs[c][1],0.5)
+def generate_word_card(t,c,n,s,scale):
+ svg_string = header(BLACK,color_pairs[c][1],0.5,scale)
svg_string += word_card(t,color_pairs[c],n,word_styles[s])
svg_string += footer()
return svg_string
-def generate_match_card():
- svg_string = header("#A0A0A0","#F0F0F0",3.0)
+def generate_match_card(scale):
+ svg_string = header("#A0A0A0","#F0F0F0",3.0,scale)
svg_string += footer()
return svg_string
-def generate_selected_card():
- svg_string = header(BLACK,"none",3.0)
+def generate_selected_card(scale):
+ svg_string = header(BLACK,"none",3.0,scale)
svg_string += footer()
return svg_string
@@ -526,7 +528,7 @@ def close_file(f):
def generator(datapath,mO=PRODUCT,mC=HASH):
generate_pattern_cards(datapath)
- generate_number_cards(datapath,mO,mC)
+ generate_number_cards(datapath,[mO,mC])
generate_word_cards(datapath)
generate_extras(datapath)
@@ -538,11 +540,11 @@ def generate_pattern_cards(datapath):
for s in range(3):
filename = "pattern-%d.svg" % (i)
f = open_file(datapath, filename)
- f.write(generate_pattern_card(t,c,n,s))
+ f.write(generate_pattern_card(t,c,n,s,1))
close_file(f)
i += 1
-def generate_number_cards(datapath,mO,mC):
+def generate_number_cards(datapath,number_types):
i = 0
for t in range(3):
for c in range(3):
@@ -550,7 +552,7 @@ def generate_number_cards(datapath,mO,mC):
for s in range(3):
filename = "number-%d.svg" % (i)
f = open_file(datapath, filename)
- f.write(generate_number_card(t,c,n,s,mO,mC))
+ f.write(generate_number_card(t,c,n,s,number_types,1))
close_file(f)
i += 1
@@ -562,16 +564,16 @@ def generate_word_cards(datapath):
for s in range(3):
filename = "word-%d.svg" % (i)
f = open_file(datapath, filename)
- f.write(generate_word_card(t,c,n,s))
+ f.write(generate_word_card(t,c,n,s,1))
close_file(f)
i += 1
def generate_extras(datapath):
f = open_file(datapath, "match.svg")
- f.write(generate_match_card())
+ f.write(generate_match_card(1))
close_file(f)
f = open_file(datapath, "selected.svg")
- f.write(generate_selected_card())
+ f.write(generate_selected_card(1))
close_file(f)
def main():
diff --git a/sprites.py b/sprites.py
index 231e2c3..d66536a 100644
--- a/sprites.py
+++ b/sprites.py
@@ -73,7 +73,6 @@ class Sprites:
for spr in self.list:
spr.draw()
-
#
# A class for the individual sprites
#
@@ -83,11 +82,11 @@ class Sprite:
self.x = x
self.y = y
self.layer = 100
- self.label = None
- self.scale = 24
- self.rescale = True
- self.horiz_align = "center"
- self.vert_align = "middle"
+ self.labels = []
+ self.scale = [24]
+ self.rescale = [True]
+ self.horiz_align = ["center"]
+ self.vert_align = ["middle"]
self.fd = None
self.color = None
self.set_image(image)
@@ -122,17 +121,27 @@ class Sprite:
self.sprites.append_to_list(self)
self.inval()
- def set_label(self, label):
- if type(label) is str or type(label) is unicode:
- self.label = label.replace("\0"," ") # pango doesn't like nulls
+ def set_label(self, new_label, i=0):
+ self._extend_labels_array(i)
+ if type(new_label) is str or type(new_label) is unicode:
+ # pango doesn't like nulls
+ self.labels[i] = new_label.replace("\0"," ")
else:
- self.label = str(label)
+ self.labels[i] = str(new_label)
if self.fd is None:
self.fd = pango.FontDescription('Sans')
if self.color is None:
self.color = self.sprites.cm.alloc_color('black')
self.inval()
+ def _extend_labels_array(self, i):
+ while len(self.labels) < i+1:
+ self.labels.append(" ")
+ self.scale.append(self.scale[0])
+ self.rescale.append(self.rescale)
+ self.horiz_align.append(self.horiz_align[0])
+ self.vert_align.append(self.vert_align[0])
+
def set_label_font(self, font):
self.fd = pango.FontDescription(font)
@@ -140,11 +149,12 @@ class Sprite:
self.color = self.sprites.cm.alloc_color(r, g, b)
def set_label_attributes(self, scale, horiz_align="center",
- vert_align="middle", rescale="True"):
- self.scale = scale
- self.horiz_align = horiz_align
- self.vert_align = vert_align
- self.rescale = rescale
+ vert_align="middle", rescale="True", i=0):
+ self._extend_labels_array(i)
+ self.scale[i] = scale
+ self.horiz_align[i] = horiz_align
+ self.vert_align[i] = vert_align
+ self.rescale[i] = rescale
def hide(self):
self.inval()
@@ -161,7 +171,7 @@ class Sprite:
else:
self.sprites.area.draw_drawable(
self.sprites.gc, self.image, 0, 0, self.x, self.y, -1, -1)
- if self.label is not None:
+ if len(self.labels) > 0:
self.draw_label()
def hit(self, pos):
@@ -177,38 +187,49 @@ class Sprite:
return True
def draw_label(self):
- if self.label is None:
- return
- pl = self.sprites.canvas.create_pango_layout(self.label)
- self.fd.set_size(int(self.scale*pango.SCALE))
- pl.set_font_description(self.fd)
- w = pl.get_size()[0]/pango.SCALE
- if w > self.width:
- if self.rescale is True:
- self.fd.set_size(int(self.scale*pango.SCALE*self.width/w))
- pl.set_font_description(self.fd)
- w = pl.get_size()[0]/pango.SCALE
- else:
- i = len(self.label)-1
- while(w > self.width and i > 0):
- label = "…"+self.label[len(self.label)-i:]
- pl = self.sprites.canvas.create_pango_layout(label)
- self.fd.set_size(int(self.scale*pango.SCALE))
+ for i in range(len(self.labels)):
+ pl = self.sprites.canvas.create_pango_layout(self.labels[i])
+ self.fd.set_size(int(self.scale[i]*pango.SCALE))
+ pl.set_font_description(self.fd)
+ w = pl.get_size()[0]/pango.SCALE
+ if w > self.width:
+ if self.rescale[i] is True:
+ self.fd.set_size(int(self.scale*pango.SCALE*self.width/w))
pl.set_font_description(self.fd)
- w = pl.get_size()[0]/pango.SCALE
- i -= 1
- if self.horiz_align == "center":
- x = int(self.x+(self.width-w)/2)
- elif self.horiz_align == 'left':
- x = self.x
- else: # right
- x = int(self.x+self.width-w)
- h = pl.get_size()[1]/pango.SCALE
- if self.vert_align == "middle":
- y = int(self.y+(self.height-h)/2)
- elif self.vert_align == "top":
- y = self.y
- else: # bottom
- y = int(self.y+self.height-h)
- self.sprites.gc.set_foreground(self.color)
- self.sprites.area.draw_layout(self.sprites.gc, x, y, pl)
+ w = pl.get_size()[0]/pango.SCALE
+ else:
+ i = len(self.labels[i])-1
+ while(w > self.width and i > 0):
+ pl = self.sprites.canvas.create_pango_layout(
+ "…"+self.labels[i][len(self.label[i])-i:])
+ self.fd.set_size(int(self.scale[i]*pango.SCALE))
+ pl.set_font_description(self.fd)
+ w = pl.get_size()[0]/pango.SCALE
+ i -= 1
+ if self.horiz_align[i] == "center":
+ x = int(self.x+(self.width-w)/2)
+ elif self.horiz_align[i] == 'left':
+ x = self.x
+ else: # right
+ x = int(self.x+self.width-w)
+ h = pl.get_size()[1]/pango.SCALE
+ if self.vert_align[i] == "middle":
+ y = int(self.y+(self.height-h)/2)
+ elif self.vert_align[i] == "top":
+ y = self.y
+ else: # bottom
+ y = int(self.y+self.height-h)
+ self.sprites.gc.set_foreground(self.color)
+ self.sprites.area.draw_layout(self.sprites.gc, x, y, pl)
+
+ def label_width(self):
+ max = 0
+ for i in range(len(self.labels)):
+ print "i %d" % (i)
+ pl = self.sprites.canvas.create_pango_layout(self.labels[i])
+ self.fd.set_size(int(self.scale[i]*pango.SCALE))
+ pl.set_font_description(self.fd)
+ w = pl.get_size()[0]/pango.SCALE
+ if w > max:
+ max = w
+ return max
diff --git a/visualmatch.py b/visualmatch.py
index f0f8914..b41382e 100755
--- a/visualmatch.py
+++ b/visualmatch.py
@@ -2,23 +2,15 @@
#Copyright (c) 2009, Walter Bender
-#Permission is hereby granted, free of charge, to any person obtaining a copy
-#of this software and associated documentation files (the "Software"), to deal
-#in the Software without restriction, including without limitation the rights
-#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-#copies of the Software, and to permit persons to whom the Software is
-#furnished to do so, subject to the following conditions:
-
-#The above copyright notice and this permission notice shall be included in
-#all copies or substantial portions of the Software.
-
-#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-#THE SOFTWARE.
+# 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.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
import pygtk
pygtk.require('2.0')
@@ -45,9 +37,11 @@ class VisualMatchMain:
_("Click on cards to create sets of three.")))
self.win.connect("delete_event", lambda w,e: gtk.main_quit())
+ '''
if not os.path.exists(os.path.join(os.path.abspath('.'), 'images')):
os.mkdir(os.path.join(os.path.abspath('.'), 'images'))
gencards.generator(os.path.join(os.path.abspath('.'), 'images'))
+ '''
menu0 = gtk.Menu()
menu_items = gtk.MenuItem(_("Toggle level"))
@@ -170,7 +164,7 @@ class VisualMatchMain:
'images/'))
self.vmw.win = self.win
self.vmw.activity = self
- self.vmw.cardtype = 'pattern'
+ self.vmw.card_type = 'pattern'
self.vmw.level = 1
self.vmw.robot = False
self.vmw.robot_time = 60
@@ -203,7 +197,7 @@ class VisualMatchMain:
self.win.set_title(title)
def _new_game_cb(self, widget, game):
- self.vmw.cardtype = game
+ self.vmw.card_type = game
self.vmw.new_game()
return True
@@ -222,18 +216,12 @@ class VisualMatchMain:
def _number_card_O_cb(self, widget, numberO):
self.vmw.numberO = numberO
- gencards.generate_number_cards(self.vmw.path,
- self.vmw.numberO,
- self.vmw.numberC)
- self.vmw.cardtype = 'number'
+ self.vmw.card_type = 'number'
self.vmw.new_game()
def _number_card_C_cb(self, widget, numberC):
self.vmw.numberC = numberC
- gencards.generate_number_cards(self.vmw.path,
- self.vmw.numberO,
- self.vmw.numberC)
- self.vmw.cardtype = 'number'
+ self.vmw.card_type = 'number'
self.vmw.new_game()
def main():
diff --git a/window.py b/window.py
index 48f885c..ceecaaf 100644
--- a/window.py
+++ b/window.py
@@ -31,6 +31,7 @@ from grid import *
from deck import *
from card import *
from sprites import *
+from gencards import generate_selected_card, generate_match_card
difficulty_level = [LOW,HIGH]
@@ -57,9 +58,9 @@ class VisualMatchWindow():
self.canvas.connect("key_press_event", self._keypress_cb)
self.width = gtk.gdk.screen_width()
self.height = gtk.gdk.screen_height()-GRID_CELL_SIZE
- _scale = 0.8 * self.height/(CARD_HEIGHT*5.5)
- self.card_width = CARD_WIDTH*_scale
- self.card_height = CARD_HEIGHT*_scale
+ self.scale = 0.8 * self.height/(CARD_HEIGHT*5.5)
+ self.card_width = CARD_WIDTH*self.scale
+ self.card_height = CARD_HEIGHT*self.scale
self.sprites = Sprites(self.canvas)
self.selected = []
self.match_display_area = []
@@ -74,18 +75,17 @@ class VisualMatchWindow():
if hasattr(self, 'deck'):
self.deck.hide()
- # The first time through, initialize the deck, grid, and overlays.
+ # The first time through, initialize the grid, and overlays.
if not hasattr(self, 'grid'):
self.grid = Grid(self.width, self.height, self.card_width,
self.card_height)
for i in range(0,3):
- self.selected.append(Card(self.sprites, self.path, '',
- self.card_width, self.card_height,
+ self.selected.append(Card(self.sprites,
+ generate_selected_card(self.scale),
[SELECTMASK,0,0,0]))
- self.match_display_area.append(Card(self.sprites, self.path, "",
- self.card_width,
- self.card_height,
- [MATCHMASK,0,0,0]))
+ self.match_display_area.append(Card(self.sprites,
+ generate_match_card(self.scale),
+ [MATCHMASK,0,0,0]))
self.grid.display_match(self.match_display_area[i].spr, i)
self._unselect()
@@ -93,8 +93,8 @@ class VisualMatchWindow():
# Restore saved state on resume or share.
if saved_state is not None:
_logger.debug("Restoring state: %s" % (str(saved_state)))
- self.deck = Deck(self.sprites, self.path, self.cardtype,
- self.card_width, self.card_height,
+ self.deck = Deck(self.sprites, self.card_type,
+ [self.numberO, self.numberC], self.scale,
difficulty_level[self.level])
self.deck.hide()
self.deck.index = deck_index
@@ -107,9 +107,9 @@ class VisualMatchWindow():
saved_state[_deck_stop:_deck_stop+3*self.matches])
elif not self.joiner():
_logger.debug("Starting new game.")
- self.deck = Deck(self.sprites, self.path, self.cardtype,
- self.card_width, self.card_height,
- difficulty_level[self.level])
+ self.deck = Deck(self.sprites, self.card_type,
+ [self.numberO, self.numberC], self.scale,
+ difficulty_level[self.level])
self.deck.hide()
self.deck.shuffle()
self.grid.deal(self.deck)
@@ -233,7 +233,7 @@ class VisualMatchWindow():
if self._match_check([self.deck.spr_to_card(self.clicked[0]),
self.deck.spr_to_card(self.clicked[1]),
self.deck.spr_to_card(self.clicked[2])],
- self.cardtype):
+ self.card_type):
# Stop the timer.
if self.timeout_id is not None:
@@ -405,7 +405,7 @@ class VisualMatchWindow():
cardarray = [self.grid.grid[i[0]],\
self.grid.grid[i[1]],\
self.grid.grid[i[2]]]
- if self._match_check(cardarray, self.cardtype) is True:
+ if self._match_check(cardarray, self.card_type) is True:
if robot_match is True:
for j in range(3):
self.clicked[j]=self.grid.grid[i[j]].spr
@@ -417,7 +417,7 @@ class VisualMatchWindow():
#
# For each attribute, either it is the same or different on every card.
#
- def _match_check(self, cardarray, cardtype):
+ def _match_check(self, cardarray, card_type):
for a in cardarray:
if a is None:
return False
@@ -431,7 +431,7 @@ class VisualMatchWindow():
if (cardarray[0].fill + cardarray[1].fill + cardarray[2].fill)%3 != 0:
return False
# Special case: only check number when shapes are the same
- if cardtype == 'word':
+ if card_type == 'word':
if cardarray[0].shape == cardarray[1].shape and \
cardarray[0].shape == cardarray[2].shape and \
(cardarray[0].num + cardarray[1].num + cardarray[2].num)%3 != 0: