diff options
author | Pablo Astigarraga <poteland@gmail.com> | 2010-03-26 00:52:35 (GMT) |
---|---|---|
committer | Pablo Astigarraga <poteland@gmail.com> | 2010-03-26 00:52:35 (GMT) |
commit | e9d3076ce9f0d331db4417ad9c98bcca572b4f22 (patch) | |
tree | 64aaf9779139fddb24184ef8a03be93d3809bff3 | |
parent | d349609761b1e777435b32c6a51bb5d991ce1dda (diff) |
implemented Fraction Class
-rw-r--r-- | fracciones.activity/fractionlogic.py | 32 | ||||
-rw-r--r-- | fracciones.activity/fractionpresentation.py | 2 | ||||
-rwxr-xr-x | fracciones.activity/gtkcake.py | 5 |
3 files changed, 23 insertions, 16 deletions
diff --git a/fracciones.activity/fractionlogic.py b/fracciones.activity/fractionlogic.py index 0acc7fe..cc74b5f 100644 --- a/fracciones.activity/fractionlogic.py +++ b/fracciones.activity/fractionlogic.py @@ -8,39 +8,45 @@ DENOMINATOR_MIN = 4 DENOMINATOR_MAX = 10 +class Fraction(object): + + def __init__(self, numerator=1, denominator=1): + self.numerator = numerator + self.denominator = denominator + + class FractionLogic(object): - - def __init__(self): - self.numerator = None - self.denominator = None + def __init__(self): + self.fraction = Fraction() + def generate(self): """Generate new fraction""" if DENOMINATOR_MIN < 1: raise Exception("DENOMINATOR_MIN need be greather than 0") - self.denominator = random.randrange(DENOMINATOR_MIN, DENOMINATOR_MAX) - self.numerator = random.randrange(0, self.denominator+1) + self.fraction.denominator = random.randrange(DENOMINATOR_MIN, DENOMINATOR_MAX) + self.fraction.numerator = random.randrange(0, self.fraction.denominator+1) def get_current(self): """Return the current fraction, raise an exception if generate_fraction hasn't called before""" - if self.denominator is None: + if self.fraction.denominator is None: raise Exception("generate_fraction must be called before get_current_fraction") - return (self.numerator, self.denominator) + return (self.fraction.numerator, self.fraction.denominator) def is_equal(self, fraction): """Check if fraction is equal that the internal""" - if not(type(fraction) is tuple and len(fraction) == 2): + if not(type(fraction) is Fraction and self.fraction.denominator is not None): raise Exception("fraction must be a tuple of length 2") - if self.denominator is None: + if self.fraction.denominator is None: raise Exception("generate_fraction must be called before is_equal") - return fraction[0] * self.denominator == fraction[1] * self.numerator + return fraction.numerator * self.fraction.denominator == fraction.denominator * self.fraction.numerator def __repr__(self): - if self.denominator is None: + if self.fraction.denominator is None: return "<FractionLogic(Undefined)>" - return "<FractionLogic(%i,%i)>"%(self.numerator,self.denominator) + return "<FractionLogic(%i,%i)>"%(self.fraction.numerator,self.fraction.denominator) diff --git a/fracciones.activity/fractionpresentation.py b/fracciones.activity/fractionpresentation.py index f53185f..ea618f1 100644 --- a/fracciones.activity/fractionpresentation.py +++ b/fracciones.activity/fractionpresentation.py @@ -9,7 +9,7 @@ import pango import gtkcake from fractionlogic import FractionLogic - +from fractionlogic import Fraction logging.basicConfig(level=logging.DEBUG) log = logging.getLogger() diff --git a/fracciones.activity/gtkcake.py b/fracciones.activity/gtkcake.py index 853235b..f12bdd5 100755 --- a/fracciones.activity/gtkcake.py +++ b/fracciones.activity/gtkcake.py @@ -12,6 +12,7 @@ import math import gtk import cairo +from fractionlogic import Fraction WIDTH = 500 HEIGHT = 500 @@ -44,8 +45,8 @@ class Cake(gtk.DrawingArea): @property def current_fraction(self): - return (len([selected for selected in self.selected_list if selected]), self.subdivisions) - + return Fraction(len([selected for selected in self.selected_list if selected]), self.subdivisions) + def reset(self, subdivisions, draw=True): # variables de estado de la torta |