diff --git a/ateliers/snake/README.md b/ateliers/snake/README.md index b7d7534..b8348da 100644 --- a/ateliers/snake/README.md +++ b/ateliers/snake/README.md @@ -64,18 +64,40 @@ Dans le second sous-objectif, les participants sont invités à créer une zone Cet objectif présente le fonctionnement des boucles, et initie les participants à la gestion de tableaux. Il est très peu guidé, et présente comme objectif de faire lire la documentation aux participants. La réalisation des trois sous-objectifs peut être longue et demander beaucoup de patience aux organisateurs, afin de poser les bases. Les rudiments de la programmation vu précédemment (structures conditionnelles et variables) seront aussi réutilisés afin de les consolider. -Le premier sous-objectif consiste à afficher les bordures de la zone en forme de cactus ; en cela, il est très simple et vise surtout à comprendre l’intérêt des boucles. Il est conseillé de montrer aux participants comment remplir la zone de jeu de cactus avant se limiter à en afficher seulement sur les bords. La phase de recherche de fonctions est très importante à ce stade car deux fonctions utiles : `screenIterator` et `isSide` seront nécessaires pour finaliser cet objectif. +Le premier sous-objectif consiste à afficher les bordures de la zone en forme de cactus ; en cela, il est très simple et vise surtout à comprendre l’intérêt des boucles. Il est conseillé de montrer aux participants comment remplir la zone de jeu de cactus avant se limiter à en afficher seulement sur les bords. La phase de recherche de fonctions est très importante à ce stade car deux fonctions utiles : `grille` et `est_un_bord` seront nécessaires pour finaliser cet objectif. -Le second sous-objectif voit simplement un autre type de boucle qui itère sur un nombre donné de parties du serpent : `partsIterator`. Une compréhension au moins grossière du fonctionnement des tableaux est nécessaire afin de passer les arguments, mais cet objectif devrait être simple et court. +Le second sous-objectif voit simplement un autre type de boucle qui itère sur un nombre donné de parties du serpent : `serpent.morceaux`. Une compréhension au moins grossière du fonctionnement des tableaux est nécessaire afin de passer les arguments, mais cet objectif devrait être simple et court. -Le dernier sous-objectif révise les structures conditionnelles en affichant les différentes parties du serpent : queue, tête et corps. Une partie encore une fois simple visant à compléter le second sous-objectif. Les participants veilleront à ne pas oublier de déclarer les sprites avec la fonction `addAsset` avant de les utiliser ; en cas d’oubli, ils seront invités à tenter de comprendre les erreurs Python. +Le dernier sous-objectif révise les structures conditionnelles en affichant les différentes parties du serpent : queue, tête et corps. Une partie encore une fois simple visant à compléter le second sous-objectif. Les participants veilleront à ne pas oublier de déclarer les sprites avec la fonction `ajouter_image` avant de les utiliser ; en cas d’oubli, ils seront invités à tenter de comprendre les erreurs Python. #### Troisième objectif Le troisième objectif complexifie beaucoup le code contrairement aux précédents ; il ajoute en effet une grosse partie de gestion des événements afin de vérifier l’appui des différentes touches de mouvement (les flèches directionnelles). La recherche dans la documentation sera très importante, mais aucune notion nouvelle n’est abordée à partir d’ici. Les participants qui s’arrêteront à cet objectif auront les bases nécessaires en programmation, et ce afin de créer des petits programmes simples. -Ici, le premier sous-objectif consiste à poser les bases de la direction du serpent, en particulier la déclaration d’une variable de direction ainsi que le déplacement effectif du serpent à chaque tour de boucle. Parmi les problèmes rencontrés, il est certain que figureront l’oubli de la portée globale de la variable de direction ainsi que l’oubli de l’appel à la fonction `snake.move`, qui causera le serpent à… ne pas bouger du tout, malgré un code fonctionnel. +Ici, le premier sous-objectif consiste à poser les bases de la direction du serpent, en particulier la déclaration d’une variable de direction ainsi que le déplacement effectif du serpent à chaque tour de boucle. Parmi les problèmes rencontrés, il est certain que figureront l’oubli de la portée globale de la variable de direction ainsi que l’oubli de l’appel à la fonction `serpent.deplacer`, qui causera le serpent à… ne pas bouger du tout, malgré un code fonctionnel. Le second sous-objectif est une extension simple du premier qui consiste à gérer les quatre directions en se renseignant dans la documentation ainsi qu’à stocker la direction souhaitée dans la variable du jeu pour pouvoir l’utiliser par la suite. -Les objectifs suivants étant prévus pour les plus avancés, ils seront moins documentés pour les organisateurs, sous forme plus synthétique. Après la fin des objectifs, des pistes seront proposées aux participants qui seront libres de les implémenter ou non. +L’objectif suivant étant prévu pour les plus avancés, il est moins documenté pour les organisateurs, sous forme plus synthétique. Après la fin des objectifs, des pistes seront proposées aux participants qui seront libres de les implémenter ou non. + +#### Quatrième objectif + +Cet objectif complet revient sur tout ce qui a été vu avant, et permet au participant d’acquérir une vue globale sur son code. En plus de celà, l’objectif finalise en quelque sorte le jeu en y ajoutant toutes les collisions nécessaires, ainsi que la pomme (enfin !). Comme indiqué ci-avant, voici une description synthétique de ce qui est proposé : + +Le premier sous-objectif consiste simplement en l’ajout de la pomme et son dessin en fin de boucle. En outre, les participants auront besoin de la fonction `position_aleatoire_pomme`, qu’ils seront fortement invités à trouver dans la documentation. + +Le second sous-objectif a pour objet la mise en place des collisions entre le serpent et la pomme. La fonction `collision` sera découverte. Pour les plus curieux, les objets pourront être abordés par la nécessité d’utiliser `pomme.position`. + +Les troisième et quatrième sous-objectifs sont aussi des objectifs de collisions, simple si les participants ont compris le premier module de collisions. + +#### Bonus + +Une fois le quatrième objectif terminé, les participants pourront, selon leur choix, soit développer une fonctionnalité qu’ils souhaiteraient voir dans le jeu, soit tenter de concevoir un des bonus proposés. L’objectif des bonus n’est pas de les terminer tous, mais plutôt de revenir sur son code afin d’en acquérir une vision plus globale, ainsi que de revoir les acquis du jour. Il peut être bon pour les participants de réaliser ces bonus quelques jours après l’atelier, afin d’assimiler correctement et même d’approfondir les notions étudiées. + +Le premier bonus, plutôt simple, résoud un problème présent dans les objectifs précédents : le serpent peut se mordre en allant en arrière. Or, dans la plupart des jeux Snake, il n’est pas possible d’aller vers l’arrière ; les participants seront donc invités à résoudre ce problème pour se faire la main. + +Le second objectif bonus ajoute un compteur de points (qui est simplement la taille du serpent moins la taille initiale). L’idée est ici de se familiariser avec les fonctions de texte, particulièrement la fonction `ajouter_texte`, qui fonctionne de la même façon que `ajouter_image`. + +Le troisième bonus, un peu plus complexe, vise à utiliser ces fonctions de texte afin d’afficher au joueur son score en fin de partie et lui permettre de rejouer. + +Enfin, les participants les plus doués pourront proposer une solution pour gérer les rotations du serpent proprement en utilisant l’image `coin.png` mise à leur disposition. Cet objectif est complexe car il demande une bonne compréhension du fonctionnement des objets, ainsi qu’une idée (au moins vague), de la façon dont est géré le dessin du serpent en interne. \ No newline at end of file diff --git a/ateliers/snake/bibliotheque.py b/ateliers/snake/bibliotheque.py index ca5e822..f144d99 100644 --- a/ateliers/snake/bibliotheque.py +++ b/ateliers/snake/bibliotheque.py @@ -2,11 +2,12 @@ ### Bibliothèque Snake ### ### (c) Zeste de Savoir (c) ### ### Licence GPL ### -### Auteur : TAlone ### +### Auteurs : TAlone, Situphen ### ######################################## # Import des bibliothèques pygame et dotmap (faire attention à les installer: pip install pygame dotmap) import pygame +import pygame.freetype from dotmap import DotMap # Import de la fonction tirant des nombres aléatoires from random import randint @@ -29,7 +30,8 @@ "FLECHE_DROITE": pygame.K_RIGHT, "FLECHE_GAUCHE": pygame.K_LEFT, "FLECHE_HAUT": pygame.K_UP, - "FLECHE_BAS": pygame.K_DOWN + "FLECHE_BAS": pygame.K_DOWN, + "ESPACE": pygame.K_SPACE }) class Serpent: @@ -42,6 +44,12 @@ class Serpent: "STOP": 4 }) + # Liste des directions de rotations possibles + ROTATIONS = DotMap({ + "HORAIRE": 90, + "ANTI_HORAIRE": 270 + }) + # Liste des parties du serpent pour une plus grande aisance PARTIES = DotMap({ "TETE": 0, @@ -52,17 +60,20 @@ class Serpent: # initX, initY : positions initiales de la tête def __init__(self, initX=160, initY=64): # Positions (x, y) du serpent sur la fenêtre de jeu - self.sX = [initX, initX - GRILLE, initX - 2 * GRILLE] - self.sY = [initY, initY, initY] + self.__sX = [initX, initX - GRILLE, initX - 2 * GRILLE] + self.__sY = [initY, initY, initY] # Rotations des morceaux de serpent - self.sR = [0, 0, 0] + self.__sR = [0, 0, 0] def __avancer_serpent(self): # Avancement du corps du serpent : chaque morceau prend la position du précédent - for i in range(len(self.sX) - 1, 0, -1): - self.sX[i] = self.sX[i - 1] - self.sY[i] = self.sY[i - 1] - self.sR[i] = self.sR[i - 1] + for i in range(len(self.__sX) - 1, 0, -1): + self.__sX[i] = self.__sX[i - 1] + self.__sY[i] = self.__sY[i - 1] + self.__sR[i] = self.__sR[i - 1] + + # Forcer la queue à être orientée comme le corps juste avant + self.__sR[len(self.__sX) - 1] = self.__sR[len(self.__sX) - 2] def deplacer(self, direction, pas=GRILLE): # D'abord, bouger tout le corps @@ -70,73 +81,85 @@ def deplacer(self, direction, pas=GRILLE): # Puis mettre à jour la tête selon la direction souhaitée if direction == self.DIRECTIONS.DROITE: - self.sX[0] += pas + self.__sX[0] += pas elif direction == self.DIRECTIONS.GAUCHE: - self.sX[0] -= pas + self.__sX[0] -= pas elif direction == self.DIRECTIONS.BAS: - self.sY[0] += pas + self.__sY[0] += pas elif direction == self.DIRECTIONS.HAUT: - self.sY[0] -= pas + self.__sY[0] -= pas # Les rotations sont plus simples grâce aux constantes - self.sR[0] = 90 * direction + self.__sR[0] = 90 * direction def morceaux(self, longueur): # Vérifions que les participants ne fassent pas n'importe quoi - if(longueur > len(self.sX)): - longueur = len(self.sX) + if(longueur > len(self.__sX)): + longueur = self.taille # Pour chaque partie du corps... for i in range(longueur, 0, -1): # ...on regarde d'abord le type... type = self.PARTIES.CORPS if i == 1: type = self.PARTIES.TETE - elif i == len(self.sX): type = self.PARTIES.QUEUE + elif i == len(self.__sX): type = self.PARTIES.QUEUE + + # ...puis on déduit le sens de la rotation... + direction_rotation = self.__sR[i - 1] - self.__sR[i - 2] + + # Dans certains cas, la rotation ne tombe pas juste + # il faut donc l'ajuster + if direction_rotation < 0: + direction_rotation += 360 # ...avant de donner les informations nécessaires. yield DotMap({ - "position": (self.sX[i - 1], self.sY[i - 1]), - "rotation": self.sR[i - 1], + "position": (self.__sX[i - 1], self.__sY[i - 1]), + "rotation": self.__sR[i - 1], + "direction_rotation": direction_rotation, "type": type }) # NOTE: la taille ne doit pas pouvoir être modifiée directement par l'utilisateur @property def taille(self): - return len(self.sX) + return len(self.__sX) def grandir(self): # On regarde d'abord la direction de la dernière partie du serpent - direction = self.sR[len(self.sR) - 1] / 90 + direction = self.__sR[len(self.__sR) - 1] / 90 # On ajoute une composante de rotation similaire - self.sR.append(direction * 90) + self.__sR.append(direction * 90) # En fonction de la direction, il faut ajouter la composante à différents endroits if direction == self.DIRECTIONS.DROITE: - self.sX.append(self.sX[len(self.sX) - 1] - GRILLE) - self.sY.append(self.sY[len(self.sY) - 1]) + self.__sX.append(self.__sX[len(self.__sX) - 1] - GRILLE) + self.__sY.append(self.__sY[len(self.__sY) - 1]) elif direction == self.DIRECTIONS.GAUCHE: - self.sX.append(self.sX[len(self.sX) - 1] + GRILLE) - self.sY.append(self.sY[len(self.sY) - 1]) + self.__sX.append(self.__sX[len(self.__sX) - 1] + GRILLE) + self.__sY.append(self.__sY[len(self.__sY) - 1]) elif direction == self.DIRECTIONS.BAS: - self.sX.append(self.sX[len(self.sX) - 1]) - self.sY.append(self.sY[len(self.sY) - 1] - GRILLE) + self.__sX.append(self.__sX[len(self.__sX) - 1]) + self.__sY.append(self.__sY[len(self.__sY) - 1] - GRILLE) elif direction == self.DIRECTIONS.HAUT: - self.sX.append(self.sX[len(self.sX) - 1]) - self.sY.append(self.sY[len(self.sY) - 1] + GRILLE) + self.__sX.append(self.__sX[len(self.__sX) - 1]) + self.__sY.append(self.__sY[len(self.__sY) - 1] + GRILLE) # NOTE: la position de la tete ne doit pas pouvoir être modifiée directement par l'utilisateur @property def position_tete(self): # Donne la position de la tête du serpent - return (self.sX[0], self.sY[0]) + return (self.__sX[0], self.__sY[0]) class Jeu: def __init__(self, initialisation=None, boucle=None, largeur=LARGEUR, hauteur=HAUTEUR): # Initialisation de PyGame pygame.init() + # Initialisation du texte + pygame.freetype.init() + # Déclarations des paramètres facultatifs (fonctions du jeu) if initialisation is None: def initialisation(jeu): @@ -146,18 +169,23 @@ def initialisation(jeu): def boucle(jeu): return - # Ajout des variables internes - self.images = { } - self.ecran = pygame.display.set_mode((largeur, hauteur)) - self.horloge = pygame.time.Clock() + # Ajout des dimensions (modifiables) self.largeur = largeur self.hauteur = hauteur + + # Ajout des variables internes + self.__images = { } + self.__ecran = pygame.display.set_mode((largeur, hauteur)) + self.__horloge = pygame.time.Clock() self.__ouvert = True self.__initialisation = initialisation self.__boucle = boucle + # Initialisation des polices + # NOTE: cette fonction peut être de nouveau appelée ultérieurement pour changer les paramètres + self.init_text() + # Un peu d'esthétique - # pygame.display.set_icon(apple) pygame.display.set_caption("Snake") # Lancement de l'initialisation @@ -165,6 +193,9 @@ def boucle(jeu): # Lancement de la boucle infinie principale self.boucle() + def init_text(self, font="sans-serif", size=32): + self.__police = pygame.freetype.SysFont(font, size) + def boucle(self): # Lancement de la boucle tant que le jeu est ouvert while self.__ouvert: @@ -181,39 +212,43 @@ def boucle(self): # Lancement de la boucle utilisateur self.__boucle(self) - # Terminer le dessin du jeu - self.__rafraichir_ecran() + if self.__ouvert: + # Terminer le dessin du jeu + self.__rafraichir_ecran() # Chargement d'un asset dans PyGame def ajouter_image(self, name, path): - self.images[name] = pygame.image.load(path) + self.__images[name] = pygame.image.load(path) + + def ajouter_texte(self, name, text): + self.__images[name] = self.__police.render(text, (0, 0, 0))[0] def effacer_ecran(self): # Remplit l'écran de jaune - self.ecran.fill((255, 255, 0)) + self.__ecran.fill((255, 255, 0)) # Si un fond est défini, remplis l'écran avec ce fond - if self.images["fond"]: + if self.__images["fond"]: for x in range(0, ceil(self.largeur / GRILLE)): for y in range(0, ceil(self.hauteur / GRILLE)): - self.ecran.blit(self.images["fond"], (x * GRILLE, y * GRILLE)) + self.__ecran.blit(self.__images["fond"], (x * GRILLE, y * GRILLE)) def dessiner(self, image, parametres): # Effectue une rotation (éventuelle) de la tile - sprite = pygame.transform.rotate(self.images[image], parametres.get("rotation", 0)) + sprite = pygame.transform.rotate(self.__images[image], parametres.get("rotation", 0)) # Dessin simple de la sprite à l'écran - self.ecran.blit(sprite, parametres.get("position", 0)) + self.__ecran.blit(sprite, parametres.get("position", 0)) def __rafraichir_ecran(self): # Rafraichissement de l'écran pygame.display.flip() # Délai avant la prochaine frame (6 FPS) - self.horloge.tick(6) + self.__horloge.tick(6) def quitter(self): self.__ouvert = False - def position_aleatoire(self): + def __position_aleatoire(self): # Donne une position sur la zone de jeu return (randint(0, ceil(self.largeur / GRILLE)) * GRILLE, randint(0, ceil(self.hauteur / GRILLE)) * GRILLE) @@ -222,23 +257,25 @@ def position_aleatoire_pomme(self): pomme = self.__position_aleatoire() # Tant que la pomme est hors-zone, on la change de place - while self.est_sur_un_bord(pomme): + while self.est_un_bord(pomme): pomme = self.__position_aleatoire() # Ne pas mettre la pomme sur le serpent - for morceau in self.snake.morceaux(): + for morceau in self.serpent.morceaux(self.serpent.taille): if self.collision(pomme, morceau.position): # Tant que la pomme est sur le joueur, on la change de place - pomme = self.position_aleatoire() + pomme = self.__position_aleatoire() # Retourne la position trouvée - return pomme + return DotMap({ + "position": pomme, + "rotation": 0 + }) def collision(self, p1, p2): # cf. https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection return (p1[0] < p2[0] + GRILLE) and (p1[0] + GRILLE > p2[0]) and (p1[1] < p2[1] + GRILLE) and (p1[1] + GRILLE > p2[1]) - # TODO: Renommer le nom de la fonction ou ajouter un décorateur pour l'utiliser comme une variable def grille(self): # Renvoie un itérateur de chaque x et y disponible sur la grille for x in range(0, ceil(self.largeur / GRILLE)): diff --git a/ateliers/snake/bonus.py b/ateliers/snake/bonus.py new file mode 100644 index 0000000..0cde6fe --- /dev/null +++ b/ateliers/snake/bonus.py @@ -0,0 +1,164 @@ +######################################## +### Objectifs bonus ### +### (c) Zeste de Savoir (c) ### +### Licence GPL ### +### Auteur : TAlone ### +######################################## + +# Quelques bonus pour les participants en avance : +# (bonus 1 - aisé) - empêche le serpent d'aller en arrière ; +# (bonus 2 - aisé) - ajout d'un compteur de points ; +# (bonus 3 - moyen) - ajout d'un écran pour rejouer ; +# (bonus 4 - difficile) - ajout de coins au serpent. + +# Import de la bibliothèque du coding gouter (fonctions d'abstraction) +from bibliotheque import * + +# Fonction principale d'initialisation +def initialisation(jeu): + # Création d'un serpent à l'écran + jeu.serpent = Serpent() + + # Création d'une pomme + jeu.pomme = jeu.position_aleatoire_pomme() + + # (B3) Création d'une variable de perte + jeu.serpent.vivant = True + # (B3) Ajout du texte pour relancer la partie + jeu.ajouter_texte("Nouvelle Partie", "Pour rejouer, appuyez sur ESPACE") + + # Donne une direction par défaut au serpent + jeu.direction_serpent = jeu.serpent.DIRECTIONS.STOP + + # Déclaration du cactus + jeu.ajouter_image("Cactus", "images/cactus.png") + # Déclaration de la pomme + jeu.ajouter_image("Pomme", "images/pomme.png") + + # Ajout du corps + jeu.ajouter_image("Corps", "images/corps.png") + # Ajout de la queue + jeu.ajouter_image("Queue", "images/queue.png") + # Ajout de la tête + jeu.ajouter_image("Tête", "images/tete.png") + # (B4) Ajout de l'image de rotation + jeu.ajouter_image("Coin", "images/coin.png") + + # Ajout de l'asset spécial qui sera automatiquement mis en fond + jeu.ajouter_image("fond", "images/fond.png") + +# Fonction executée regulièrement +def boucle(jeu): + # Fermeture du jeu lors de l'appui de la croix + if Evenements.QUITTER in jeu.evenements: + jeu.quitter() + + # Lorsqu'une touche est appuyée + if Evenements.TOUCHE_APPUYEE in jeu.evenements: + # On stocke la touche appuyée + touche = jeu.evenements[Evenements.TOUCHE_APPUYEE] + + # ...on vérifie la direction droite... + # (B1) On vérifie aussi que le serpent n'aille pas déjà à gauche + if touche == Touches.FLECHE_DROITE and jeu.direction_serpent != jeu.serpent.DIRECTIONS.GAUCHE: + jeu.direction_serpent = jeu.serpent.DIRECTIONS.DROITE + # ...et les autres directions. + # (B1) De même pour les autres directions + elif touche == Touches.FLECHE_HAUT and jeu.direction_serpent != jeu.serpent.DIRECTIONS.BAS: + jeu.direction_serpent = jeu.serpent.DIRECTIONS.HAUT + elif touche == Touches.FLECHE_BAS and jeu.direction_serpent != jeu.serpent.DIRECTIONS.HAUT: + jeu.direction_serpent = jeu.serpent.DIRECTIONS.BAS + elif touche == Touches.FLECHE_GAUCHE and jeu.direction_serpent != jeu.serpent.DIRECTIONS.DROITE: + jeu.direction_serpent = jeu.serpent.DIRECTIONS.GAUCHE + # (B3) Si l'on appuie sur espace quand le serpent est mort + elif touche == Touches.ESPACE and not jeu.serpent.vivant: + # (B3) Création d'un nouveau serpent (écrase le précédent) + jeu.serpent = Serpent() + # (B3) Le serpent est vivant et à l'arrêt + jeu.serpent.vivant = True + jeu.direction_serpent = jeu.serpent.DIRECTIONS.STOP + + # Si il y a collision entre la pomme et la tête du serpent + if jeu.collision(jeu.serpent.position_tete, jeu.pomme.position): + # Le serpent grandit + jeu.serpent.grandir() + # La pomme change de position + jeu.pomme = jeu.position_aleatoire_pomme() + + # Effacement de l'écran, et remplissage avec les tiles de fond + jeu.effacer_ecran() + + # Déclaration d'une variable contenant la taille du serpent + taille = jeu.serpent.taille + + # (B2) Ajoute le texte de score et le dessine + jeu.ajouter_texte("Score", "Score : " + str(taille - 3)) + + # (B3) Change la position du score si l'écran "Rejouer" est affiché + if jeu.serpent.vivant: + jeu.dessiner("Score", { "position": (36, 36) }) + else: + jeu.dessiner("Score", { "position": (260, 150) }) + # (B3) Ajoute le message pour rejouer + jeu.dessiner("Nouvelle Partie", { "position": (50, 200) }) + + # Itération sur tous les morceaux de grille + for carreau in jeu.grille(): + # Si l'on est sur un côté... + if jeu.est_un_bord(carreau): + # ...dessine un cactus + jeu.dessiner("Cactus", { "position": carreau }) + + # Si le coin est en contact avec la tête du serpent + if jeu.collision(carreau, jeu.serpent.position_tete): + # Ferme le jeu si il y a contact entre la tête et un bord + #jeu.quitter() + # (B3) Le serpent meurt s'il rentre dans un mur + jeu.serpent.vivant = False + + # (B3) Dessin du serpent uniquement s'il est en vie + if jeu.serpent.vivant: + # Dessin d'un certain nombre de morceaux à l'écran + for morceau in jeu.serpent.morceaux(taille): + # Choix du sprite en fonction de la partie à dessiner et dessin à l'écran + if morceau.type == jeu.serpent.PARTIES.TETE: + jeu.dessiner("Tête", morceau) + elif morceau.type == jeu.serpent.PARTIES.QUEUE: + jeu.dessiner("Queue", morceau) + else: + # (B4) Vérification de la rotation dans le sens des aiguilles + if morceau.direction_rotation == jeu.serpent.ROTATIONS.HORAIRE: + # (B4) On doit alors orienter de -90° la tuile + morceau.rotation -= 90 + + # (B4) Ne pas oublier de dessiner + jeu.dessiner("Coin", morceau) + elif morceau.direction_rotation == jeu.serpent.ROTATIONS.ANTI_HORAIRE: + # (B4) Pour une rotation en sens inverse des aiguilles, il faut tourner de 180° + morceau.rotation += 180 + + # (B4) Ne pas oublier de dessiner + jeu.dessiner("Coin", morceau) + # Dans les autres cas, on considère qu'il n'y a pas de rotation + else: + # Dessin du corps + jeu.dessiner("Corps", morceau) + + # Vérification que le serpent ne se mord pas + # Attention : la tête est incluse, il faut donc la retirer + if jeu.collision(jeu.serpent.position_tete, morceau.position) and morceau.type != jeu.serpent.PARTIES.TETE: + # Ferme le jeu si le serpent se rentre dedans + #jeu.quitter() + # (B3) Le serpent meurt s'il se rentre dedans + jeu.serpent.vivant = False + + # (B3) La pomme n'apparait que si le serpent est en vie + if jeu.serpent.vivant: + # Dessin de la pomme + jeu.dessiner("Pomme", jeu.pomme) + + # Déplacement du serpent + jeu.serpent.deplacer(jeu.direction_serpent) + +# Lancement du jeu à partir des fonctions d'abstraction +Jeu(initialisation, boucle) diff --git a/ateliers/snake/images/coin.png b/ateliers/snake/images/coin.png new file mode 100644 index 0000000..1c5edd7 Binary files /dev/null and b/ateliers/snake/images/coin.png differ diff --git a/ateliers/snake/obj1.py b/ateliers/snake/obj1.py index 7ba9571..b7bcd03 100644 --- a/ateliers/snake/obj1.py +++ b/ateliers/snake/obj1.py @@ -22,9 +22,6 @@ def initialisation(jeu): # (OP) Fonction executée regulièrement def boucle(jeu): - # (SO1) Déclaration d'une variable contenant la taille du serpent - taille = jeu.serpent.taille - # (SO2) Fermeture du jeu lors de l'appui de la croix if Evenements.QUITTER in jeu.evenements: jeu.quitter() @@ -32,6 +29,9 @@ def boucle(jeu): # (SO2) Effacement de l'écran, et remplissage avec les tiles de fond jeu.effacer_ecran() + # (SO1) Déclaration d'une variable contenant la taille du serpent + taille = jeu.serpent.taille + # (SO1) Affichage de la variable de taille print(taille) diff --git a/ateliers/snake/obj2.py b/ateliers/snake/obj2.py index 028eeca..e150539 100644 --- a/ateliers/snake/obj2.py +++ b/ateliers/snake/obj2.py @@ -33,9 +33,6 @@ def initialisation(jeu): # Fonction executée regulièrement def boucle(jeu): - # Déclaration d'une variable contenant la taille du serpent - taille = jeu.serpent.taille - # Fermeture du jeu lors de l'appui de la croix if Evenements.QUITTER in jeu.evenements: jeu.quitter() @@ -50,6 +47,9 @@ def boucle(jeu): # (SO1) ...dessine un cactus jeu.dessiner("Cactus", { "position": carreau }) + # Déclaration d'une variable contenant la taille du serpent + taille = jeu.serpent.taille + # (SO2) Dessin d'un certain nombre de morceaux à l'écran for morceau in jeu.serpent.morceaux(taille): # (SO3) Choix du sprite en fonction de la partie à dessiner et dessin à l'écran diff --git a/ateliers/snake/obj3.py b/ateliers/snake/obj3.py index f3852d0..c34b110 100644 --- a/ateliers/snake/obj3.py +++ b/ateliers/snake/obj3.py @@ -35,9 +35,6 @@ def initialisation(jeu): # Fonction executée regulièrement def boucle(jeu): - # Déclaration d'une variable contenant la taille du serpent - taille = jeu.serpent.taille - # Fermeture du jeu lors de l'appui de la croix if Evenements.QUITTER in jeu.evenements: jeu.quitter() @@ -68,6 +65,9 @@ def boucle(jeu): # (SO1) ...dessine un cactus jeu.dessiner("Cactus", { "position": carreau }) + # Déclaration d'une variable contenant la taille du serpent + taille = jeu.serpent.taille + # Dessin d'un certain nombre de morceaux à l'écran for morceau in jeu.serpent.morceaux(taille): # Choix du sprite en fonction de la partie à dessiner et dessin à l'écran diff --git a/ateliers/snake/obj4.py b/ateliers/snake/obj4.py new file mode 100644 index 0000000..6890390 --- /dev/null +++ b/ateliers/snake/obj4.py @@ -0,0 +1,114 @@ +######################################## +### Quatrième objectif ### +### (c) Zeste de Savoir (c) ### +### Licence GPL ### +### Auteur : TAlone ### +######################################## + +# Il est dans ce quatrième objectif question des collisions : +# (sous-objectif 1) - objectif intermédiaire visant à ajouter la pomme ; +# (sous-objectif 2) - entre le serpent et la pomme ; +# (sous-objectif 3) - entre le serpent et le bord ; +# (sous-objectif 4) - entre le serpent et lui-même. + +# Import de la bibliothèque du coding gouter (fonctions d'abstraction) +from bibliotheque import * + +# Fonction principale d'initialisation +def initialisation(jeu): + # Création d'un serpent à l'écran + jeu.serpent = Serpent() + + # (SO1) Création d'une pomme + jeu.pomme = jeu.position_aleatoire_pomme() + + # Donne une direction par défaut au serpent + jeu.direction_serpent = jeu.serpent.DIRECTIONS.STOP + + # Déclaration du cactus + jeu.ajouter_image("Cactus", "images/cactus.png") + # (SO1) Déclaration de la pomme + jeu.ajouter_image("Pomme", "images/pomme.png") + + # Ajout du corps + jeu.ajouter_image("Corps", "images/corps.png") + # Ajout de la queue + jeu.ajouter_image("Queue", "images/queue.png") + # Ajout de la tête + jeu.ajouter_image("Tête", "images/tete.png") + + # Ajout de l'asset spécial qui sera automatiquement mis en fond + jeu.ajouter_image("fond", "images/fond.png") + +# Fonction executée regulièrement +def boucle(jeu): + # Fermeture du jeu lors de l'appui de la croix + if Evenements.QUITTER in jeu.evenements: + jeu.quitter() + + # Lorsqu'une touche est appuyée + if Evenements.TOUCHE_APPUYEE in jeu.evenements: + # On stocke la touche appuyée + touche = jeu.evenements[Evenements.TOUCHE_APPUYEE] + + # ...on vérifie la direction droite... + if touche == Touches.FLECHE_DROITE: + jeu.direction_serpent = jeu.serpent.DIRECTIONS.DROITE + # ...et les autres directions. + elif touche == Touches.FLECHE_HAUT: + jeu.direction_serpent = jeu.serpent.DIRECTIONS.HAUT + elif touche == Touches.FLECHE_BAS: + jeu.direction_serpent = jeu.serpent.DIRECTIONS.BAS + elif touche == Touches.FLECHE_GAUCHE: + jeu.direction_serpent = jeu.serpent.DIRECTIONS.GAUCHE + + # (SO2) Si il y a collision entre la pomme et la tête du serpent + if jeu.collision(jeu.serpent.position_tete, jeu.pomme.position): + # (SO2) Le serpent grandit + jeu.serpent.grandir() + # (SO2) La pomme change de position + jeu.pomme = jeu.position_aleatoire_pomme() + + # Effacement de l'écran, et remplissage avec les tiles de fond + jeu.effacer_ecran() + + # Itération sur tous les morceaux de grille + for carreau in jeu.grille(): + # Si l'on est sur un côté... + if jeu.est_un_bord(carreau): + # ...dessine un cactus + jeu.dessiner("Cactus", { "position": carreau }) + + # (SO3) Si le coin est en contact avec la tête du serpent + if jeu.collision(carreau, jeu.serpent.position_tete): + # (SO3) Ferme le jeu si il y a contact entre la tête et un bord + jeu.quitter() + + # Déclaration d'une variable contenant la taille du serpent + taille = jeu.serpent.taille + + # Dessin d'un certain nombre de morceaux à l'écran + for morceau in jeu.serpent.morceaux(taille): + # Choix du sprite en fonction de la partie à dessiner et dessin à l'écran + if morceau.type == jeu.serpent.PARTIES.TETE: + jeu.dessiner("Tête", morceau) + elif morceau.type == jeu.serpent.PARTIES.QUEUE: + jeu.dessiner("Queue", morceau) + else: + # Dessin du corps + jeu.dessiner("Corps", morceau) + + # (SO4) Vérification que le serpent ne se mord pas + # Attention : la tête est incluse, il faut donc la retirer + if jeu.collision(jeu.serpent.position_tete, morceau.position) and morceau.type != jeu.serpent.PARTIES.TETE: + # (SO4) Ferme le jeu si le serpent se rentre dedans + jeu.quitter() + + # (SO1) Dessin de la pomme + jeu.dessiner("Pomme", jeu.pomme) + + # Déplacement du serpent + jeu.serpent.deplacer(jeu.direction_serpent) + +# Lancement du jeu à partir des fonctions d'abstraction +Jeu(initialisation, boucle) diff --git a/communication/README.md b/communication/README.md new file mode 100644 index 0000000..6e05a23 --- /dev/null +++ b/communication/README.md @@ -0,0 +1,33 @@ +# Communication autour de l'événement + +## Affiche + +Affiche imprimée pour l'événement du mercredi 24 avril 2019 et diffusée dans des établissements scolaires autour d'Orsay ainsi qu'à Orsay même avec la coopération de la mairie. + +Créés par Situphen, sous licence CC-BY-NC-SA. + +## Visuel pour les réseaux sociaux + +Encarts avec un ratio 2:1 pour la diffusion de l'événement sur Twitter. + +Créé par Amaury, sous licence CC-BY-NC-SA. + +## Icône Cookie + +Icône pour les billets et articles autour de l'événement. + +Créé par TAlone, sous licence CC-BY. + +## Icône Cookie avec bandeau + +Variante de l'icône avec le nom de l'événement, utilisé pour la mise en Une des billets ou articles. + +Créé par Situphen à partir de l'icône de TAlone, sous licence CC-BY. + +## Logo et mascotte de Zeste de Savoir + +Nous utilisons dans certains de nos visuels le logo de Zeste de Savoir ainsi que sa mascotte Clem. Vous pouvez trouver les sources de ces illustrations sur le dépôt [`documents-communication`](https://github.com/zestedesavoir/documents-communication). + +Le logo a été créé par [MaxRoyo](https://zestedesavoir.com/membres/voir/MaxRoyo/) et est sous licence CC-BY-NC-SA. + +La mascotte Clem a été créée par Jiyong et n'est à notre connaissance sous aucune licence, donc tous droits réservés. diff --git a/communication/affiche-bleue.png b/communication/affiche-bleue.png deleted file mode 100644 index fcb9f65..0000000 Binary files a/communication/affiche-bleue.png and /dev/null differ diff --git a/communication/affiche-bleue.svg b/communication/affiche-bleue.svg deleted file mode 100644 index 2f36f75..0000000 --- a/communication/affiche-bleue.svg +++ /dev/null @@ -1,1206 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="297mm" - height="420mm" - viewBox="0 0 297 420" - version="1.1" - id="svg8" - inkscape:export-filename="/home/situphen/zdsaffiche/affiche12-bleue.png" - inkscape:export-xdpi="96" - inkscape:export-ydpi="96" - sodipodi:docname="affiche_bleue.svg" - inkscape:version="0.92.3 (2405546, 2018-03-11)"> - <defs - id="defs2"> - <inkscape:path-effect - effect="spiro" - id="path-effect1034" - is_visible="true" /> - <clipPath - clipPathUnits="userSpaceOnUse" - id="clipPath18"> - <path - d="M 0,841.89 H 595.28 V 0 H 0 Z" - id="path20" - inkscape:connector-curvature="0" /> - </clipPath> - <linearGradient - id="SVGID_1_" - gradientUnits="userSpaceOnUse" - x1="519.1709" - y1="-30.700001" - x2="519.1709" - y2="173.12" - gradientTransform="matrix(1,0,0,-1,0,1023.28)"> - <stop - offset="0" - style="stop-color:#4B005C" - id="stop10" /> - <stop - offset="1" - style="stop-color:#4B005C;stop-opacity:0" - id="stop12" /> - </linearGradient> - <linearGradient - id="SVGID_7_" - gradientUnits="userSpaceOnUse" - x1="304.25299" - y1="638.62769" - x2="407.11292" - y2="733.00769" - gradientTransform="matrix(1,0,0,-1,0,1023.28)"> - <stop - offset="0" - style="stop-color:#FFFFFF" - id="stop222" /> - <stop - offset="1" - style="stop-color:#FFFFFF;stop-opacity:0" - id="stop224" /> - </linearGradient> - <linearGradient - id="SVGID_8_" - gradientUnits="userSpaceOnUse" - x1="596.01538" - y1="799.24127" - x2="712.24542" - y2="737.7113" - gradientTransform="matrix(1,0,0,-1,0,1023.28)"> - <stop - offset="0" - style="stop-color:#FFFFFF" - id="stop229" /> - <stop - offset="1" - style="stop-color:#FFFFFF;stop-opacity:0" - id="stop231" /> - </linearGradient> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.50373354" - inkscape:cx="897.20393" - inkscape:cy="1179.3489" - inkscape:document-units="mm" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:measure-start="0.469178,1586.53" - inkscape:measure-end="568,1588" - showguides="true" - inkscape:guide-bbox="true" - inkscape:window-width="1366" - inkscape:window-height="745" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" /> - <metadata - id="metadata5"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Calque 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,123)"> - <rect - id="rect3721" - width="302.1673" - height="425.06036" - x="0.0015310288" - y="-127.66061" - style="fill:#19516b;fill-opacity:1;stroke-width:0.3104206" - sodipodi:insensitive="true" /> - <text - xml:space="preserve" - style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:7.76111126px;line-height:1.25;font-family:'Tlwg Typist';-inkscape-font-specification:'Tlwg Typist, Medium';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;stroke-width:0.19669913" - x="146.23392" - y="290.58694" - id="text210"><tspan - sodipodi:role="line" - x="146.23392" - y="297.76596" - style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:9.87777805px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;stroke-width:0.19669913" - id="tspan519" /></text> - <text - id="text11490" - y="136.66251" - x="232.30417" - style="font-style:normal;font-weight:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - xml:space="preserve"><tspan - style="stroke-width:0.26458332" - y="142.28076" - x="232.30417" - id="tspan11488" - sodipodi:role="line" /></text> - <text - xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:14.00881958px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35022047" - x="88.360374" - y="82.120255" - id="text11603"><tspan - sodipodi:role="line" - x="88.360374" - y="94.514778" - style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:14.11111069px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Light';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1" - id="tspan11668" /></text> - <text - xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:14.00881958px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35022047" - x="111.11456" - y="31.274979" - id="text11603-3"><tspan - sodipodi:role="line" - x="111.11456" - y="43.669502" - style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:15.16944408px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f8ad32;fill-opacity:1;stroke-width:0.35022047" - id="tspan9270" /></text> - <g - id="g5568" - transform="translate(69.829763,-16.080538)" /> - <g - id="g594" - transform="translate(0.07207722,4.7709222)"> - <flowRoot - xml:space="preserve" - id="flowRoot533" - style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" - transform="matrix(0.26458333,0,0,0.26458333,-11.183953,-201.31666)"><flowRegion - id="flowRegion535"><rect - id="rect537" - width="920" - height="232" - x="104" - y="29.401575" /></flowRegion><flowPara - id="flowPara539" /></flowRoot> <g - id="g236"> - <text - xml:space="preserve" - style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:27.99185753px;line-height:1.25;font-family:'Tlwg Typist';-inkscape-font-specification:'Tlwg Typist, Medium';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#f9f9f9;fill-opacity:1;stroke:none;stroke-width:0.69979894" - x="148.45818" - y="-63.591805" - id="text11595-7"><tspan - sodipodi:role="line" - id="tspan11593-6" - x="148.45818" - y="-63.591805" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.75555611px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#f8ad32;fill-opacity:1;stroke-width:0.69979894">la programmation sans pépins !</tspan></text> - <text - id="text571" - y="-88.762527" - x="149.38985" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;line-height:1.25;font-family:Laksaman;-inkscape-font-specification:'Laksaman, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - xml:space="preserve"><tspan - sodipodi:role="line" - id="tspan579" - style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:33.51388931px;font-family:Merriweather;-inkscape-font-specification:'Merriweather Light';fill:#ffffff" - x="149.38985" - y="-88.762527">Zeste de Code,</tspan></text> - </g> - </g> - <flowRoot - xml:space="preserve" - id="flowRoot9272" - style="fill:black;fill-opacity:1;stroke:none;font-family:sans-serif;font-style:normal;font-weight:normal;font-size:24px;line-height:1.25;letter-spacing:0px;word-spacing:0px"><flowRegion - id="flowRegion9274"><rect - id="rect9276" - width="86" - height="26" - x="758" - y="807.40155" /></flowRegion><flowPara - id="flowPara9278" /></flowRoot> <g - id="g1829" - transform="translate(-1.8601663e-8,13.069787)"> - <text - xml:space="preserve" - style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:Laksaman;-inkscape-font-specification:'Laksaman, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="148.78398" - y="243.81335" - id="text1146"><tspan - sodipodi:role="line" - x="148.78398" - y="243.81335" - style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:9.87777805px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" - id="tspan441">zestedesavoir.com</tspan></text> - <g - id="g16" - clip-path="url(#clipPath18)" - transform="matrix(0.26570594,0,0,-0.26570594,69.348679,422.57292)"> - <g - id="g22" - transform="translate(190.0557,765.4824)"> - <path - d="m 0,0 c -2.068,5.102 -5.754,6.669 -10.526,5.931 -6.23,-0.964 -9.474,-3.977 -10.23,-9.16 -0.468,-3.207 0.553,-4.976 4.069,-3.92 C -10.988,-5.439 -5.333,-3.589 0,0 m -25.405,-7.056 c 1.134,9.785 6.307,17.409 16.686,20.194 5.08,1.363 9.243,0.04 12.269,-4.154 C 6.617,4.735 4.774,0.79 2.241,-2.978 c -2.857,-4.248 -7.464,-5.907 -11.756,-8.069 -1.81,-0.911 -4.238,-0.84 -5.681,-3.48 7.082,-2.87 13.972,-3.015 21.037,-0.929 -0.483,-6.294 -3.061,-8.536 -10.716,-9.018 -5.516,-0.346 -10.924,0.457 -15.572,3.735 -2.256,1.591 -5.593,8.209 -4.958,13.683" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path24" - inkscape:connector-curvature="0" /> - </g> - <g - id="g26" - transform="translate(467.1416,750.4678)"> - <path - d="m 0,0 c -1.39,4.513 -2.298,9.256 -4.312,13.47 -1.876,3.929 1.127,5.748 2.747,7.575 1.74,1.964 2.627,-0.715 3.059,-2.153 C 2.882,14.267 4.342,9.684 6.986,5.592 7.863,4.235 8.416,2.535 10.606,1.907 15.278,19.671 23.677,34.214 43.834,38.684 43.507,34.291 42.317,31.498 37.967,29.911 24.158,24.874 18.598,13.182 14.986,0.122 14.899,-0.193 14.981,-0.556 14.892,-0.87 13.97,-4.096 14.465,-8.555 10.401,-9.536 c -3.972,-0.96 -5.164,3.382 -7.364,5.67 -0.869,0.904 -1.214,2.51 -3.242,2.225 -0.736,-2.53 -2.038,-4.897 -4.492,-6.699 -3.558,2.028 -5.054,5.865 -7.471,9.391 -2.994,-3.863 -6.435,-6.467 -10.894,-7.773 -10.424,-3.053 -19.57,5.163 -17.577,15.936 1.814,9.807 10.504,17.63 20.454,18.313 1.831,0.126 4.253,-0.271 4.375,-2.181 0.171,-2.684 -1.233,-5.231 -4.299,-5.835 -1.602,-0.317 -3.322,0.015 -4.986,-0.029 -7.225,-0.191 -11.376,-3.902 -10.69,-9.519 0.809,-6.623 7.087,-11.287 13.556,-10.072 6.986,1.311 9.028,3.917 5.947,9.626 -2.712,5.025 -0.459,7.926 2.617,11.999 C -9.102,14.019 -8.852,4.485 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path28" - inkscape:connector-curvature="0" /> - </g> - <g - id="g30" - transform="translate(532.9609,779.2568)"> - <path - d="m 0,0 c 0.402,-8.8 2.647,-16.514 8.216,-23.371 0.767,7.105 1.088,14.526 8.035,18.183 8.589,4.52 17.892,6.839 28.051,5.82 -0.396,-4.526 -1.518,-7.412 -6.885,-7.044 -7.237,0.496 -14.044,-1.964 -20.832,-4.179 -2.135,-0.697 -2.616,-2.145 -2.621,-4.195 -0.01,-4.033 0.313,-8.063 1.749,-11.788 1.19,-3.089 0.876,-5.631 -0.564,-8.49 -2.442,-4.853 -4.24,-5.406 -7.837,-1.153 -6.313,7.465 -10.148,16.222 -12.135,25.787 -0.134,0.645 -0.281,1.286 -0.489,2.24 -4.104,-1.597 -6.861,-3.176 -4.003,-8.284 1.964,-3.512 -0.043,-7.179 -1.671,-10.432 -3.145,-6.284 -8.773,-8.995 -15.434,-9.316 -5.971,-0.287 -9.716,3.341 -12.392,8.374 -3.457,6.501 2.019,19.629 10.123,23.5 2.66,1.272 5.638,1.888 8.489,2.747 2.401,0.725 5.27,0.609 5.554,-2.083 0.256,-2.435 -1.249,-5.201 -4.5,-5.613 -1.309,-0.166 -2.661,0.014 -3.993,-0.006 -7.554,-0.111 -11.347,-3.943 -10.92,-11.013 0.323,-5.314 6.824,-9.587 13.083,-8.601 7.793,1.23 9.923,6.051 5.511,12.732 -0.719,1.089 -0.255,1.864 0.021,2.726 C -13.885,-8.58 -5.582,-1.267 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path32" - inkscape:connector-curvature="0" /> - </g> - <g - id="g34" - transform="translate(320.9287,769.9463)"> - <path - d="m 0,0 c -7.564,0.017 -12.709,-3.376 -12.567,-8.287 0.181,-6.299 5.29,-11.3 11.567,-11.325 5.336,-0.022 9.207,2.595 9.163,6.195 C 8.068,-5.767 4.566,-0.01 0,0 M 12.134,34.484 C 9.066,22.722 8.57,12.066 10.985,1.414 c 1.519,-6.698 3.786,-13.254 8.597,-18.279 3.778,-3.947 2.787,-6.741 -0.933,-9.856 -3.64,1.662 -4.851,5.52 -7.402,8.659 -2.862,-3.908 -6.34,-6.749 -11.006,-8.117 -10.242,-3.002 -19.216,4.681 -17.765,15.294 1.502,10.989 7.648,15.664 16.937,17.972 3.631,0.902 4.845,2.121 5.054,6.017 0.328,6.109 -0.405,12.55 3.422,18.151 0.91,1.333 1.745,2.086 4.245,3.229" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path36" - inkscape:connector-curvature="0" /> - </g> - <g - id="g38" - transform="translate(276.8042,765.4326)"> - <path - d="m 0,0 c -2.691,5.49 -5.401,6.713 -11.646,5.53 -5.174,-0.979 -8.147,-3.984 -8.785,-9.216 -0.337,-2.764 0.764,-4.305 3.685,-3.42 C -10.917,-5.339 -5.082,-3.533 0,0 m -14.641,-14.439 c 6.934,-3.122 13.809,-1.923 21.06,-1.176 0.356,-3.682 -1.639,-6.139 -4.737,-7.43 -8.666,-3.611 -19.182,-0.876 -25.202,6.303 -0.617,0.735 -1.142,1.624 -1.45,2.53 -4.17,12.264 8.021,28.56 20.835,27.894 C 3.429,13.288 7.343,6.286 4.083,-0.564 0.806,-7.45 -5.81,-9.505 -11.954,-12.328 c -0.873,-0.401 -2.016,-0.346 -2.687,-2.111" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path40" - inkscape:connector-curvature="0" /> - </g> - <g - id="g42" - transform="translate(369.8711,765.4834)"> - <path - d="m 0,0 c -2.07,5.388 -6.089,6.476 -11.185,5.53 -5.803,-1.075 -8.851,-4.073 -9.329,-9.23 -0.3,-3.261 1.184,-4.313 4.153,-3.354 C -10.724,-5.233 -5.026,-3.523 0,0 m 6.608,-15.726 c -0.712,-5.016 -3.27,-7.381 -8.249,-8.157 -8.63,-1.345 -16.3,-0.52 -21.925,7.056 -0.578,0.776 -1.149,1.618 -1.461,2.519 -4.146,11.986 7.684,28.248 20.29,27.939 8.21,-0.201 12.191,-7.246 8.543,-14.609 -2.942,-5.933 -8.468,-8.126 -13.901,-10.599 -1.468,-0.668 -2.968,-1.264 -5.563,-2.362 7.792,-3.833 14.887,-2.331 22.266,-1.787" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path44" - inkscape:connector-curvature="0" /> - </g> - <g - id="g46" - transform="translate(243.9395,740.9863)"> - <path - d="m 0,0 c -6.236,6.943 -10.503,14.904 -12.271,24.02 -2.235,11.535 -2.7,23.06 2.272,34.17 0.52,1.161 0.726,2.999 2.402,2.503 2.008,-0.593 1.287,-2.372 0.754,-3.762 -0.84,-2.191 -1.436,-4.388 -0.882,-7.06 9.817,4.704 19.828,8.135 31.068,7.049 C 22.971,52.135 21.475,49.573 16.276,49.853 8.701,50.26 1.598,47.74 -5.462,45.223 -8.332,44.2 -8.643,42.104 -8.557,39.709 -8.17,28.831 -5.429,18.74 1.439,10.026 5.542,4.82 5.506,4.792 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path48" - inkscape:connector-curvature="0" /> - </g> - <g - id="g50" - transform="translate(419.46,765.3076)"> - <path - d="m 0,0 c -1.829,0.293 -2.578,1.723 -3.589,3.032 -2.751,3.566 -6.324,4.416 -10.664,3.096 -2.791,-0.85 -5.194,-2.507 -5.694,-5.034 -0.592,-2.995 2.971,-3.025 4.806,-4.073 4.058,-2.315 8.517,-3.786 13.037,-4.92 2.804,-0.704 4.297,-2.438 4.856,-5.054 0.542,-2.534 -0.602,-4.471 -2.512,-6.121 -5.634,-4.866 -12.338,-6.283 -19.351,-5.066 -3.498,0.608 -6.26,3.331 -6.695,7.836 6.727,0.033 13.835,-1.4 21.544,2.65 -3.636,1.478 -6.143,2.608 -8.727,3.522 -4.99,1.766 -8.337,5.368 -10.215,10.033 -3.378,8.396 1.432,14.589 10.433,13.891 C -3.618,13.082 1.557,7.543 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path52" - inkscape:connector-curvature="0" /> - </g> - <g - id="g54" - transform="translate(199.6831,749.8076)"> - <path - d="m 0,0 c 7.338,-1.752 13.909,-1.674 21.408,1.584 -3.653,1.737 -6.178,3.331 -8.932,4.162 -4.893,1.477 -7.666,5.083 -9.714,9.23 -3.961,8.021 0.736,14.764 9.726,14.323 9.017,-0.442 14.485,-5.763 13.624,-13.516 -2.415,0.319 -3.368,2.531 -4.826,3.871 -2.608,2.397 -5.481,3.002 -8.738,2.29 C 9.488,21.276 6.47,19.692 5.866,16.67 5.218,13.431 9.015,13.314 11.008,12.374 15.044,10.47 19.323,9.057 23.557,7.603 29.143,5.685 30.497,0.374 26.013,-3.407 19.919,-8.545 12.97,-10.373 5.201,-7.553 1.792,-6.315 0.897,-3.473 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path56" - inkscape:connector-curvature="0" /> - </g> - <g - id="g58" - transform="translate(527.8535,787.2021)"> - <path - d="m 0,0 c -1.303,9.63 3.294,14.546 11.084,13.899 1.94,-0.161 2.763,-0.89 2.767,-2.635 C 13.854,9.663 13.362,8.148 11.395,8.204 6.186,8.354 2.547,6.049 0,0" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path60" - inkscape:connector-curvature="0" /> - </g> - <g - id="g62" - transform="translate(156.6675,752.3877)"> - <path - d="M 0,0 C 2.023,8.623 1.561,10.32 1.559,20.258 1.555,36.42 -9.89,45.596 -24.443,39.167 -37.341,33.467 -52.43,22.96 -61.25,13.018 c 0.44,-1.775 0.42,-1.683 1.262,-4.047 0,0 14.851,14.626 27.905,17.824 7.238,1.772 16.62,-2.35 19.547,-9.017 0,0 8.491,-18.508 -1.065,-37.866 -1.886,-3.976 -3.461,-7.297 -5.033,-10.62 0,0 -0.612,-0.846 0,-1.274 0,0 0.89,-0.806 1.456,0 0,0 14.469,20.426 17.178,31.982" - style="fill:#f8ad32;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path64" - inkscape:connector-curvature="0" /> - </g> - <g - id="g66" - transform="translate(24.3271,787.7803)"> - <path - d="M 0,0 C 10.319,9.908 21.959,15.851 35.988,17.137 47.49,18.194 56.135,10.121 56.2,-1.436 c 0.021,-3.749 -0.174,-7.549 -0.778,-11.243 -4.908,-29.985 7.366,-41.894 37.76,-41.297 7.782,0.153 15.207,1.199 23.718,2.846 0,0 17.264,3.63 26.326,11.471 2.911,2.518 5.454,5.656 8.134,8.547 0.731,2.034 -1.448,1.259 -1.448,1.259 -18.883,-9.007 -30.247,-10.674 -30.247,-10.674 -13.22,-1.951 -26.405,-3.36 -38.957,3.295 -8.571,4.544 -12.062,11.984 -11.192,21.645 0.725,8.051 1.991,16.166 1.595,24.183 C 70.236,26.246 57.196,35.402 39.927,31.112 21.424,26.516 8.504,14.607 -3.503,0.308 c -3.202,-3.814 -2.135,-4.322 -2.135,-4.322 0,0 0.914,-0.523 5.638,4.014" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path68" - inkscape:connector-curvature="0" /> - </g> - <g - id="g70" - transform="translate(77.1812,756.7612)"> - <path - d="m 0,0 c -26.007,-5.248 -34.209,-4.312 -42.486,16.763 -3.375,-5.034 -7.035,-8.377 -8.024,-12.38 -2.556,-10.354 5.911,-21.088 17.512,-20.996 8.714,0.07 17.549,2.555 26.072,4.965 4.936,1.395 7.74,2.604 9.116,3.865 C 1.152,-5.474 0.425,-2.882 0,0" - style="fill:#f8ad32;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path72" - inkscape:connector-curvature="0" /> - </g> - </g> - <text - id="text218" - y="233.49387" - x="161.4655" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;opacity:0.92000002;fill:#f9f9f9;fill-opacity:1;stroke:none;stroke-width:0.26458332" - xml:space="preserve"><tspan - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#f8ad32;fill-opacity:1;stroke-width:0.26458332" - y="233.49387" - x="161.4655" - id="tspan216" - sodipodi:role="line">association à but non lucratif</tspan><tspan - id="tspan1192" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#f9f9f9;stroke-width:0.26458332" - y="240.46191" - x="161.4655" - sodipodi:role="line" /></text> - </g> - <text - id="text492" - y="275.9653" - x="148.20575" - style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:7.76111126px;line-height:1.25;font-family:'Tlwg Typist';-inkscape-font-specification:'Tlwg Typist, Medium';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;stroke-width:0.19669913" - xml:space="preserve"><tspan - style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:9.87777805px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;stroke-width:0.19669913" - y="275.9653" - x="148.20575" - sodipodi:role="line" - id="tspan505">Enfants de moins de 12 ans bienvenus si accompagnés</tspan><tspan - style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:9.87777805px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;stroke-width:0.19669913" - y="288.31253" - x="148.20575" - sodipodi:role="line" - id="tspan1334">Événement organisé au sein des locaux de l'Université Paris-Sud</tspan></text> - <rect - style="opacity:1;fill:#19516b;fill-opacity:1;stroke:#19516b;stroke-width:2;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" - id="rect651" - width="328.32587" - height="247.14389" - x="-15.662933" - y="-41.879864" /> - <g - id="g1405" - transform="translate(1.1417296,12.011724)"> - <g - transform="translate(0,-7.45186)" - id="g1394"> - <g - id="g11708" - transform="translate(0.01548165,26.992951)"> - <text - id="text1188" - y="-31.804394" - x="148.79428" - style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:12.69999981px;line-height:1.25;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - xml:space="preserve"><tspan - sodipodi:role="line" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro';fill:#ffffff;fill-opacity:1" - x="148.79428" - y="-31.804394" - id="tspan1330">Vous avez entre 12 et 24 ans ?</tspan><tspan - sodipodi:role="line" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro';fill:#ffffff;fill-opacity:1" - x="148.79428" - y="-15.929394" - id="tspan11484">Vous souhaitez apprendre à coder ?</tspan></text> - </g> - <text - xml:space="preserve" - style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:12.69999981px;line-height:1.25;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="148.7426" - y="33.817719" - id="text11498"><tspan - id="tspan11496" - y="33.817719" - x="148.7426" - style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Light';fill:#ffffff;fill-opacity:1" - sodipodi:role="line">Participez à notre atelier et</tspan><tspan - y="49.692719" - x="148.7426" - style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Light';fill:#ffffff;fill-opacity:1" - sodipodi:role="line" - id="tspan11502">concevez votre premier jeu vidéo !</tspan></text> - </g> - <g - id="g2694" - transform="translate(0,-0.22873418)"> - <g - id="g2421" - transform="translate(-1.1417296,-12.011724)"> - <g - id="g2285" - transform="translate(0,-2.1687649)"> - <text - transform="scale(0.97725173,1.0232778)" - id="text1142" - y="152.85368" - x="202.70715" - style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10.34273911px;line-height:1.25;font-family:Laksaman;-inkscape-font-specification:'Laksaman, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:0.2585645" - xml:space="preserve"><tspan - id="tspan226" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#f8ad32;fill-opacity:1;stroke-width:0.2585645" - y="152.85368" - x="202.70715" - sodipodi:role="line">Envie d'y participer ?</tspan><tspan - style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:14.11111069px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Semi-Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.2585645" - y="169.96341" - x="202.70715" - sodipodi:role="line" - id="tspan246">zestedecode@gmail.com</tspan><tspan - style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:12.69999981px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.2585645" - y="186.36757" - x="202.70715" - sodipodi:role="line" - id="tspan250">Réservation obligatoire</tspan></text> - <text - id="text11680" - y="96.214241" - x="197.56992" - style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:12.69999981px;line-height:1.25;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#19516b;fill-opacity:1;stroke:none;stroke-width:0.26458332" - xml:space="preserve"><tspan - id="tspan11678" - sodipodi:role="line" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro';fill:#f8ad32;fill-opacity:1" - x="197.56992" - y="96.214241">Événement <tspan - id="tspan228" - style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12.69999981px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Semi-Bold';fill:#f8ad32;fill-opacity:1">gratuit</tspan></tspan><tspan - sodipodi:role="line" - style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:14.11111069px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Semi-Bold';fill:#ffffff;fill-opacity:1" - x="197.56992" - y="113.32396" - id="tspan11684">mercredi 24 avril 2019</tspan><tspan - sodipodi:role="line" - style="font-size:12.69999981px;fill:#ffffff;fill-opacity:1" - x="197.56992" - y="129.72813" - id="tspan11686">14h30 – 18h30, à <tspan - style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12.69999981px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Semi-Bold';fill:#ffffff;fill-opacity:1" - id="tspan242">Orsay</tspan></tspan></text> - </g> - <g - id="g7496" - transform="matrix(1.0303332,0,0,1.0303332,1.8316051,111.89341)"> - <ellipse - id="ellipse11223" - ry="2.411639" - rx="21.683123" - cy="76.550117" - cx="52.230213" - class="st0" - style="opacity:0.2;fill:#6c8b8e;stroke-width:0.10814525;enable-background:new" /> - <g - transform="matrix(0.10814525,0,0,0.10814525,-4.5676735,-30.740786)" - id="g11456"> - <g - id="Calque_1_1_"> - <g - id="g11453"> - <path - id="path11225" - d="M 755.1,744.3 C 764.6,874 665.3,976.4 535.6,985.9 405.9,995.4 293,898 283.5,768.3 c -5.4,-73 14.5,-146 63.5,-192.9 38.1,-36.5 97.4,-55 154.1,-59.2 46.2,-3.4 105.2,5.6 143.5,27.8 69.3,39.9 104.4,116.9 110.5,200.3 z" - class="st1" - inkscape:connector-curvature="0" - style="fill:#ff8112" /> - <linearGradient - gradientTransform="matrix(1,0,0,-1,0,1023.28)" - y2="173.12" - x2="519.1709" - y1="-30.700001" - x1="519.1709" - gradientUnits="userSpaceOnUse" - id="linearGradient11470"> - <stop - id="stop11227" - style="stop-color:#4B005C" - offset="0" /> - <stop - id="stop11229" - style="stop-color:#4B005C;stop-opacity:0" - offset="1" /> - </linearGradient> - <path - id="path11232" - d="M 755.1,744.3 C 764.6,874 665.3,976.4 535.6,985.9 405.9,995.4 293,898 283.5,768.3 c -5.4,-73 14.5,-146 63.5,-192.9 38.1,-36.5 97.4,-55 154.1,-59.2 46.2,-3.4 105.2,5.6 143.5,27.8 69.3,39.9 104.4,116.9 110.5,200.3 z" - class="st2" - inkscape:connector-curvature="0" - style="opacity:0.5;fill:url(#SVGID_1_);enable-background:new" /> - <radialGradient - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1,0,0,-0.93,-0.62,1015.6104)" - r="249.23" - cy="306.3775" - cx="524.46997" - id="SVGID_2_-6"> - <stop - id="stop11234" - style="stop-color:#FFFFFF" - offset="0" /> - <stop - id="stop11236" - style="stop-color:#FFFFFF;stop-opacity:0" - offset="1" /> - </radialGradient> - <path - style="opacity:0.5;fill:url(#SVGID_2_-6);enable-background:new" - id="path11239" - d="M 755.1,744.3 C 764.6,874 665.3,976.4 535.6,985.9 405.9,995.4 293,898 283.5,768.3 c -5.4,-73 14.5,-146 63.5,-192.9 38.1,-36.5 97.4,-55 154.1,-59.2 46.2,-3.4 105.2,5.6 143.5,27.8 69.3,39.9 104.4,116.9 110.5,200.3 z" - class="st3" - inkscape:connector-curvature="0" /> - <path - id="path11241" - d="M 724.2,295.6 C 681,418.7 559.4,488.1 559.4,488.1 c 0,0 -51.7,-130.1 -8.5,-253.2 C 585.5,136 698.8,26.1 698.8,26.1 L 727,9.9 c 0,0 40.3,162.7 -2.8,285.7 z" - class="st4" - inkscape:connector-curvature="0" - style="fill:#4b632f" /> - <g - id="g11269"> - <polygon - id="polygon11243" - points="574.5,455.2 573.5,453.3 658.9,404.4 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11245" - points="585.8,422.3 584.7,420.5 693.9,359.8 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11247" - points="597,389.5 596,387.6 709.8,324.5 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11249" - points="608.2,356.6 607.2,354.7 723.3,288 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11251" - points="619.5,323.7 618.4,321.9 734.2,253 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11253" - points="630.7,290.9 629.7,289 734.6,229.7 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11255" - points="641.9,258 640.9,256.2 734.6,206.4 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11257" - points="653.1,225.2 652.1,223.3 743.4,174.2 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11259" - points="664.4,192.3 663.3,190.5 744.1,149.8 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11261" - points="675.6,159.5 674.6,157.6 739.2,122.6 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11263" - points="686.8,126.6 685.8,124.8 738.1,97.1 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11265" - points="698,93.7 697,91.9 726.6,76.3 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11267" - points="709.3,60.9 708.2,59 732.8,46.5 " - class="st5" - style="fill:#537022" /> - </g> - <radialGradient - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1,0,0,-0.96,7.66,1090.5288)" - r="39.66" - cy="555.14673" - cx="530.78998" - id="SVGID_3_-7"> - <stop - id="stop11271" - style="stop-color:#000000" - offset="0" /> - <stop - id="stop11273" - style="stop-color:#000000;stop-opacity:0" - offset="1" /> - </radialGradient> - <path - style="opacity:0.5;fill:url(#SVGID_3_-7);enable-background:new" - id="path11276" - d="m 567.5,529.3 c 11.1,4.1 18.5,10.8 19.1,19 1.1,14.7 -20.3,28.2 -47.8,30.2 -27.5,2 -50.6,-8.2 -51.7,-22.9 -0.5,-6.7 3.7,-13.1 10.9,-18.3" - class="st6" - inkscape:connector-curvature="0" /> - <path - id="path11278" - d="m 552,539.7 c 1.8,0.1 3.6,0.5 5.3,1.2 1.9,0.8 3.5,2 4.8,3.6 0.7,0.9 1.2,2 1.6,3.1 l 0.2,0.9 v 0.1 c 0,-0.1 0,0.2 0,0.2 v 0.1 0.2 l 0.1,0.3 c 0,0.3 0.1,0.7 0.1,1 0,0.4 0,0.6 0,1 -0.2,2.4 -1.1,4.6 -2.5,6.5 -2.5,3.3 -5.8,5.9 -9.5,7.5 -3.5,1.6 -7.2,2.6 -11,3 -0.9,0.1 -2,0.2 -2.8,0.2 -1,0 -2,0 -2.9,0 -1.9,-0.1 -3.8,-0.3 -5.7,-0.7 -3.9,-0.7 -7.6,-2.3 -10.8,-4.5 -1.8,-1.3 -3.3,-2.9 -4.4,-4.7 -1.2,-2 -1.8,-4.3 -1.5,-6.7 0.3,-2.1 1.3,-4.1 2.8,-5.6 1.3,-1.3 2.9,-2.2 4.7,-2.8 -1,1.4 -1.7,2.8 -2.3,4.4 -0.4,1.2 -0.5,2.6 -0.1,3.8 0.7,2.1 2.6,3.3 5,4.4 4.9,1.9 11,2.2 16.7,1.7 2.9,-0.3 5.7,-0.9 8.4,-1.8 2.5,-0.7 4.9,-2 7,-3.6 1.7,-1.5 2.8,-3 2.3,-5.4 -0.4,-1.4 -1,-2.6 -2,-3.7 -1.1,-1.5 -2.2,-2.7 -3.5,-3.7 z" - class="st5" - inkscape:connector-curvature="0" - style="fill:#537022" /> - <path - id="path11280" - d="m 543.6,543 0.4,0.1 c 1.1,0.3 2.1,0.8 2.9,1.5 0.7,0.6 1.3,1.4 1.5,2.4 0.2,1.2 0,2.4 -0.6,3.4 -0.7,1.1 -1.5,1.9 -2.6,2.6 -2.2,1.4 -4.7,2.2 -7.2,2.5 -0.7,0.1 -1.3,0.1 -1.9,0.1 -0.6,0 -1.3,0 -2,-0.1 -1.3,-0.1 -2.5,-0.4 -3.7,-0.8 -1.1,-0.4 -2.2,-0.9 -3.2,-1.7 -0.9,-0.7 -1.6,-1.6 -2,-2.7 -0.3,-0.9 -0.2,-1.9 0.2,-2.8 0.3,-0.6 0.7,-1.2 1.2,-1.7 0.3,-0.3 0.6,-0.6 1,-0.8 l 0.4,-0.2 c -0.4,0.4 -0.8,0.8 -1.1,1.3 -0.4,0.5 -0.6,1.1 -0.8,1.7 -0.2,0.7 -0.1,1.5 0.2,2.1 0.7,1.4 2.5,2.5 4.6,3 1.1,0.3 2.2,0.5 3.3,0.5 0.6,0 1.1,0 1.7,0 0.6,0 1.2,-0.1 1.8,-0.1 2.3,-0.2 4.5,-0.9 6.5,-1.9 0.9,-0.5 1.6,-1.1 2.3,-1.9 0.5,-0.7 0.8,-1.5 0.7,-2.3 -0.3,-1.4 -1.1,-2.6 -2.2,-3.3 -0.5,-0.3 -1,-0.6 -1.4,-0.9 z" - class="st7" - inkscape:connector-curvature="0" - style="fill:#cc6100" /> - <path - id="path11282" - d="m 542.2,496.5 c 2.5,1 4.2,2.5 4.3,4.5 0.3,3.4 -4.5,6.6 -10.7,7 -6.2,0.4 -11.3,-2 -11.6,-5.4 -0.1,-1.6 0.8,-3 2.4,-4.3" - class="st5" - inkscape:connector-curvature="0" - style="fill:#537022" /> - <path - id="path11284" - d="m 545.3,508.1 c 2.5,1 4.2,2.5 4.3,4.5 0.3,3.4 -4.5,6.6 -10.7,7 -6.2,0.4 -11.3,-2 -11.6,-5.4 -0.1,-1.6 0.8,-3.1 2.4,-4.3" - class="st8" - inkscape:connector-curvature="0" - style="fill:#b8bf7b" /> - <path - id="path11286" - d="m 666.3,807.2 c 0,1.5 -0.1,3 -0.3,4.5 -3.3,49.3 -33.6,91.8 -77.2,114.4 -45.9,23.6 -100.5,23.4 -146.3,-0.7 -42.8,-22.8 -72.5,-64.9 -75.8,-113.7 -0.2,-1.5 -0.3,-3 -0.3,-4.5 0,-0.5 0,-1 0,-1.5 v -0.3 c 1,-18 16.7,-32.2 36,-32.2 7,0 13.9,1.9 19.9,5.6 1.5,0.9 2.8,1.9 4.1,3 54,37.5 125.6,37.5 179.6,0 1.3,-1.1 2.7,-2.1 4.1,-3 6,-3.7 12.9,-5.7 19.9,-5.6 19.3,0 35,14.3 36,32.2 v 0.3 c 0.3,0.5 0.3,1 0.3,1.5 z" - class="st9" - inkscape:connector-curvature="0" - style="fill:#ffc697" /> - <path - id="path11288" - d="m 667,801.4 c 0,1.5 -0.1,3 -0.3,4.5 -3.3,49.3 -33.6,91.8 -77.2,114.4 -45.9,23.6 -100.5,23.4 -146.3,-0.7 -42.8,-22.8 -72.5,-64.9 -75.8,-113.7 -0.2,-1.5 -0.3,-3 -0.3,-4.5 0,-0.5 0,-1 0,-1.5 v -0.3 c 1,-18 16.7,-32.2 36,-32.2 7,0 13.9,1.9 19.9,5.6 1.5,0.9 2.8,1.9 4.1,3 54,37.5 125.6,37.5 179.6,0 1.3,-1.1 2.7,-2.1 4.1,-3 6,-3.7 13,-5.7 20.1,-5.7 19.3,0 35,14.3 36,32.2 v 0.3 c 0.1,0.6 0.1,1.1 0.1,1.6 z" - class="st10" - inkscape:connector-curvature="0" - style="fill:#1e0c00" /> - <path - id="path11290" - d="m 666.3,802.9 c 0,1.5 -0.1,3 -0.3,4.5 -3.3,49.3 -33.6,91.8 -77.2,114.4 -45.9,23.6 -100.5,23.4 -146.3,-0.7 -42.8,-22.8 -72.5,-64.9 -75.8,-113.7 -0.2,-1.5 -0.3,-3 -0.3,-4.5 0,-0.5 0,-1 0,-1.5 v -0.3 c 1,-18 16.7,-32.2 36,-32.2 7,0 13.9,1.9 19.9,5.6 1.5,0.9 2.8,1.9 4.1,3 54,37.5 125.6,37.5 179.6,0 1.3,-1.1 2.7,-2.1 4.1,-3 6,-3.7 12.9,-5.7 20,-5.6 19.3,0 35,14.3 36,32.2 v 0.3 c 0.2,0.5 0.2,1 0.2,1.5 z" - class="st11" - inkscape:connector-curvature="0" - style="fill:#381a01" /> - <polygon - id="polygon11292" - points="514.3,528.2 521.4,543.9 490.1,552.7 520.1,554.1 525.2,569.9 541.2,555.6 569.3,559.4 553.3,547.1 568.6,532.8 536,541 " - class="st12" - style="fill:#e1793b" /> - <path - id="path11294" - d="m 540,488.7 c -0.2,-2.5 -4.7,-4.2 -10,-3.6 -5.3,0.6 -9.3,3 -9.1,5.5 0,0 8,11.1 8,28.5 0,10.1 -0.8,20.2 -2.5,30.2 0.2,2.5 4.7,4.2 10,3.7 5.3,-0.5 9.3,-3 9.1,-5.5 0,0 2.5,-17.7 2.5,-30.2 0,-12.7 -8,-28.6 -8,-28.6 z" - class="st5" - inkscape:connector-curvature="0" - style="fill:#537022" /> - <circle - id="circle11296" - r="28.6" - cy="718.40002" - cx="399" - class="st9" - style="fill:#ffc697" /> - <circle - id="circle11298" - r="28.6" - cy="717.29999" - cx="633.40002" - class="st9" - style="fill:#ffc697" /> - <circle - id="circle11300" - r="28.6" - cy="716.29999" - cx="399" - class="st11" - style="fill:#381a01" /> - <circle - id="circle11302" - r="25.5" - cy="716.29999" - cx="399" - class="st13" - style="fill:#5b2700" /> - <circle - id="ellipse11304" - cy="696.70001" - cx="408.29999" - class="st14" - transform="matrix(0.8355,-0.5495,0.5495,0.8355,-315.6297,338.915)" - r="6" - style="fill:#ffffff" /> - <circle - id="ellipse11306" - cy="731.29999" - cx="393.79999" - class="st14" - transform="matrix(0.8366,-0.5478,0.5478,0.8366,-336.2332,335.1967)" - r="8" - style="fill:#ffffff" /> - <circle - id="circle11308" - r="28.6" - cy="715.20001" - cx="632.40002" - class="st11" - style="fill:#381a01" /> - <circle - id="circle11310" - r="25.5" - cy="715.20001" - cx="632.40002" - class="st13" - style="fill:#5b2700" /> - <circle - id="circle11312" - r="6" - cy="694.90002" - cx="642.5" - class="st14" - style="fill:#ffffff" /> - <circle - id="circle11314" - r="9.5" - cy="725.79999" - cx="625.70001" - class="st14" - style="fill:#ffffff" /> - <linearGradient - gradientTransform="rotate(180,2141.085,511.64)" - y2="265.5123" - x2="3960.395" - y1="231.6123" - x1="3975.5151" - gradientUnits="userSpaceOnUse" - id="SVGID_4_-5"> - <stop - id="stop11316" - style="stop-color:#ED4D0F;stop-opacity:0" - offset="0" /> - <stop - id="stop11318" - style="stop-color:#ED4D0F;stop-opacity:0.96" - offset="1" /> - </linearGradient> - <circle - style="fill:url(#SVGID_4_-5)" - id="circle11321" - r="20.200001" - cy="772.20001" - cx="315.39999" - class="st15" /> - <linearGradient - gradientTransform="matrix(0,1,1,0,3736.55,477.67)" - y2="-3017.6687" - x2="286.3027" - y1="-3051.5588" - x1="301.4227" - gradientUnits="userSpaceOnUse" - id="SVGID_5_-3"> - <stop - id="stop11323" - style="stop-color:#ED4D0F;stop-opacity:0" - offset="0" /> - <stop - id="stop11325" - style="stop-color:#ED4D0F;stop-opacity:0.96" - offset="1" /> - </linearGradient> - <circle - style="fill:url(#SVGID_5_-3)" - id="circle11328" - r="20.200001" - cy="770.40002" - cx="704.5" - class="st16" /> - <polygon - id="polygon11330" - points="536.1,534.2 727,9.9 546.2,537.7 " - class="st5" - style="fill:#537022" /> - <g - id="g11336"> - <path - id="path11332" - d="m 515.5,501.1 c 0,0 -3.5,-1 -9.7,-3.2 -26.3,-9.3 -100.6,-39.5 -154.2,-101.8 -7.6,-8.9 -14.7,-18.2 -21.1,-28 -37.4,-57.5 -56.1,-147.8 -63.5,-192.7 -2.8,-16.8 -4,-27.3 -4,-27.3 l 4,-29 c 0,0 138,60.6 201.9,158.9 63.9,98.3 46.6,223.1 46.6,223.1 z" - class="st4" - inkscape:connector-curvature="0" - style="fill:#4b632f" /> - <polygon - id="polygon11334" - points="536,542.3 267.1,119.2 544.8,536.5 " - class="st5" - style="fill:#537022" /> - </g> - <path - id="path11338" - d="m 603.6,622.2 0.9,-0.2 c 0.6,-0.1 1.5,-0.3 2.6,-0.5 1.1,-0.2 2.5,-0.3 4.1,-0.5 1.6,-0.2 3.4,-0.3 5.3,-0.4 1.9,-0.1 4.1,-0.2 6.3,-0.1 2.2,0.1 4.6,0.2 7,0.3 2.4,0.1 4.9,0.6 7.4,1 2.5,0.5 5.1,1 7.5,1.8 l 3.7,1.1 c 1.2,0.4 2.4,0.9 3.6,1.4 1.2,0.5 2.4,0.9 3.5,1.4 l 3.3,1.7 c 1.1,0.6 2.2,1 3.1,1.7 l 2.8,1.9 2.7,1.8 2.3,1.9 c 1.5,1.3 2.9,2.3 4,3.4 l 2.8,3 2.4,2.6 -2.5,-2.5 -2.8,-2.9 c -1.1,-1.1 -2.6,-2.1 -4.1,-3.3 l -2.3,-1.9 -2.7,-1.7 -2.9,-1.8 c -1,-0.6 -2.1,-1 -3.2,-1.6 l -3.3,-1.6 c -1.1,-0.5 -2.3,-0.9 -3.5,-1.3 -1.2,-0.4 -2.4,-0.9 -3.6,-1.3 l -3.7,-1 c -2.5,-0.6 -5,-1.2 -7.5,-1.5 -2.5,-0.3 -5,-0.6 -7.3,-0.8 -2.3,-0.2 -4.7,-0.3 -6.9,-0.2 -2.2,0.1 -4.3,0.1 -6.2,0.3 -1.9,0.2 -3.7,0.4 -5.2,0.5 -1.5,0.1 -2.9,0.4 -4,0.6 -1.1,0.2 -1.9,0.4 -2.5,0.5 l -0.9,0.2 z" - class="st11" - inkscape:connector-curvature="0" - style="fill:#381a01" /> - <path - id="path11340" - d="m 438.2,628.5 -0.9,-0.3 c -0.6,-0.2 -1.4,-0.4 -2.5,-0.6 -1.1,-0.2 -2.4,-0.5 -3.9,-0.8 -1.5,-0.3 -3.3,-0.6 -5.2,-0.8 -1.9,-0.2 -4,-0.5 -6.1,-0.6 -2.1,-0.1 -4.5,-0.2 -6.9,-0.2 -2.4,0 -4.9,0.2 -7.4,0.4 -2.5,0.3 -5,0.6 -7.5,1.1 l -3.8,0.8 c -1.2,0.3 -2.4,0.7 -3.6,1.1 -1.2,0.4 -2.4,0.7 -3.6,1.1 l -3.4,1.4 c -1.1,0.5 -2.2,0.9 -3.2,1.4 l -3,1.6 -2.8,1.6 -2.5,1.7 c -1.5,1.1 -3,2.1 -4.3,3.1 l -3,2.7 -2.6,2.4 2.6,-2.5 2.9,-2.8 c 1.2,-1 2.6,-2 4.2,-3.2 l 2.4,-1.8 2.8,-1.6 3,-1.7 c 1,-0.6 2.1,-1 3.2,-1.5 l 3.4,-1.5 c 1.1,-0.5 2.4,-0.8 3.6,-1.2 1.2,-0.4 2.4,-0.8 3.7,-1.2 l 3.8,-0.9 c 2.5,-0.6 5.1,-1 7.6,-1.3 2.5,-0.3 5,-0.5 7.5,-0.6 2.5,-0.1 4.8,-0.1 7,0 2.2,0.1 4.3,0.2 6.3,0.4 2,0.2 3.7,0.5 5.3,0.7 1.6,0.2 2.9,0.5 4,0.8 1.1,0.3 2,0.4 2.6,0.6 l 0.9,0.2 z" - class="st11" - inkscape:connector-curvature="0" - style="fill:#381a01" /> - <path - id="path11342" - d="m 535,485.5 c 1.5,-0.1 2.8,0.9 3.1,2.3 0.2,1.9 -3.1,3.9 -7.5,4.5 -4.4,0.6 -8.1,-0.6 -8.3,-2.5 -0.1,-0.9 0.5,-1.8 1.7,-2.5 3.5,-1.3 7.2,-1.9 11,-1.8 z" - class="st17" - inkscape:connector-curvature="0" - style="fill:#d1cd7d" /> - <path - id="path11344" - d="m 588.8,921.9 c -45.9,23.6 -100.5,23.4 -146.3,-0.7 0,-40.5 74.2,-16.1 74.2,-16.1 0,0 72.1,-22.3 72.1,16.8 z" - class="st18" - inkscape:connector-curvature="0" - style="fill:#72390e" /> - <radialGradient - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1,0,0,-1,0,1023.28)" - r="53.759998" - cy="136.49001" - cx="511.47" - id="SVGID_6_-5"> - <stop - id="stop11346" - style="stop-color:#FFFFFF" - offset="0" /> - <stop - id="stop11348" - style="stop-color:#FFFFFF;stop-opacity:0" - offset="1" /> - </radialGradient> - <path - style="opacity:0.62999998;fill:url(#SVGID_6_-5);enable-background:new" - id="path11351" - d="m 588.8,921.9 c -45.9,23.6 -100.5,23.4 -146.3,-0.7 0,-40.5 74.2,-16.1 74.2,-16.1 0,0 72.1,-22.3 72.1,16.8 z" - class="st19" - inkscape:connector-curvature="0" /> - <g - id="g11379"> - <polygon - id="polygon11353" - points="563.4,463.4 565.3,462.6 535.3,379.7 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11355" - points="574.9,430.6 576.9,429.8 534.8,321.6 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11357" - points="586.5,397.9 588.5,397.1 538.3,277 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11359" - points="598.1,365.2 600,364.4 550.3,240.1 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11361" - points="609.6,332.4 611.6,331.6 563.5,205.8 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11363" - points="621.2,299.7 623.2,298.9 577.7,187.3 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11365" - points="632.8,267 634.7,266.2 592.1,169 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11367" - points="644.3,234.2 646.3,233.4 605.2,138.2 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11369" - points="655.9,201.5 657.9,200.7 619.7,118.7 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11371" - points="667.5,168.7 669.4,167.9 640.5,100.4 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11373" - points="679,136 681,135.2 657.1,81.1 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11375" - points="690.6,103.3 692.6,102.5 679,71.9 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11377" - points="702.2,70.5 704.2,69.7 692.7,44.7 " - class="st5" - style="fill:#537022" /> - </g> - <g - id="g11437"> - <g - id="g11407"> - <polygon - id="polygon11381" - points="499.7,484.5 500.2,482.6 414.9,452.1 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11383" - points="482,456.8 482.6,454.9 374.6,419.2 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11385" - points="464.4,429.1 464.9,427.2 350.2,391.7 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11387" - points="446.8,401.4 447.3,399.5 327.9,364.6 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11389" - points="429.1,373.8 429.7,371.8 312.5,334.4 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11391" - points="411.5,346.1 412,344.2 303.3,313.3 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11393" - points="393.9,318.4 394.4,316.5 297.3,291.6 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11395" - points="376.2,290.7 376.8,288.8 290.5,264 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11397" - points="358.6,263 359.1,261.1 284.4,241.7 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11399" - points="341,235.4 341.5,233.4 274.4,215.6 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11401" - points="323.4,207.7 323.9,205.7 269.7,192 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11403" - points="305.7,180 306.3,178.1 275.6,170.4 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11405" - points="288.4,152.2 287,150 264.2,144 " - class="st5" - style="fill:#537022" /> - </g> - <g - id="g11435"> - <polygon - id="polygon11409" - points="511.8,489.5 509.8,489.2 513.6,412.9 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11411" - points="493.9,462.1 491.9,461.7 505.6,364.1 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11413" - points="475.9,434.6 474,434.2 491.8,325.9 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11415" - points="458,407.1 456,406.8 473.8,288.2 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11417" - points="440.1,379.6 438.1,379.3 456.8,263.3 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11419" - points="422.2,352.1 420.2,351.8 437.1,239.1 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11421" - points="404.3,324.6 402.3,324.3 419.8,225.5 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11423" - points="386.1,299.2 384.4,296.8 399.5,204.5 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11425" - points="368.1,271.8 366.4,269.3 382,190.7 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11427" - points="350.1,245.2 348.5,241.8 360.1,173.3 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11429" - points="332.1,217.4 330.4,215.1 340.5,159.2 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11431" - points="314.3,191 312.4,188.1 318.3,155.7 " - class="st5" - style="fill:#537022" /> - <polygon - id="polygon11433" - points="296.2,163.7 294.5,161.9 299.3,137.3 " - class="st5" - style="fill:#537022" /> - </g> - </g> - <linearGradient - gradientTransform="matrix(1,0,0,-1,0,1023.28)" - y2="733.00769" - x2="407.11292" - y1="638.62769" - x1="304.25299" - gradientUnits="userSpaceOnUse" - id="linearGradient11580"> - <stop - id="stop11439" - style="stop-color:#FFFFFF" - offset="0" /> - <stop - id="stop11441" - style="stop-color:#FFFFFF;stop-opacity:0" - offset="1" /> - </linearGradient> - <path - id="path11444" - d="m 505.7,497.9 c -26.3,-9.3 -100.6,-39.5 -154.2,-101.8 -7.6,-8.9 -14.7,-18.2 -21.1,-28 -37.4,-57.5 -56.1,-147.8 -63.5,-192.7 -0.7,-5.6 -1.3,-11 -1.7,-16.1 C 263,135 269.3,131 267,119.1 l 240.4,369.5 c 0.2,2.9 2.9,10.4 -1.7,9.3 z" - class="st20" - inkscape:connector-curvature="0" - style="opacity:0.2;fill:url(#SVGID_7_);enable-background:new" /> - <linearGradient - gradientTransform="matrix(1,0,0,-1,0,1023.28)" - y2="737.7113" - x2="712.24542" - y1="799.24127" - x1="596.01538" - gradientUnits="userSpaceOnUse" - id="linearGradient11585"> - <stop - id="stop11446" - style="stop-color:#FFFFFF" - offset="0" /> - <stop - id="stop11448" - style="stop-color:#FFFFFF;stop-opacity:0" - offset="1" /> - </linearGradient> - <path - id="path11451" - d="m 557.8,483.9 c 1,2.8 1.6,4.3 1.6,4.3 0,0 121.6,-69.5 164.8,-192.6 C 759.8,194.2 735.6,51.9 727,9.9 Z" - class="st21" - inkscape:connector-curvature="0" - style="opacity:0.2;fill:url(#SVGID_8_);enable-background:new" /> - </g> - </g> - </g> - </g> - </g> - <path - style="fill:none;stroke:#f8ad32;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 101.56718,100.91178 C 101.75253,95.117797 101.45952,89.267705 100.0596,83.642331 98.659689,78.016957 96.108264,72.604637 92.173321,68.347781 86.375033,62.075141 77.770775,58.685217 69.228904,58.634364 65.035922,58.609402 60.854159,59.335962 56.666137,59.130542 54.572126,59.027833 52.474315,58.687148 50.52105,57.925449 48.567784,57.16375 46.759754,55.965066 45.449141,54.32869 43.51851,51.918185 42.790224,48.704825 42.937914,45.620015 c 0.14769,-3.08481 1.104055,-6.074652 2.245531,-8.944303 1.141476,-2.869651 2.477165,-5.665702 3.439671,-8.600229 0.962506,-2.934527 1.546493,-6.05623 1.124376,-9.11559 C 49.301936,15.730653 47.76414,12.751725 45.984005,10.020859 44.20387,7.2899938 42.157644,4.7321423 40.51902,1.9140897 38.078163,-2.283618 36.578559,-7.0449335 36.325187,-11.894092 c -0.253372,-4.849158 0.755642,-9.778111 3.028473,-14.069121 2.272831,-4.291011 5.819757,-7.921157 10.127781,-10.161572 4.308025,-2.240415 9.366551,-3.058175 14.1355,-2.144029 3.954649,0.758055 7.58633,2.639342 11.251239,4.307376 3.66491,1.668033 7.547498,3.166128 11.573089,3.073868 2.619932,-0.06004 5.188564,-0.798093 7.592456,-1.841619 2.403893,-1.043525 4.662134,-2.389956 6.915125,-3.728487 2.253,-1.33853 4.51651,-2.67725 6.92771,-3.703787 2.4112,-1.026536 4.98925,-1.737698 7.60977,-1.760763 2.56385,-0.02257 5.09986,0.614183 7.48225,1.561863 2.38238,0.94768 4.62848,2.202781 6.85868,3.467722 4.46039,2.529883 9.11864,5.184 14.24235,5.391541 2.70621,0.109618 5.40535,-0.481862 7.94815,-1.414481 2.54279,-0.932618 4.94705,-2.201733 7.32774,-3.493219 4.76137,-2.582971 9.68778,-5.338581 15.09825,-5.601748 5.3913,-0.262234 10.55997,1.990895 15.4072,4.365622 4.84722,2.374728 9.76585,4.966192 15.14082,5.460813 5.13306,0.472359 10.22665,-1.014685 15.13383,-2.592969 4.90717,-1.578284 9.89014,-3.283393 15.04485,-3.264426 7.56476,0.02783 14.97971,4.05071 19.2133,10.319935 4.23358,6.269224 5.20453,14.595194 2.62482,21.7065614 -1.40324,3.8682499 -3.74931,7.3087331 -5.74158,10.9091909 -1.99227,3.6004579 -3.67685,7.5515817 -3.55281,11.6646157 0.0796,2.639957 0.90599,5.209266 2.00707,7.609958 1.10109,2.400692 2.47774,4.662846 3.73795,6.983965 1.26021,2.321119 2.41421,4.728496 3.02216,7.298731 0.60795,2.570236 0.64185,5.332832 -0.30184,7.799646 -0.62484,1.63335 -1.66422,3.096771 -2.94891,4.283292 -1.28469,1.186521 -2.81072,2.099871 -4.43598,2.745458 -3.25053,1.291174 -6.84157,1.505172 -10.32778,1.223412 -6.97242,-0.563519 -13.84286,-3.037268 -20.79761,-2.286553 -5.4881,0.5924 -10.53918,3.146584 -15.51521,5.535995 -4.97604,2.389411 -10.20054,4.698588 -15.72035,4.741507 -5.61145,0.04363 -10.94141,-2.255573 -16.09701,-4.471441 -5.1556,-2.215868 -10.54159,-4.430688 -16.14864,-4.204356 -5.7166,0.230753 -10.98734,2.968134 -16.09168,5.552401 -5.10434,2.584267 -10.51974,5.134458 -16.23785,4.944973 -1.71533,-0.05684 -3.41816,-0.36219 -5.13443,-0.360229 -0.85813,9.81e-4 -1.72034,0.07984 -2.5493,0.301695 -0.82896,0.221858 -1.62544,0.590321 -2.29053,1.132588 -0.80326,0.654926 -1.3949,1.549525 -1.76011,2.519463 -0.36521,0.969938 -0.51058,2.013838 -0.507,3.050248 0.007,2.07282 0.5954,4.092573 1.09065,6.105373 2.97903,12.107355 2.66161,25.008929 -0.90919,36.955139 -3.57081,11.94621 -10.385625,22.90566 -19.520296,31.39215 6.914866,-13.78654 10.795736,-29.08482 11.288886,-44.50043 z" - id="path1032" - inkscape:connector-curvature="0" - inkscape:path-effect="#path-effect1034" - inkscape:original-d="M 101.56718,100.91178 C 111.17865,98.848107 89.866365,77.508215 92.173321,68.347781 94.480277,59.187347 75.806317,64.389362 69.228904,58.634364 62.651491,52.879366 50.934824,55.397467 45.449141,54.32869 39.963458,53.259914 48.681154,30.260986 49.747492,18.959893 50.813829,7.6587997 44.938095,8.3281057 40.51902,1.9140897 36.099945,-4.4999266 53.103504,-26.051394 63.616941,-38.268814 c 10.513437,-12.21742 19.800848,6.359737 22.824328,7.381244 3.02348,1.021507 19.836391,-8.273466 29.045061,-11.034656 6.39937,-1.832381 21.91833,28.792175 28.58328,10.421126 6.66495,-18.371049 20.77493,-8.371622 30.37414,-10.509448 9.59921,-2.137826 20.33932,7.688069 30.54802,9.826435 10.2087,2.138367 22.83946,-5.166485 30.17868,-5.857395 7.33922,-0.69091 23.53179,24.080535 21.83812,32.0264964 -1.69367,7.9459623 -15.32814,20.2728056 -9.29439,22.5738066 6.03375,2.301001 9.37984,20.223319 8.46534,29.6923 -0.9145,9.468981 -29.97714,6.881666 -38.51028,5.965609 -8.53314,-0.916057 -22.09293,7.070088 -31.23556,10.277502 -9.14263,3.207414 -21.42693,-5.468924 -32.24565,-8.675797 -10.81872,-3.206873 -22.42504,5.915469 -32.32953,10.497374 -9.9045,4.581905 -7.38365,1.226504 -9.97426,1.074054 -2.59061,-0.15245 0.49991,8.620391 -1.17646,11.675084 -1.67637,3.054693 -8.29101,50.640559 -20.429486,68.347289 -1.721736,-10.60525 1.677409,-42.43675 11.288886,-44.50043 z" - sodipodi:nodetypes="zzzzzzzzczzzzzzzzzzzzzcz" /> - </g> - </g> - </g> - <style - id="style11219" - type="text/css"> - .st0{opacity:0.2;fill:#6C8B8E;enable-background:new ;} - .st1{fill:#FF8112;} - .st2{opacity:0.5;fill:url(#SVGID_1_);enable-background:new ;} - .st3{opacity:0.5;fill:url(#SVGID_2_);enable-background:new ;} - .st4{fill:#4B632F;} - .st5{fill:#537022;} - .st6{opacity:0.5;fill:url(#SVGID_3_);enable-background:new ;} - .st7{fill:#CC6100;} - .st8{fill:#B8BF7B;} - .st9{fill:#FFC697;} - .st10{fill:#1E0C00;} - .st11{fill:#381A01;} - .st12{fill:#E1793B;} - .st13{fill:#5B2700;} - .st14{fill:#FFFFFF;} - .st15{fill:url(#SVGID_4_);} - .st16{fill:url(#SVGID_5_);} - .st17{fill:#D1CD7D;} - .st18{fill:#72390E;} - .st19{opacity:0.63;fill:url(#SVGID_6_);enable-background:new ;} - .st20{opacity:0.2;fill:url(#SVGID_7_);enable-background:new ;} - .st21{opacity:0.2;fill:url(#SVGID_8_);enable-background:new ;} -</style> -</svg> diff --git a/communication/affiche-blanche.png b/communication/affiche.png similarity index 78% rename from communication/affiche-blanche.png rename to communication/affiche.png index f7074af..83eab06 100644 Binary files a/communication/affiche-blanche.png and b/communication/affiche.png differ diff --git a/communication/affiche-blanche.svg b/communication/affiche.svg similarity index 99% rename from communication/affiche-blanche.svg rename to communication/affiche.svg index af50322..3f1c0eb 100644 --- a/communication/affiche-blanche.svg +++ b/communication/affiche.svg @@ -14,10 +14,10 @@ viewBox="0 0 297 420" version="1.1" id="svg8" - inkscape:export-filename="/home/situphen/zdsaffiche/affiche12-bleue.png" + inkscape:export-filename="/home/situphen/Code/zestedecode/communication/affiche.png" inkscape:export-xdpi="96" inkscape:export-ydpi="96" - sodipodi:docname="affiche_blanche.svg" + sodipodi:docname="affiche.svg" inkscape:version="0.92.3 (2405546, 2018-03-11)"> <defs id="defs2"> @@ -93,8 +93,8 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.50373354" - inkscape:cx="579.57568" - inkscape:cy="861.72062" + inkscape:cx="570.64238" + inkscape:cy="464.68531" inkscape:document-units="mm" inkscape:current-layer="layer1" showgrid="false" @@ -230,23 +230,22 @@ x="758" y="807.40155" /></flowRegion><flowPara id="flowPara9278" /></flowRoot> <g - id="g1829" - transform="translate(-1.8601663e-8,13.069787)"> + id="g291"> <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:Laksaman;-inkscape-font-specification:'Laksaman, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:0.26458332" - x="148.78398" - y="243.81335" + x="151.44003" + y="256.88315" id="text1146"><tspan sodipodi:role="line" - x="148.78398" - y="243.81335" + x="151.44003" + y="256.88315" style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:9.87777805px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" id="tspan441">zestedesavoir.com</tspan></text> <g id="g16" clip-path="url(#clipPath18)" - transform="matrix(0.26570594,0,0,-0.26570594,69.348679,422.57292)"> + transform="matrix(0.26570594,0,0,-0.26570594,69.348679,435.64271)"> <g id="g22" transform="translate(190.0557,765.4824)"> @@ -367,18 +366,18 @@ </g> <text id="text218" - y="233.49387" + y="246.56366" x="161.4655" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;opacity:0.92000002;fill:#f9f9f9;fill-opacity:1;stroke:none;stroke-width:0.26458332" xml:space="preserve"><tspan style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#f8ad32;fill-opacity:1;stroke-width:0.26458332" - y="233.49387" + y="246.56366" x="161.4655" id="tspan216" sodipodi:role="line">association à but non lucratif</tspan><tspan id="tspan1192" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#f9f9f9;stroke-width:0.26458332" - y="240.46191" + y="253.53171" x="161.4655" sodipodi:role="line" /></text> </g> diff --git a/communication/icone-cookie-avec-bandeau.png b/communication/icone-cookie-avec-bandeau.png new file mode 100644 index 0000000..2941b4d Binary files /dev/null and b/communication/icone-cookie-avec-bandeau.png differ diff --git a/communication/icone-cookie-avec-bandeau.svg b/communication/icone-cookie-avec-bandeau.svg new file mode 100644 index 0000000..8d00ac0 --- /dev/null +++ b/communication/icone-cookie-avec-bandeau.svg @@ -0,0 +1,201 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="297mm" + height="297mm" + viewBox="0 0 1122.5196 1122.5197" + id="svg2" + version="1.1" + inkscape:version="0.92.3 (2405546, 2018-03-11)" + sodipodi:docname="image-une.svg" + inkscape:export-filename="/home/situphen/Code/zestedecode/communication/image-une2.png" + inkscape:export-xdpi="34.208755" + inkscape:export-ydpi="34.208755"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.47" + inkscape:cx="861.43713" + inkscape:cy="621.83527" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="mm" + inkscape:window-width="1366" + inkscape:window-height="745" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:measure-start="110,290" + inkscape:measure-end="90,270" + inkscape:snap-center="true" + inkscape:snap-page="true" + inkscape:snap-grids="false" + inkscape:snap-to-guides="false"> + <inkscape:grid + type="xygrid" + id="grid3336" + spacingx="5" + spacingy="5.0000001" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Calque 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,70.157504)"> + <rect + style="opacity:1;fill:#19516b;fill-opacity:1;stroke:none;stroke-width:7.5606308;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" + id="rect32" + width="400.16678" + height="400" + x="0" + y="652.36218" + sodipodi:insensitive="true" /> + <rect + style="opacity:1;fill:#19516b;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" + id="rect914" + width="1122.5197" + height="1122.5197" + x="0" + y="-70.157539" + sodipodi:insensitive="true" /> + <rect + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#f8ad32;stroke-width:7.21149588;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" + id="rect651" + width="1222.9724" + height="862.63904" + x="-50.226364" + y="217.27185" /> + <g + id="g30" + transform="matrix(2.4716093,0,0,2.4716093,66.937983,-1463.4121)"> + <path + inkscape:connector-curvature="0" + d="m 52.52793,852.36214 c 0,0 73.73603,0 73.73603,-73.73603 v 0 c 0,0 73.73604,0 73.73604,-73.73603 m 0,10e-6 a 147.47207,147.47207 0 0 1 147.47207,147.47207 v 0 A 147.47207,147.47207 0 0 1 200,999.83424 147.47207,147.47207 0 0 1 52.52793,852.36216" + style="fill:#18526c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4148" /> + <path + inkscape:connector-curvature="0" + id="path4743" + d="m 138.37774,962.96624 v -36.86806 l -7.3736,7.3736" + style="fill:none;fill-rule:evenodd;stroke:#f8ad32;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <circle + r="18.434008" + cy="861.31586" + cx="246.34836" + id="path4745" + style="fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path4743-4" + d="m 179.45924,841.82843 v -36.86802 l -7.3736,7.3736" + style="fill:none;fill-rule:evenodd;stroke:#f8ad32;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path4743-0" + d="m 294.27678,940.84538 v -36.86801 l -7.3736,7.3736" + style="fill:none;fill-rule:evenodd;stroke:#f8ad32;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <circle + r="18.434008" + cy="941.8988" + cx="204.21347" + id="path4745-3" + style="fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <circle + r="18.434008" + cy="769.67242" + cx="251.61522" + id="path4745-32" + style="fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <circle + r="18.434008" + cy="871.84949" + cx="123.10384" + id="path4745-1" + style="fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path4743-0-3" + d="m 302.17707,845.51523 v -36.86802 l -7.3736,7.37361" + style="fill:none;fill-rule:evenodd;stroke:#f8ad32;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <circle + r="9.2170038" + cy="732.54114" + cx="153.91498" + id="path4820" + style="fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <circle + r="22.5" + cy="801.12616" + cx="75.027931" + id="path4822" + style="fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:12.20570183;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + id="g594" + transform="matrix(3.7795276,0,0,3.7795276,0.27241355,402.93215)"> + <flowRoot + xml:space="preserve" + id="flowRoot533" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + transform="matrix(0.26458333,0,0,0.26458333,-11.183953,-201.31666)"><flowRegion + id="flowRegion535"><rect + id="rect537" + width="920" + height="232" + x="104" + y="29.401575" /></flowRegion><flowPara + id="flowPara539" /></flowRoot> <g + id="g236"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:27.99185753px;line-height:1.25;font-family:'Tlwg Typist';-inkscape-font-specification:'Tlwg Typist, Medium';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#f9f9f9;fill-opacity:1;stroke:none;stroke-width:0.69979894" + x="148.45818" + y="-63.591805" + id="text11595-7"><tspan + sodipodi:role="line" + id="tspan11593-6" + x="148.45818" + y="-63.591805" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.75555611px;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#f8ad32;fill-opacity:1;stroke-width:0.69979894">la programmation sans pépins !</tspan></text> + <text + id="text571" + y="-88.762527" + x="149.38985" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;line-height:1.25;font-family:Laksaman;-inkscape-font-specification:'Laksaman, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + sodipodi:role="line" + id="tspan579" + style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:33.51388931px;font-family:Merriweather;-inkscape-font-specification:'Merriweather Light';fill:#ffffff" + x="149.38985" + y="-88.762527">Zeste de Code,</tspan></text> + </g> + </g> + </g> +</svg> diff --git a/communication/icone-cookie.png b/communication/icone-cookie.png new file mode 100644 index 0000000..d3fa846 Binary files /dev/null and b/communication/icone-cookie.png differ diff --git a/communication/icone-cookie.svg b/communication/icone-cookie.svg new file mode 100644 index 0000000..6b72371 --- /dev/null +++ b/communication/icone-cookie.svg @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="400" + height="400" + viewBox="0 0 400 400.00001" + id="svg2" + version="1.1" + inkscape:version="0.92.3 (unknown)" + sodipodi:docname="Cookie_ZdS.svg" + inkscape:export-filename="/media/titi-alone/PKBACK# 001/Divers/Cookie_ZdS.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.7" + inkscape:cx="295.78447" + inkscape:cy="276.02539" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:window-width="1366" + inkscape:window-height="660" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:measure-start="110,290" + inkscape:measure-end="90,270" + inkscape:snap-center="true" + inkscape:snap-page="true" + inkscape:snap-grids="false" + inkscape:snap-to-guides="false"> + <inkscape:grid + type="xygrid" + id="grid3336" + spacingx="5" + spacingy="5.0000001" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Calque 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-652.36216)"> + <path + id="path4148" + style="fill:#18526c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" + d="m 52.52793,852.36214 c 0,0 73.73603,0 73.73603,-73.73603 l 0,0 c 0,0 73.73604,0 73.73604,-73.73603 m 0,10e-6 a 147.47207,147.47207 0 0 1 147.47207,147.47207 l 0,0 A 147.47207,147.47207 0 0 1 200,999.83424 147.47207,147.47207 0 0 1 52.52793,852.36216" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#f8ad32;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 138.37774,962.96624 0,-36.86806 -7.3736,7.3736" + id="path4743" + inkscape:connector-curvature="0" /> + <circle + style="fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4745" + cx="246.34836" + cy="861.31586" + r="18.434008" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#f8ad32;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 179.45924,841.82843 0,-36.86802 -7.3736,7.3736" + id="path4743-4" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#f8ad32;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 294.27678,940.84538 0,-36.86801 -7.3736,7.3736" + id="path4743-0" + inkscape:connector-curvature="0" /> + <circle + style="fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4745-3" + cx="204.21347" + cy="941.8988" + r="18.434008" /> + <circle + style="fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4745-32" + cx="251.61522" + cy="769.67242" + r="18.434008" /> + <circle + style="fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4745-1" + cx="123.10384" + cy="871.84949" + r="18.434008" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#f8ad32;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 302.17707,845.51523 0,-36.86802 -7.3736,7.37361" + id="path4743-0-3" + inkscape:connector-curvature="0" /> + <circle + style="fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4820" + cx="153.91498" + cy="732.54114" + r="9.2170038" /> + <circle + style="fill:#f8ad32;fill-opacity:1;stroke:none;stroke-width:12.20570183;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4822" + cx="75.027931" + cy="801.12616" + r="22.5" /> + </g> +</svg> diff --git a/communication/affiche-blanche-rs.png b/communication/image-reseaux-sociaux.png similarity index 100% rename from communication/affiche-blanche-rs.png rename to communication/image-reseaux-sociaux.png diff --git a/communication/affiche-blanche-rs.svg b/communication/image-reseaux-sociaux.svg similarity index 100% rename from communication/affiche-blanche-rs.svg rename to communication/image-reseaux-sociaux.svg diff --git "a/pr\303\251sentation/accueil.tex" "b/pr\303\251sentation/accueil.tex" index eaefdec..63fcd6d 100644 --- "a/pr\303\251sentation/accueil.tex" +++ "b/pr\303\251sentation/accueil.tex" @@ -2,14 +2,15 @@ \usepackage[utf8]{inputenc} \usepackage[francais]{babel} +\usepackage[ddmmyyyy]{datetime} + +\usetheme{zestedesavoir} \title{Zeste de Code} \subtitle{Initiation à la programmation sans pépins !} \author{\includegraphics[height=1.2cm]{zeste-de-savoir-logo.png}} \date{} -\usetheme{zestedesavoir} - \begin{document} \begin{frame} diff --git "a/pr\303\251sentation/intro-prog.tex" "b/pr\303\251sentation/intro-prog.tex" index d1afe47..9ea06de 100644 --- "a/pr\303\251sentation/intro-prog.tex" +++ "b/pr\303\251sentation/intro-prog.tex" @@ -2,7 +2,7 @@ \usepackage[utf8x]{inputenc} \usepackage{listings} - +\usepackage[ddmmyyyy]{datetime} \title{Notions de programmation} \author{Zeste de Savoir} @@ -17,21 +17,21 @@ \section{Notions} \begin{frame} \frametitle{Découverte de l'interpréteur} - Faire des calculs mathématiques simple + Faire des calculs mathématiques simples : \begin{itemize} \item \(1+1\) \item \(6\times 7\) \item \(4-2\) \item \((6-4)\times 2\) - \item \(3.6 / 2\) + \item \(\frac{ 3,6 }{ 2 }\) \end{itemize} - Exercice : calculer le triple de 5,2 + Exercice : calculer le triple de 5,2. \end{frame} \begin{frame} - \frametitle{Découverte de l'interpréteur} - \textbf{Variable} : boite dans laquelle on peut mettre une valeur + \frametitle{Déclaration de variables} + \textbf{Variable} : boite dans laquelle on peut mettre une valeur. \begin{itemize} \item Taper \texttt{x=3} puis taper \texttt{x} \item Taper \texttt{x+1} puis taper \texttt{x} @@ -50,87 +50,96 @@ \section{Notions} \end{lstlisting} \end{frame} -\begin{frame} - \frametitle{Votre premier programme} - \begin{block}{Exercice} - Écrivez un programme qui calcule le double d'un nombre. Pour cela, votre programme va prendre en entrée une variable \texttt{x} et affichera le double de \texttt{x}. - \end{block} - Par exemple si \texttt{x=3}, le programme doit afficher \texttt{6}. -\end{frame} - \begin{frame}[fragile] - \frametitle{Correction} - \begin{lstlisting}[language=python] - x = 3 - x= 2*x - print(x) - \end{lstlisting} + \frametitle{Variables et fonctions pour le Snake} + Gestions des variables dans le Snake : + \begin{itemize} + \item Variables locales : portée limitée + \item Variables de jeu : disponibles partout + \end{itemize} + Gestion des fonctions dans le Snake : + \begin{itemize} + \item Fonctions principales : \texttt{initialisation} et \texttt{boucle} + \item Fonctions internes : \textbf{les méthodes} + \end{itemize} + \textbf{Un exemple ?} Créons notre première fenêtre. \end{frame} \begin{frame}[fragile] \frametitle{Conditions} - Si ton age est supérieur ou égal à 18 ans, alors tu es majeur ! + \textbf{Condition} : Expression qui exécute un morceau de code seulement si elle est vérifiée. + \medbreak \begin{lstlisting}[language=python] - age = 23\\ - if age >= 18:\\ + age = 23 + if age >= 18: ... print("Tu es majeur") \end{lstlisting} - \medbreak - Liste des tests possibles : - + Liste des tests utiles : + \texttt{>} : supérieur à\\ - \texttt{>=} : supérieur ou égal à\\ \texttt{<} : inférieur à\\ - \texttt{<=} : inférieur ou égal à\\ \texttt{==} : égal à\\ \texttt{!=} : différent de\\ - -\end{frame} - -\begin{frame}[fragile] - \frametitle{Conditions (ET et OU)} - Si tu as plus que 11 ans mais moins que 18, alors tu es adolescent. \medbreak - \begin{lstlisting}[language=python] - age = 14 - if age > 11 && age < 18: - ... print("Tu es adolescent ! ") - \end{lstlisting} - - \medbreak - \begin{itemize} - \item \texttt{\&\&} correspond au ``ET'' logique \\ - \item \texttt{||} correspond au ``OU'' logique - \end{itemize} \end{frame} \begin{frame}[fragile] - \frametitle{Conditions (avec else)} - Si tu as au moins 18 ans alors tu es majeur. Sinon, tu es mineur : + \frametitle{Conditions (avec else et elif)} + Si tu as au moins 18 ans alors tu es majeur. + Sinon, tu es mineur. + La majorité internationale est quand à elle atteinte à 21 ans : \medbreak \begin{lstlisting}[language=python] - age = 23 - if age >= 18: + age = 15 + if age >= 21: + ... print("Majorite internationale") + elif age >= 18: ... print("Tu es majeur") else: ... print("Tu es mineur") \end{lstlisting} +\end{frame} +\begin{frame} + \frametitle{Conditions pour le Snake} + \textbf{Exercice} : Affecter une taille au serpent et afficher des messages : + \begin{itemize} + \item Tu es un tricheur si \texttt{taille < 3} + \item Début de partie si \texttt{taille = 3} + \item Serpent long si \texttt{taille > 3} + \end{itemize} + \textbf{Exercice (avec la doc.)} : Fermer la fenêtre lorsque l'on clique sur la croix. \end{frame} \begin{frame}[fragile] \frametitle{Boucles} - - Pour tout les ages de 5 à 25 ans, dire si la personne est majeur. + \textbf{Boucle} : Morceau de code répété un certain nombre de fois. + \medbreak + \textbf{Application} : \begin{lstlisting}[language=python] - for age in range(5,26): - ... print(age) - ... if age > 18: - ... ... print(" = majeur \n") - ... else: - ... ... print(" = mineur \n") + for carreau in jeu.grille(): + ... if jeu.est_un_bord(carreau): + ... ... print(carreau) \end{lstlisting} + À vous de jouer maintenant ! +\end{frame} + +\begin{frame} + \frametitle{Liste des objectifs} + \begin{itemize} + \item Création de la fenêtre et gestion de sa fermeture (déjà fait!) + \item Affichage des éléments : fond, cactus et serpent (déjà entamé) + \item Gestion des déplacements du serpent + \item Ajout de la pomme et gestion des collisions (avec la pomme, le bord et le serpent lui-même) + \end{itemize} + \textbf{Bonus} pour les plus avancés : + \begin{itemize} + \item Empêcher le serpent d'aller en arrière + \item Ajout d'un compteur de points + \item Ajout d'un écran pour rejouer + \item Optimisation du serpent (ajout de coins) + \end{itemize} \end{frame} \end{document} \ No newline at end of file diff --git "a/pr\303\251sentation/metiersinfo.tex" "b/pr\303\251sentation/metiersinfo.tex" index 9262c6d..669d15c 100644 --- "a/pr\303\251sentation/metiersinfo.tex" +++ "b/pr\303\251sentation/metiersinfo.tex" @@ -1,6 +1,7 @@ \documentclass{beamer} \usepackage[utf8]{inputenc} +\usepackage[ddmmyyyy]{datetime} \title{Métiers et études de l'informatique} \author{Zeste de Savoir} diff --git "a/pr\303\251sentation/objectifs.tex" "b/pr\303\251sentation/objectifs.tex" deleted file mode 100644 index ccda26e..0000000 --- "a/pr\303\251sentation/objectifs.tex" +++ /dev/null @@ -1,56 +0,0 @@ -\documentclass{beamer} - -\usepackage[utf8]{inputenc} - -\title{Objectifs de l'atelier} -\author{Zeste de Savoir} -\usetheme{zestedesavoir} -\begin{document} - -\begin{frame} - \titlepage -\end{frame} - -\begin{frame} - \frametitle{Objectif 1} - \begin{itemize} - \item Afficher l'image de fond dans la fenêtre du jeu - \item Afficher les murs de cactus au bord du terrain - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Objectif 2} - \begin{itemize} - \item Afficher le corps du serpent à l'écran - \item Lui ajouter la tête et la queue - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Objectif 3} - \begin{itemize} - \item Faire en sorte que le serpent avance quand on appui sur la bonne touche - \item Faire tourner le serpent à droite et à gauche avec les autres touches - \item Veiller à placer les morceaux du corps dans le bon sens ! - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Objectif 4} - \begin{itemize} - \item Faire apparaître des pommes sur le terrain - \item Permettre au serpent de manger la pomme - \item Ne pas faire apparaître de pommes sur les cactus ! - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Objectif 5} - \begin{itemize} - \item Fin du jeu si le serpent touche un cactus... - \item ... ou bien si le serpent se mord lui-même - \end{itemize} -\end{frame} - -\end{document} \ No newline at end of file diff --git "a/pr\303\251sentation/presentation.tex" "b/pr\303\251sentation/presentation.tex" deleted file mode 100644 index 4b7a087..0000000 --- "a/pr\303\251sentation/presentation.tex" +++ /dev/null @@ -1,24 +0,0 @@ -\documentclass{beamer} - -\usepackage[utf8]{inputenc} - -\title{Coding Goûter} -\author{Zeste de Savoir} -\usetheme{zestedesavoir} -\begin{document} - -\begin{frame} - \titlepage -\end{frame} - -\section{Introduction} - -\begin{frame} - \frametitle{Présentation de ZDS} -\end{frame} -\section{Atelier} - -\section{Les métiers de l'informatique} - -\section{Conclusion} -\end{document} \ No newline at end of file