From fe449618f08a2ccfcfdd68a80e6f40080d801e0a Mon Sep 17 00:00:00 2001 From: Suwako Moriya Date: Thu, 28 Feb 2019 17:03:42 +0100 Subject: [PATCH] [fractale module] Implemented parse function (approximately) --- modules/fractale.py | 136 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 111 insertions(+), 25 deletions(-) diff --git a/modules/fractale.py b/modules/fractale.py index dfb12e2..7f2dc7e 100644 --- a/modules/fractale.py +++ b/modules/fractale.py @@ -19,37 +19,123 @@ class MainClass(): self.description="Module de génération de fractales" self.interactive=True self.color=0x78ffc3 + self.fractals={ + "von_koch_curve_flake":{"Type":"Figures", "Max":((5000,5000), 5000, 10), "Min":((0,0),0,1), "Default":"(2500 2500) 2000 5 #ffffff 1", "Indication":"(départ) (arrivée) longueur iterations color bg stroke", "ParseData":"pfixi"}, + "von_koch_curve":{"Type":"Figures", "Max":((5000,5000),(5000,5000),10), "Min":((0,0),(0,0),1), "Default":"(0 2500) (5000 2500) 5 #ffffff 1", "Indication":"(départ) (arrivée) iterations color bg stroke", "ParseData":"ppixi"}, + "blanc_manger":{"Type":"Figures", "Max":((5000,5000),(5000,5000),10), "Min":((0,0),(0,0),1), "Default":"(1000 1000) (4000 4000) 7 #ffffff 1", "Indication":"(départ) (arrivée) iterations color bg stroke", "ParseData":"ppixi"}, + "dragon":{"Type":"Lsystem", "Max":((5000,5000), 2500,19), "Min":((0,0),1,1), "Default":"(2500 2500)", "Indication":"(origine) longueur iterations color bg stroke", "ParseData":"pfixi"}, + "sierpinski_triangle":{"Type":"Lsystem", "Max":((5000,5000),2500,11), "Min":((0,0),0,1), "Default":"(0 0)", "Indication":"(origine) longueur iterations color bg stroke", "ParseData":"pfixi"}, + "fractal_plant":{"Type":"Lsystem", "Max":((5000,5000),2500,8), "Min":((0,0),0,1), "Default":"(0 2500)", "Indication":"(origine) longueur iterations color bg stroke", "ParseData":"pfixi"}, + "koch_curve_right_angle":{"Type":"Lsystem", "Max":((5000,5000),2500,9), "Min":((0,0),0,1), "Default":"(0 5000)", "Indication":"(origine) longueur iterations color bg stroke", "ParseData":"pfixi"}, + "fractal_binary_tree":{"Type":"Lsystem", "Max":((5000,5000),2500,15), "Min":((0,0),0,1), "Default":"(0 0)", "Indication":"(origine) longueur iterations color bg stroke", "ParseData":"pfixi"} + } self.help="""\ fractale [fractale] [nombre d'itérations] => Génère une image fractale. (Si on met le nombre d'itérations, on doit mettre le nom de la fractale.) - -> Valeurs possible pour [fractale] + nb d'itérations max entre parentheses + -> Valeurs possible pour [fractale] ```..: Toutes les fractales: -......: von_koch_curve_flake (7) -......: von_koch_curve (7) -......: blanc_manger (20) -......: dragon -......: sierpinski_triangle -......: fractal_plant -......: koch_curve_right_angle -......: fractal_binary_tree``` -""" - self.fractals={ - "von_koch_curve_flake":{"Type":"Figures", "Max":((5000,5000), 5000, 10), "Min":((0,0),0,1)}, - "von_koch_curve":{"Type":"Figures", "Max":((5000,5000),(5000,5000),10), "Min":((0,0),(0,0),1)}, - "blanc_manger":{"Type":"Figures", "Max":((5000,5000),(5000,5000),10), "Min":((0,0),(0,0),1)}, - "dragon":{"Type":"Lsystem"}, - "sierpinski_triangle":{"Type":"Lsystem"}, - "fractal_plant":{"Type":"Lsystem"}, - "koch_curve_right_angle":{"Type":"Lsystem"}, - "fractal_binary_tree":{"Type":"Lsystem"} - } +%s```"""%'\n'.join(['......: %s'%t for t in self.fractals.keys()]) + + + def parse(self, inp): + retDic={"Success":False, "Message":"", "Result":()} + #Parsing the fractal name and storing the corresponding dic into a variable + try: + fractal=self.fractals[inp.split(' ')[0]] + except KeyError: + retDic.update({"Success":False, "Message":"La fractale %s n'existe pas."%inp.split(' ')[0]}) + return(retDic) + arg=' '.join(inp.split(' ')[1:]) #Stuff after the fractal name + #checking for incoherent parentheses usage + parentheses_count=0 + for i,char in enumerate(arg): + if char=='(': + parentheses_count+=1 + elif char==')': + parentheses_count-=1 + if not(-1