You can subscribe to this list here.
2010 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(6) |
Dec
|
From: <jo...@us...> - 2011-11-27 22:51:32
|
Revision: 6 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=6&view=rev Author: johnb0b Date: 2011-11-27 22:51:26 +0000 (Sun, 27 Nov 2011) Log Message: ----------- Hello! Petite modification pour que la description saute de ligne toute seule comme une grande. - elements/game.py: Ajout de la methode parse_description() qui, ben, decoupe la desciption du jeu pour en faire un tableau de ligne. Ce tableau sera ensuite utilise par pour rendre differentes surfaces qu'on affichera quand le HL sera actif. Des bisous! Modified Paths: -------------- elements/game.py games/Jeu1/game.ini Modified: elements/game.py =================================================================== --- elements/game.py 2011-11-24 22:16:46 UTC (rev 5) +++ elements/game.py 2011-11-27 22:51:26 UTC (rev 6) @@ -10,6 +10,9 @@ """ class GameElement: + # Taille maximum d'une ligne de la description. Variabiliser? + DESCRIPTION_LINE_SIZE = 26 + """ Constructeur. Prend en argument le nom du jeu, sa description, le ConfigParser principal, @@ -28,11 +31,28 @@ self._coord = self.determine_coordonate() self._font = self._main_config.get('buttons', 'font') self._collide_rect = Rect(self._coord[0] + self._main_config.getint('buttons', 'collide-zone-x') , self._coord[1] + self._main_config.getint('buttons', 'collide-zone-y'), self._main_config.getint('buttons', 'collide-zone-width'), self._main_config.getint('buttons', 'collide-zone-height')) - self._descr_surface = None + self._descr_surface = [] + self._descr_surface_shade = [] self._hl = False + self._good_description = [""] + self.split_description() self.print_name() - + """ + Découpe la description du jeu pour en faire un tableau + de String, plus facile a afficher + """ + def split_description(self): + splitted_descr = self._description.split(" ") + for part in splitted_descr: + if len(self._good_description[-1]) + len(part) < GameElement.DESCRIPTION_LINE_SIZE + 1: + self._good_description[-1] = (str(self._good_description[-1]) + " {0}".format(part)).lstrip() + else: + self._good_description.append(part) + + """ + Affiche une description de l'objet + """ def __str__(self): return "{0} Number: {1}".format(self._name, self._number) @@ -48,14 +68,23 @@ self._hl = False """ - Dessine le bouton sur l'écran + Dessine le bouton sur l'écran et les descriptions au besoin + TODO: Variabiliser les origines de la description """ def draw(self, screen): screen.blit(self._current_image, self._coord) if (self._hl): # si le bouton est en surbrillance, on affiche la description - screen.blit(self._descr_surface_shade, [815, 147]) - screen.blit(self._descr_surface, [814, 148]) + y = 148 + y_shade = 147 + step = self._main_config.getint('buttons','font-descr-size') + for line in self._descr_surface_shade: + screen.blit(line, [814, y_shade]) + y_shade+=step + for line in self._descr_surface: + screen.blit(line, [814, y]) + y+=step + """ Crée les texture affichant le nom et la description """ @@ -70,8 +99,15 @@ self._image_hl.blit(self._image_ban, (13,12)) self._image_click.blit(self._image_ban, (13,12)) font = pygame.font.Font(self._font, self._main_config.getint('buttons','font-descr-size')) - self._descr_surface = font.render(self._description, True, [191, 191, 191]) - self._descr_surface_shade = font.render(self._description, True, [20, 20, 20]) + + for line in self._good_description: + self._descr_surface.append(font.render(line, True, [191, 191, 191])) + + for line in self._good_description: + self._descr_surface_shade.append(font.render(line, True, [20, 20, 20])) + + #self._descr_surface = font.render(self._description, True, [191, 191, 191]) + #self._descr_surface_shade = font.render(self._description, True, [20, 20, 20]) """ Determine les coordonées du bouton en fonction de sa position sur la grille Modified: games/Jeu1/game.ini =================================================================== --- games/Jeu1/game.ini 2011-11-24 22:16:46 UTC (rev 5) +++ games/Jeu1/game.ini 2011-11-27 22:51:26 UTC (rev 6) @@ -1,3 +1,3 @@ [general] name = Jeu 1 -description = Un jeu trop cool \ntrop bien +description = Un jeu trop cool trop bien avec des bitches et des gunz. Sinon hier j'ai mangé un slip au chocolat, c'était bon et blablablabla. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jo...@us...> - 2011-11-24 22:16:53
|
Revision: 5 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=5&view=rev Author: johnb0b Date: 2011-11-24 22:16:46 +0000 (Thu, 24 Nov 2011) Log Message: ----------- Enfin! Apr?\195?\168s pas mal de retard, voila le commit log. ui-main.py: - Commentaires - Changement dans la fonction load_games(): Celle ci ne prend plus qu'un argument. Dans l'ancienne version, on passait le ConfigParser et une donn?\195?\169e issue de ce parser. Maintenant, on ne passe plus que le parser et c'est dans la fonction qu'on va chercher cette donn?\195?\169e - Changement dans la fonction main: Ajout de l'objet frame qui sera charg?\195?\169 de g?\195?\169rer les ?\195?\169v?\195?\168vements et de dessiner les ?\195?\169l?\195?\169ments additionels (boutons, textes, etc) elements/game.py: - Commentaires elements/page.py - Nouvelle classe! Repr?\195?\169sente une "page", en gros un set de 30 jeux (non, ce n'est pas du tout un copier coller) elements/frame.py - Nouvelle classe! Nouveaux aromes, plus de gout! A faire prochainement: - Mettre les bani?\195?\168res dans le fichier de config (si elle n'existe pas, tant pis, on affiche simplement le nom du jeu) - G?\195?\169rer les exceptions (fichier config pourri principalement) - G?\195?\169rer le clique sur un jeu pour le s?\195?\169lectionner, et par se faire, ne plus faire de HL sur les autres boutons - Se poiler grave pour le texte de description afin qu'il ne d?\195?\169passe pas de sa cage. Des bisous! Modified Paths: -------------- elements/frame.py elements/game.py elements/page.py ui-main.py Modified: elements/frame.py =================================================================== --- elements/frame.py 2011-11-21 23:57:55 UTC (rev 4) +++ elements/frame.py 2011-11-24 22:16:46 UTC (rev 5) @@ -4,11 +4,20 @@ from elements.page import Page import pygame + +""" +Classe de gestion des boutons de jeux et de leur pages pour un affichage rafiné et plein d'arome +""" class Frame: - NUMBER_OF_GAME_BY_PAGE = 30 + NUMBER_OF_GAME_BY_PAGE = 30 # A mettre dans un fichier de config probably + """ + Constructeur + Prends en arguments les jeux qui seront ensuites distribué sur les différentes pages + Initiliase également les surfaces "boutons" qui serviront a passer d'une page a l'autre + """ def __init__(self, game_elements): self._game_elements = game_elements self._pages = [] @@ -27,6 +36,9 @@ self._next_collide_zone = self._next.get_rect() self._next_collide_zone.move_ip(815, 400) + """ + Dessine les boutons-jeux de la page active et les boutons next/prev au besoin + """ def draw(self, screen): self._current_page = self._pages[self._current_page_index] self._current_page.draw(screen) @@ -35,7 +47,11 @@ if (self._current_page_index < self._pages_number): screen.blit(self._next, self._next_collide_zone) - + + """ + Gère les évènements. + Vérifie qu'un bouton prev/next a été cliqué et passe l'évènement à la page affiché + """ def handle_event(self, event): mouse_pos = pygame.mouse.get_pos() @@ -52,7 +68,5 @@ elif (self._current_page_index < self._pages_number) and self._next_collide_zone.collidepoint(mouse_pos): print("next") self._current_page_index = self._current_page_index + 1 - - pass elif event.type == pygame.MOUSEMOTION: self._current_page.handle_event(mouse_pos) \ No newline at end of file Modified: elements/game.py =================================================================== --- elements/game.py 2011-11-21 23:57:55 UTC (rev 4) +++ elements/game.py 2011-11-24 22:16:46 UTC (rev 5) @@ -5,9 +5,16 @@ import math from pygame import Rect +""" +Définit un bouton correspondant a un jeu dans l'interface de sélection des jeux PACEMaker +""" class GameElement: - + """ + Constructeur. + Prend en argument le nom du jeu, sa description, le ConfigParser principal, + sa position sur la "grille", et la banière + """ def __init__(self, name, description, main_config, position, ban): self._name = name self._description = description @@ -25,26 +32,33 @@ self._hl = False self.print_name() - + def __str__(self): return "{0} Number: {1}".format(self._name, self._number) - + + """ + Appellé quand la souris bouge, permet de déterminé si le curseur survole le bouton + """ def handle_event(self, mouse_pos): - if self._collide_rect.collidepoint(mouse_pos): + if self._collide_rect.collidepoint(mouse_pos): # Si on est dans le rectangle, on HL self._current_image = self._image_hl self._hl = True - else: + else: # Sinon image normal self._current_image = self._image_base self._hl = False - + """ + Dessine le bouton sur l'écran + """ def draw(self, screen): screen.blit(self._current_image, self._coord) - if (self._hl): + if (self._hl): # si le bouton est en surbrillance, on affiche la description screen.blit(self._descr_surface_shade, [815, 147]) screen.blit(self._descr_surface, [814, 148]) - + """ + Crée les texture affichant le nom et la description + """ def print_name(self): #TODO: Put in a configuration file #font = pygame.font.Font(self._font, self._main_config.getint('buttons','font-size')) @@ -58,7 +72,10 @@ font = pygame.font.Font(self._font, self._main_config.getint('buttons','font-descr-size')) self._descr_surface = font.render(self._description, True, [191, 191, 191]) self._descr_surface_shade = font.render(self._description, True, [20, 20, 20]) - + + """ + Determine les coordonées du bouton en fonction de sa position sur la grille + """ def determine_coordonate(self): if self._number % 3 == 0 : x = 11 Modified: elements/page.py =================================================================== --- elements/page.py 2011-11-21 23:57:55 UTC (rev 4) +++ elements/page.py 2011-11-24 22:16:46 UTC (rev 5) @@ -3,16 +3,28 @@ from elements.game import GameElement import pygame +""" +Représente une "page", en gros un set de 30 jeux +""" class Page: - + """ + Constructeur + prend en arguments les jeux de la page + """ def __init__(self, game_elements): self._game_elements = game_elements - + + """ + Dessine les boutons de la page + """ def draw(self, screen): for element in self._game_elements: element.draw(screen) - + + """ + Passe les évènements aux boutons + """ def handle_event(self, mouse_pos): for game_button in self._game_elements: game_button.handle_event(pygame.mouse.get_pos()) \ No newline at end of file Modified: ui-main.py =================================================================== --- ui-main.py 2011-11-21 23:57:55 UTC (rev 4) +++ ui-main.py 2011-11-24 22:16:46 UTC (rev 5) @@ -8,67 +8,76 @@ import os +""" +Méthode principale du prgramme. +Lance l'UI. +""" def main(): + + # Initilialisation de pygame et création du screen pygame.init() - # Set the height and width of the screen size=[960,768] pygame.display.set_caption("PACEMaker") screen = pygame.display.set_mode(size) - # Load the configuration file + # Charge le fichier de configuration config = ConfigParser() config.read('config.ini') - # Get the UI images path + # Récupère les chemins des images de l'ui images_path = config.get('ui-images', 'images_path') background_path = os.path.join(images_path, config.get('ui-images', 'bg_image_name')) frame_path = os.path.join(images_path, config.get('ui-images', 'frame_image_name')) - # Load UI graphics + # Charge les images background = pygame.image.load(background_path).convert_alpha() frame = pygame.image.load(frame_path).convert_alpha() - # Updating the game list - games = load_games(config, config.get('games-config','games_path')) - for game in games: - print(game) + # Mets à jour la liste des jeux + games = load_games(config) + for game in games: # TODO: A mettre en debug. + print(game) # - #Loop until the user clicks the close button. + # Création du timer et du flag d'exit done = False clock = pygame.time.Clock() + # Création de l'objet Frame qui gère l'affichage de la liste de jeux frame_element = Frame(games) + # Tant qu'on a pas fait exit... while done == False: - # This limits the while loop to a max of 10 times per second. - # Leave this out and we will use all CPU we can. + # On limite l'affichage a 30 FPS clock.tick(30) - for event in pygame.event.get(): # User did something - if event.type == pygame.QUIT: # If user clicked close - done = True # Flag that we are done so we exit this loop + + # On regarde ce qu'il y a dans le pool d'évènement + for event in pygame.event.get(): # L'utilisateur a fait quelque chose + if event.type == pygame.QUIT: + done = True # Si il a cliqué sur QUIT, on change l'exit flag else: - frame_element.handle_event(event) + frame_element.handle_event(event) # Tous les autres évènements sont + # maintenant passé a la Frame - # Clear the screen and set the screen background + # On nettoie l'écran et y dessine les images de fond screen.blit(background, (0,0)) screen.blit(frame, (0,0)) - + # On dessine les éléments suplémentaire frame_element.draw(screen) - #for game_element in games: - # game_element.draw(screen) - # Go ahead and update the screen with what we've drawn. - # This MUST happen after all the other drawing commands. + # Enfin, on flip notre race pygame.display.flip() - # Be IDLE friendly + # En sortant de la boucle, on quitte pygame.quit () - -def load_games(config, games_path): +""" +Charge les jeux depuis le chemin spécifié dans le fichier de configuration +""" +def load_games(config): + games_path = config.get('games-config','games_path') games = [] games_list = os.listdir(games_path) position = 0 @@ -85,7 +94,11 @@ position = 0 return games - +""" + Crée un GameElement (un bouton quoi) + FIXME: Je me demande si il ne faut pas plutot faire ça dans la Frame, voir la Page... + Ca me parait pas trop déconnant. +""" def create_game_menu_item(main_config, game_path, position, ban): print(game_path) config = ConfigParser() @@ -93,6 +106,8 @@ return GameElement(config.get('general', 'name'), config.get('general', 'description'), main_config, position, ban) - + +# Point d'entrée du programme. +# TODO: Penser a gérer les arguments un jour if __name__ == '__main__': main() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jo...@us...> - 2011-11-21 23:58:08
|
Revision: 4 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=4&view=rev Author: johnb0b Date: 2011-11-21 23:57:55 +0000 (Mon, 21 Nov 2011) Log Message: ----------- Demain, un vrai message de commit avec ce qui a change et des commentaires tout bien quoi Modified Paths: -------------- elements/game.py ui-main.py Added Paths: ----------- elements/frame.py elements/page.py Added: elements/frame.py =================================================================== --- elements/frame.py (rev 0) +++ elements/frame.py 2011-11-21 23:57:55 UTC (rev 4) @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 + +from elements.game import GameElement +from elements.page import Page +import pygame + +class Frame: + + + NUMBER_OF_GAME_BY_PAGE = 30 + + def __init__(self, game_elements): + self._game_elements = game_elements + self._pages = [] + self._current_page_index = 0 + self._pages_number = (len(self._game_elements) // Frame.NUMBER_OF_GAME_BY_PAGE) + for i in range (self._pages_number + 1): + self._pages.append(Page(self._game_elements[i * Frame.NUMBER_OF_GAME_BY_PAGE:i * Frame.NUMBER_OF_GAME_BY_PAGE + Frame.NUMBER_OF_GAME_BY_PAGE])) + self._current_page = self._pages[self._current_page_index] + + font = pygame.font.Font(None, 25) + self._prev = font.render("Previous", True, [191, 191, 191]) + self._next = font.render("Next", True, [191, 191, 191]) + + self._prev_collide_zone = self._prev.get_rect() + self._prev_collide_zone.move_ip(815, 90) + self._next_collide_zone = self._next.get_rect() + self._next_collide_zone.move_ip(815, 400) + + def draw(self, screen): + self._current_page = self._pages[self._current_page_index] + self._current_page.draw(screen) + if (self._current_page_index > 0): + screen.blit(self._prev, self._prev_collide_zone) + + if (self._current_page_index < self._pages_number): + screen.blit(self._next, self._next_collide_zone) + + def handle_event(self, event): + + mouse_pos = pygame.mouse.get_pos() + + if event.type == pygame.MOUSEBUTTONDOWN: + print("cliked " + str(self._current_page_index) + " " + str(mouse_pos)) + print("prev " + str(self._prev_collide_zone)) + print("next " + str(self._next_collide_zone)) + + if (self._current_page_index > 0) and self._prev_collide_zone.collidepoint(mouse_pos): + print("prev") + self._current_page_index = self._current_page_index - 1 + + elif (self._current_page_index < self._pages_number) and self._next_collide_zone.collidepoint(mouse_pos): + print("next") + self._current_page_index = self._current_page_index + 1 + + pass + elif event.type == pygame.MOUSEMOTION: + self._current_page.handle_event(mouse_pos) \ No newline at end of file Modified: elements/game.py =================================================================== --- elements/game.py 2011-11-15 14:51:58 UTC (rev 3) +++ elements/game.py 2011-11-21 23:57:55 UTC (rev 4) @@ -1,4 +1,6 @@ #!/usr/bin/env python3 + + import pygame import math from pygame import Rect Added: elements/page.py =================================================================== --- elements/page.py (rev 0) +++ elements/page.py 2011-11-21 23:57:55 UTC (rev 4) @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 + +from elements.game import GameElement +import pygame + +class Page: + + + def __init__(self, game_elements): + self._game_elements = game_elements + + def draw(self, screen): + for element in self._game_elements: + element.draw(screen) + + def handle_event(self, mouse_pos): + for game_button in self._game_elements: + game_button.handle_event(pygame.mouse.get_pos()) \ No newline at end of file Modified: ui-main.py =================================================================== --- ui-main.py 2011-11-15 14:51:58 UTC (rev 3) +++ ui-main.py 2011-11-21 23:57:55 UTC (rev 4) @@ -1,6 +1,8 @@ #!/usr/bin/env python3 from configparser import ConfigParser +from elements.frame import Frame from elements.game import GameElement + import pygame import glob import os @@ -35,8 +37,8 @@ done = False clock = pygame.time.Clock() + frame_element = Frame(games) - while done == False: # This limits the while loop to a max of 10 times per second. @@ -45,16 +47,18 @@ for event in pygame.event.get(): # User did something if event.type == pygame.QUIT: # If user clicked close done = True # Flag that we are done so we exit this loop - elif event.type == pygame.MOUSEMOTION: - for game_button in games: - game_button.handle_event(pygame.mouse.get_pos()) + else: + frame_element.handle_event(event) # Clear the screen and set the screen background screen.blit(background, (0,0)) screen.blit(frame, (0,0)) - for game_element in games: - game_element.draw(screen) + + frame_element.draw(screen) + + #for game_element in games: + # game_element.draw(screen) # Go ahead and update the screen with what we've drawn. # This MUST happen after all the other drawing commands. pygame.display.flip() @@ -77,6 +81,8 @@ for infile in glob.glob(game_ini_file): games.append(create_game_menu_item(config, game_ini_file, position, ban)) position+=1 + if (position == Frame.NUMBER_OF_GAME_BY_PAGE): + position = 0 return games This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kho...@us...> - 2011-11-15 14:52:11
|
Revision: 3 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=3&view=rev Author: kholonet Date: 2011-11-15 14:51:58 +0000 (Tue, 15 Nov 2011) Log Message: ----------- Added banners for games and description text shades Modified Paths: -------------- config.ini elements/game.py ui-main.py Added Paths: ----------- games/Jeu1/ui_ban.png games/Jeu2/ui_ban.png games/Jeu3/ui_ban.png games/Jeu4/ui_ban.png Modified: config.ini =================================================================== --- config.ini 2011-11-14 21:00:47 UTC (rev 2) +++ config.ini 2011-11-15 14:51:58 UTC (rev 3) @@ -19,4 +19,4 @@ [games-config] -games_path=./games/ \ No newline at end of file +games_path=./games/ Modified: elements/game.py =================================================================== --- elements/game.py 2011-11-14 21:00:47 UTC (rev 2) +++ elements/game.py 2011-11-15 14:51:58 UTC (rev 3) @@ -6,13 +6,14 @@ class GameElement: - def __init__(self, name, description, main_config, position): + def __init__(self, name, description, main_config, position, ban): self._name = name self._description = description self._main_config = main_config self._image_base = pygame.image.load(self._main_config.get('buttons', 'button-base')).convert_alpha() self._image_hl = pygame.image.load(self._main_config.get('buttons', 'button-hl')).convert_alpha() self._image_click = pygame.image.load(self._main_config.get('buttons', 'button-click')).convert_alpha() + self._image_ban = pygame.image.load(ban).convert_alpha() self._current_image = self._image_base self._number = position self._coord = self.determine_coordonate() @@ -38,18 +39,23 @@ def draw(self, screen): screen.blit(self._current_image, self._coord) if (self._hl): + screen.blit(self._descr_surface_shade, [815, 147]) screen.blit(self._descr_surface, [814, 148]) def print_name(self): - #TODO: Mettre dans un fichier config - font = pygame.font.Font(self._font, self._main_config.getint('buttons','font-size')) - name = font.render(self._name, True, [191, 191, 191]) - self._image_base.blit(name, (20,25)) - self._image_hl.blit(name, (20,25)) - self._image_click.blit(name, (20,25)) + #TODO: Put in a configuration file + #font = pygame.font.Font(self._font, self._main_config.getint('buttons','font-size')) + #name = font.render(self._name, True, [191, 191, 191]) + #self._image_base.blit(name, (20,25)) + #self._image_hl.blit(name, (20,25)) + #self._image_click.blit(name, (20,25)) + self._image_base.blit(self._image_ban, (13,12)) + self._image_hl.blit(self._image_ban, (13,12)) + self._image_click.blit(self._image_ban, (13,12)) font = pygame.font.Font(self._font, self._main_config.getint('buttons','font-descr-size')) self._descr_surface = font.render(self._description, True, [191, 191, 191]) + self._descr_surface_shade = font.render(self._description, True, [20, 20, 20]) def determine_coordonate(self): if self._number % 3 == 0 : @@ -65,4 +71,4 @@ - \ No newline at end of file + Added: games/Jeu1/ui_ban.png =================================================================== (Binary files differ) Property changes on: games/Jeu1/ui_ban.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: games/Jeu2/ui_ban.png =================================================================== (Binary files differ) Property changes on: games/Jeu2/ui_ban.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: games/Jeu3/ui_ban.png =================================================================== (Binary files differ) Property changes on: games/Jeu3/ui_ban.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: games/Jeu4/ui_ban.png =================================================================== (Binary files differ) Property changes on: games/Jeu4/ui_ban.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: ui-main.py =================================================================== --- ui-main.py 2011-11-14 21:00:47 UTC (rev 2) +++ ui-main.py 2011-11-15 14:51:58 UTC (rev 3) @@ -13,20 +13,20 @@ pygame.display.set_caption("PACEMaker") screen = pygame.display.set_mode(size) - # Chargement du fichier de configuration + # Load the configuration file config = ConfigParser() config.read('config.ini') - # Récupération du chemin des images + # Get the UI images path images_path = config.get('ui-images', 'images_path') background_path = os.path.join(images_path, config.get('ui-images', 'bg_image_name')) frame_path = os.path.join(images_path, config.get('ui-images', 'frame_image_name')) - # Chargement des images de l'ui + # Load UI graphics background = pygame.image.load(background_path).convert_alpha() frame = pygame.image.load(frame_path).convert_alpha() - # Mise à jour de la liste des jeux + # Updating the game list games = load_games(config, config.get('games-config','games_path')) for game in games: print(game) @@ -71,21 +71,22 @@ games_list.sort() for game_folder in games_list: game_folder_path = os.path.join(games_path,game_folder) + ban = os.path.join(game_folder_path, 'ui_ban.png') game_ini_file = os.path.join(game_folder_path, 'game.ini') print("Recherche de ",game_ini_file) for infile in glob.glob(game_ini_file): - games.append(create_game_menu_item(config, game_ini_file, position)) + games.append(create_game_menu_item(config, game_ini_file, position, ban)) position+=1 return games -def create_game_menu_item(main_config, game_path, position): +def create_game_menu_item(main_config, game_path, position, ban): print(game_path) config = ConfigParser() config.read(game_path) - return GameElement(config.get('general', 'name'), config.get('general', 'description'), main_config, position) + return GameElement(config.get('general', 'name'), config.get('general', 'description'), main_config, position, ban) if __name__ == '__main__': - main() \ No newline at end of file + main() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jo...@us...> - 2011-11-14 21:00:53
|
Revision: 2 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=2&view=rev Author: johnb0b Date: 2011-11-14 21:00:47 +0000 (Mon, 14 Nov 2011) Log Message: ----------- Correction du bug d'affichage des boutons, Order de la list des jeux, Ajout de la description des jeux dans le panel a droite. ATTENTION: si la description est trop longue, il n'y a aucun retour a la ligne qui se fait. Il faut trouver un moyen de faire ?\195?\167a ?\195?\169l?\195?\169gament. Nico: J'utilise la m?\195?\170me font? Quelle taille? Quelle couleur? Modified Paths: -------------- config.ini elements/game.py games/Jeu1/game.ini ui-main.py Modified: config.ini =================================================================== --- config.ini 2011-11-13 01:46:12 UTC (rev 1) +++ config.ini 2011-11-14 21:00:47 UTC (rev 2) @@ -11,6 +11,7 @@ button-click = ./res/img/button_click.png font = ./res/fonts/Cuprum.otf font-size = 25 +font-descr-size = 14 collide-zone-x = 8 collide-zone-y = 7 collide-zone-width = 250 Modified: elements/game.py =================================================================== --- elements/game.py 2011-11-13 01:46:12 UTC (rev 1) +++ elements/game.py 2011-11-14 21:00:47 UTC (rev 2) @@ -18,6 +18,8 @@ self._coord = self.determine_coordonate() self._font = self._main_config.get('buttons', 'font') self._collide_rect = Rect(self._coord[0] + self._main_config.getint('buttons', 'collide-zone-x') , self._coord[1] + self._main_config.getint('buttons', 'collide-zone-y'), self._main_config.getint('buttons', 'collide-zone-width'), self._main_config.getint('buttons', 'collide-zone-height')) + self._descr_surface = None + self._hl = False self.print_name() @@ -27,12 +29,17 @@ def handle_event(self, mouse_pos): if self._collide_rect.collidepoint(mouse_pos): self._current_image = self._image_hl + self._hl = True else: self._current_image = self._image_base + self._hl = False def draw(self, screen): screen.blit(self._current_image, self._coord) + if (self._hl): + screen.blit(self._descr_surface, [814, 148]) + def print_name(self): #TODO: Mettre dans un fichier config @@ -41,14 +48,16 @@ self._image_base.blit(name, (20,25)) self._image_hl.blit(name, (20,25)) self._image_click.blit(name, (20,25)) + font = pygame.font.Font(self._font, self._main_config.getint('buttons','font-descr-size')) + self._descr_surface = font.render(self._description, True, [191, 191, 191]) def determine_coordonate(self): - if self._number % 3 == 1 : - x = 533 - elif self._number % 3 == 2: + if self._number % 3 == 0 : + x = 11 + elif self._number % 3 == 1: x = 272 else: - x = 11 + x = 533 y = (math.floor(self._number / 3) * 67) + 41 Modified: games/Jeu1/game.ini =================================================================== --- games/Jeu1/game.ini 2011-11-13 01:46:12 UTC (rev 1) +++ games/Jeu1/game.ini 2011-11-14 21:00:47 UTC (rev 2) @@ -1,3 +1,3 @@ [general] name = Jeu 1 -description = Un jeu trop cool trop bien +description = Un jeu trop cool \ntrop bien Modified: ui-main.py =================================================================== --- ui-main.py 2011-11-13 01:46:12 UTC (rev 1) +++ ui-main.py 2011-11-14 21:00:47 UTC (rev 2) @@ -68,6 +68,7 @@ games = [] games_list = os.listdir(games_path) position = 0 + games_list.sort() for game_folder in games_list: game_folder_path = os.path.join(games_path,game_folder) game_ini_file = os.path.join(game_folder_path, 'game.ini') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jo...@us...> - 2011-11-13 01:46:18
|
Revision: 1 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=1&view=rev Author: johnb0b Date: 2011-11-13 01:46:12 +0000 (Sun, 13 Nov 2011) Log Message: ----------- Added Paths: ----------- config.ini elements/ elements/__init__.py elements/__pycache__/ elements/game.py games/ games/Jeu1/ games/Jeu1/game.ini games/Jeu2/ games/Jeu2/game.ini games/Jeu3/ games/Jeu3/game.ini games/Jeu4/ games/Jeu4/game.ini res/ res/fonts/ res/fonts/Cuprum.otf res/img/ res/img/bg.png res/img/button_base.png res/img/button_click.png res/img/button_hilight.png res/img/frame.png ui-main.py Added: config.ini =================================================================== --- config.ini (rev 0) +++ config.ini 2011-11-13 01:46:12 UTC (rev 1) @@ -0,0 +1,21 @@ + +[ui-images] +images_path=./res/img/ + +bg_image_name=bg.png +frame_image_name=frame.png + +[buttons] +button-base = ./res/img/button_base.png +button-hl = ./res/img/button_hilight.png +button-click = ./res/img/button_click.png +font = ./res/fonts/Cuprum.otf +font-size = 25 +collide-zone-x = 8 +collide-zone-y = 7 +collide-zone-width = 250 +collide-zone-height = 60 + + +[games-config] +games_path=./games/ \ No newline at end of file Added: elements/__init__.py =================================================================== --- elements/__init__.py (rev 0) +++ elements/__init__.py 2011-11-13 01:46:12 UTC (rev 1) @@ -0,0 +1 @@ + Added: elements/game.py =================================================================== --- elements/game.py (rev 0) +++ elements/game.py 2011-11-13 01:46:12 UTC (rev 1) @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +import pygame +import math +from pygame import Rect + +class GameElement: + + + def __init__(self, name, description, main_config, position): + self._name = name + self._description = description + self._main_config = main_config + self._image_base = pygame.image.load(self._main_config.get('buttons', 'button-base')).convert_alpha() + self._image_hl = pygame.image.load(self._main_config.get('buttons', 'button-hl')).convert_alpha() + self._image_click = pygame.image.load(self._main_config.get('buttons', 'button-click')).convert_alpha() + self._current_image = self._image_base + self._number = position + self._coord = self.determine_coordonate() + self._font = self._main_config.get('buttons', 'font') + self._collide_rect = Rect(self._coord[0] + self._main_config.getint('buttons', 'collide-zone-x') , self._coord[1] + self._main_config.getint('buttons', 'collide-zone-y'), self._main_config.getint('buttons', 'collide-zone-width'), self._main_config.getint('buttons', 'collide-zone-height')) + self.print_name() + + + def __str__(self): + return "{0} Number: {1}".format(self._name, self._number) + + def handle_event(self, mouse_pos): + if self._collide_rect.collidepoint(mouse_pos): + self._current_image = self._image_hl + else: + self._current_image = self._image_base + + + def draw(self, screen): + screen.blit(self._current_image, self._coord) + + def print_name(self): + #TODO: Mettre dans un fichier config + font = pygame.font.Font(self._font, self._main_config.getint('buttons','font-size')) + name = font.render(self._name, True, [191, 191, 191]) + self._image_base.blit(name, (20,25)) + self._image_hl.blit(name, (20,25)) + self._image_click.blit(name, (20,25)) + + def determine_coordonate(self): + if self._number % 3 == 1 : + x = 533 + elif self._number % 3 == 2: + x = 272 + else: + x = 11 + + y = (math.floor(self._number / 3) * 67) + 41 + + return (x, y) + + + + \ No newline at end of file Added: games/Jeu1/game.ini =================================================================== --- games/Jeu1/game.ini (rev 0) +++ games/Jeu1/game.ini 2011-11-13 01:46:12 UTC (rev 1) @@ -0,0 +1,3 @@ +[general] +name = Jeu 1 +description = Un jeu trop cool trop bien Added: games/Jeu2/game.ini =================================================================== --- games/Jeu2/game.ini (rev 0) +++ games/Jeu2/game.ini 2011-11-13 01:46:12 UTC (rev 1) @@ -0,0 +1,4 @@ +[general] +name = Jeu 2 +description = Un jeu trop cool trop bien + Added: games/Jeu3/game.ini =================================================================== --- games/Jeu3/game.ini (rev 0) +++ games/Jeu3/game.ini 2011-11-13 01:46:12 UTC (rev 1) @@ -0,0 +1,3 @@ +[general] +name = Jeu 3 +description = Un jeu trop cool trop bien Added: games/Jeu4/game.ini =================================================================== --- games/Jeu4/game.ini (rev 0) +++ games/Jeu4/game.ini 2011-11-13 01:46:12 UTC (rev 1) @@ -0,0 +1,3 @@ +[general] +name = Jeu 4 +description = Un jeu trop cool trop bien Added: res/fonts/Cuprum.otf =================================================================== (Binary files differ) Property changes on: res/fonts/Cuprum.otf ___________________________________________________________________ Added: svn:mime-type + application/vnd.ms-opentype Added: res/img/bg.png =================================================================== (Binary files differ) Property changes on: res/img/bg.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: res/img/button_base.png =================================================================== (Binary files differ) Property changes on: res/img/button_base.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: res/img/button_click.png =================================================================== (Binary files differ) Property changes on: res/img/button_click.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: res/img/button_hilight.png =================================================================== (Binary files differ) Property changes on: res/img/button_hilight.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: res/img/frame.png =================================================================== (Binary files differ) Property changes on: res/img/frame.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: ui-main.py =================================================================== --- ui-main.py (rev 0) +++ ui-main.py 2011-11-13 01:46:12 UTC (rev 1) @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 +from configparser import ConfigParser +from elements.game import GameElement +import pygame +import glob +import os + + +def main(): + pygame.init() + # Set the height and width of the screen + size=[960,768] + pygame.display.set_caption("PACEMaker") + screen = pygame.display.set_mode(size) + + # Chargement du fichier de configuration + config = ConfigParser() + config.read('config.ini') + + # Récupération du chemin des images + images_path = config.get('ui-images', 'images_path') + background_path = os.path.join(images_path, config.get('ui-images', 'bg_image_name')) + frame_path = os.path.join(images_path, config.get('ui-images', 'frame_image_name')) + + # Chargement des images de l'ui + background = pygame.image.load(background_path).convert_alpha() + frame = pygame.image.load(frame_path).convert_alpha() + + # Mise à jour de la liste des jeux + games = load_games(config, config.get('games-config','games_path')) + for game in games: + print(game) + + #Loop until the user clicks the close button. + done = False + clock = pygame.time.Clock() + + + + while done == False: + + # This limits the while loop to a max of 10 times per second. + # Leave this out and we will use all CPU we can. + clock.tick(30) + for event in pygame.event.get(): # User did something + if event.type == pygame.QUIT: # If user clicked close + done = True # Flag that we are done so we exit this loop + elif event.type == pygame.MOUSEMOTION: + for game_button in games: + game_button.handle_event(pygame.mouse.get_pos()) + + # Clear the screen and set the screen background + screen.blit(background, (0,0)) + screen.blit(frame, (0,0)) + + for game_element in games: + game_element.draw(screen) + # Go ahead and update the screen with what we've drawn. + # This MUST happen after all the other drawing commands. + pygame.display.flip() + + # Be IDLE friendly + pygame.quit () + + + +def load_games(config, games_path): + games = [] + games_list = os.listdir(games_path) + position = 0 + for game_folder in games_list: + game_folder_path = os.path.join(games_path,game_folder) + game_ini_file = os.path.join(game_folder_path, 'game.ini') + print("Recherche de ",game_ini_file) + for infile in glob.glob(game_ini_file): + games.append(create_game_menu_item(config, game_ini_file, position)) + position+=1 + return games + + +def create_game_menu_item(main_config, game_path, position): + print(game_path) + config = ConfigParser() + config.read(game_path) + return GameElement(config.get('general', 'name'), config.get('general', 'description'), main_config, position) + + + +if __name__ == '__main__': + main() \ No newline at end of file Property changes on: ui-main.py ___________________________________________________________________ Added: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vin...@us...> - 2011-07-20 22:09:31
|
Revision: 19 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=19&view=rev Author: vincentniakos Date: 2011-07-20 22:09:22 +0000 (Wed, 20 Jul 2011) Log Message: ----------- ... ca va commiter oui ou non bordel Modified Paths: -------------- PACEmaker/src/SetParser.py Modified: PACEmaker/src/SetParser.py =================================================================== --- PACEmaker/src/SetParser.py 2011-07-20 00:05:11 UTC (rev 18) +++ PACEmaker/src/SetParser.py 2011-07-20 22:09:22 UTC (rev 19) @@ -47,7 +47,7 @@ s.addAsset(asset) s.zones = {} for zone in set.getElementsByTagName("zones")[0].getElementsByTagName("zone") : - z = Zone() + z = Zone() x = int(self.getText(zone.getAttributeNode("initX"))) y = int(self.getText(zone.getAttributeNode("initY"))) width = int(self.getText(zone.getAttributeNode("width"))) @@ -58,7 +58,7 @@ s.exitZones[self.getText(exitZone.getAttributeNode("zoneName"))] = self.getText(exitZone.getAttributeNode("to")) self.__sets__[self.getText(set.getAttributeNode("name"))] = s except Exception as inst: - print "Erreur :", inst + print ("Erreur :", inst) #self.__sets__.append(s) return self.__sets__ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vin...@us...> - 2011-07-20 00:05:17
|
Revision: 18 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=18&view=rev Author: vincentniakos Date: 2011-07-20 00:05:11 +0000 (Wed, 20 Jul 2011) Log Message: ----------- Correctif sur le flickering quand on reste appuyer sur le click droit pour afficher le menu et qu'on choisit une action avec le bouton gauche. Par ailleurs maintenant une fois que l'action est choisit avec le bouton gauche on referme le menu plutot que de le laisser ouvert Modified Paths: -------------- PACEmaker/src/Set.py PACEmaker/src/apprentissage1.py PACEmaker/src/menuBarParser.py PACEmaker/src/menuParser.py Added Paths: ----------- PACEmaker/src/charactersParser.py PACEmaker/src/setup.py Property Changed: ---------------- PACEmaker/src/ Property changes on: PACEmaker/src ___________________________________________________________________ Added: svn:ignore + SetParser.py.r17 Modified: PACEmaker/src/Set.py =================================================================== --- PACEmaker/src/Set.py 2010-06-19 21:21:52 UTC (rev 17) +++ PACEmaker/src/Set.py 2011-07-20 00:05:11 UTC (rev 18) @@ -20,7 +20,9 @@ self.description = None self.entryZones = {} self.exitZones = {} + self.zones = {} + def addAsset(self, nodeAsset): if nodeAsset.nodeType == nodeAsset.ELEMENT_NODE : asset = Asset() @@ -28,7 +30,7 @@ asset.depth = self.getText(nodeAsset.getAttributeNode("depth")) asset.file = self.getText(nodeAsset.getAttributeNode("file")) except: - print 'Un des TAGS suivant est manquant : depth, file' + print ('Un des TAGS suivant est manquant : depth, file') self.assets.append(asset) def getText(self, node): @@ -40,20 +42,4 @@ response = "Name: " + self.name response += "\nDescription: " + self.description - -# response.append("Entry Zones: ") -# response.append(self.entry_zones.to_string()) -# -# response.append("Entry Zones: ") -# reponse.append(self.entry_zones.to_string()) -# -# response.append("Exit Zones: ") -# reponse.append(self.exit_zones.to_string()) -# -# response.append("Zones: ") -# response.append(self.zones.to_string()) -# -# response.append("Assets: ") -# response.append(self.assets.to_string()) - - return response + return response \ No newline at end of file Modified: PACEmaker/src/apprentissage1.py =================================================================== --- PACEmaker/src/apprentissage1.py 2010-06-19 21:21:52 UTC (rev 17) +++ PACEmaker/src/apprentissage1.py 2011-07-20 00:05:11 UTC (rev 18) @@ -9,10 +9,10 @@ from pygame.locals import * __author__ = "Vincent" -__date__ = "$1 f\xE8vr. 2010 21:52:29$" +__date__ = "$1 fevr. 2010 21:52:29$" if __name__ == "__main__": - print "Hello World" + print ("Hello World") colorkey = None menuGame = None icones = [] @@ -23,20 +23,20 @@ persoPath = imagePath+"PersoTest.png" """ - #creation de l'instance du menu en passant le fichier xml \xE0 charger + #creation de l'instance du menu en passant le fichier xml a charger menuGame = Menu('../exemples/actionMenu.xml') menuBar = MenuBar('../exemples/menuBar.xml') lstSets = SetParser('../exemples/set.xml') # Affiche dans la console le fichier courant avec son chemin absolu - print __file__ + print (__file__) #chargement de la scene try: background = pygame.image.load(lstSets.__sets__[lstSets.activeSet].assets[0].file) - except pygame.error, message: - print "impossible d'ouvrir l'image" - raise SystemExit, message + except (pygame.error, message): + print ("impossible d'ouvrir l'image") + raise (SystemExit, message) backgroundRect = background.get_rect() size = (width, height) = background.get_size() screen = pygame.display.set_mode(size) @@ -67,11 +67,11 @@ clock = pygame.time.Clock() running = 1 - # sizeIcone repr\xE9sente et l'\xE9chelle de distance qui permettra d'agrandir le cercle + # sizeIcone represente et l'echelle de distance qui permettra d'agrandir le cercle sizeIcone = 1.5*menuGame.lstSousMenus[0].iconeMenu.get_width() - # isClick : permet de soit si on bouton est maintenu enfonc\xE9 + # isClick : permet de soit si on bouton est maintenu enfonce isClick = 0 - # imageActive permet de savoir si un sous menu doit \xEAtre affich\xE9 dans son \xE9tat actif ou non (quand le curseur est dessus) + # imageActive permet de savoir si un sous menu doit etre affiche dans son etat actif ou non (quand le curseur est dessus) # Sa valeur contient l'indice de la liste de sous menu, ou -1 si aucun sous menus n'a le curseur par dessus imageActive = -1 actionToDo = "aller" @@ -87,18 +87,19 @@ if isMenuBarOpen== 1 : for unMenu in menuBar.menuButtons : screen.blit(unMenu.image, unMenu.imagePos) - #si \xE9v\xE9nement est rencontr\xE9... + #si evenement est rencontre... event = pygame.event.poll() - if event.type == pygame.QUIT: #si on demande de quitter on arr\xEAte l'executiondu programme + if event.type == pygame.QUIT: #si on demande de quitter on arrete l'execution du programme running = 0 elif event.type is KEYDOWN and event.key == 282 and isMenuBarOpen == 0 : #menuBar.showMenu() isMenuBarOpen = 1 elif event.type == pygame.MOUSEBUTTONDOWN : - if event.button == 3: #si le bouton droit est enfonc\xE9 ... - #on r\xE9cup\xE8re les coordonn\xE9ees de la souris + if event.button == 3 and isClick == 0 : #si le bouton droit est enfonce et que le menu n'attend pas d'etre ferme... + print ("evenement rencontre : bouton droit down") + #on recupere les coordonnees de la souris pos = x, y = event.pos - # On place les elements du menu de fa\xE7on circulaire + # On place les elements du menu de facon circulaire for i in range(menuGame.nbElemMenu): if i > 7 : coef = 1+(i/7) @@ -116,6 +117,14 @@ menuGame.lstSousMenus[i].imagePos = menuGame.lstSousMenus[i].imagePos.move(dx, dy) #print "position x :" , posx , " position y : ", posy , "\n" isClick = 1 + elif event.button == 1 and isClick ==1 : + i = 0 + newPos = nx, ny = event.pos + for i in range(menuGame.nbElemMenu): + if i==imageActive : + screen.blit(menuGame.lstSousMenus[i].iconeActiveMenu, menuGame.lstSousMenus[i].imagePos) + else : + screen.blit(menuGame.lstSousMenus[i].iconeMenu, menuGame.lstSousMenus[i].imagePos) elif event.type == pygame.MOUSEBUTTONUP : if event.button == 3: for i in range(menuGame.nbElemMenu): @@ -142,6 +151,7 @@ if menuGame.lstSousMenus[i].imagePos.collidepoint(newPos): #print "Action a effectuer : "+menuGame.lstSousMenus[i].action actionToDo = menuGame.lstSousMenus[i].action + isClick = 0 break i = i + 1 elif isMenuBarOpen == 1 and (ny > menuBar.menuButtons[0].imagePos.bottom or @@ -158,9 +168,9 @@ lstSets.activeSet = lstSets.__sets__[activeSet].exitZones[zone] try: background = pygame.image.load(lstSets.__sets__[lstSets.activeSet].assets[0].file) - except pygame.error, message: - print "impossible d'ouvrir l'image" - raise SystemExit, message + except (pygame.error, message): + print ("impossible d'ouvrir l'image") + raise (SystemExit, message) break elif isClick ==1 : if event.type == pygame.MOUSEMOTION : Added: PACEmaker/src/charactersParser.py =================================================================== --- PACEmaker/src/charactersParser.py (rev 0) +++ PACEmaker/src/charactersParser.py 2011-07-20 00:05:11 UTC (rev 18) @@ -0,0 +1,44 @@ +#-*- coding: Utf-8 -*- +# To change this template, choose Tools | Templates +# and open the template in the editor. +import xml.dom.minidom + +__author__="Vincent" +__date__ ="$17 juin 2010 01:33:09$" + +class CharactersParser: + __currentNode__ = None + __characters__ = None + + def __init__(self, xml_path): + self.readXml(xml_path) + self.__characters__ = {} + self.initCharacters() + + #chargement du fichier xml contenant les personnages + def readXml(self, xml_path): + self.doc = xml.dom.minidom.parse(xml_path) + + #recuperation du premier noeud (racine) du fichier xml + def getRootElement(self): + if self.__currentNode__ == None: + self.__currentNode__ = self.doc.documentElement + return self.__currentNode__ + + + #initialisation de la listes des sets + def initCharacters(self): + if self.__characters__ != None: + return + for char in self.getRootElement().getElementsByTagName("character"): + if char.nodeType == char.ELEMENT_NODE: + c = Character() + try: + print "Test" + except Exception as inst: + print "Erreur :", inst + #self.__sets__.append(s) + return self.__characters__ + + def getText(self, node): + return node.childNodes[0].nodeValue Modified: PACEmaker/src/menuBarParser.py =================================================================== --- PACEmaker/src/menuBarParser.py 2010-06-19 21:21:52 UTC (rev 17) +++ PACEmaker/src/menuBarParser.py 2011-07-20 00:05:11 UTC (rev 18) @@ -31,7 +31,7 @@ def initMenuBar(self): - #Si le menu est d\xE9j\xE0 charg\xE9 on ne relit pas le fichier xml + #Si le menu est déjà chargé on ne relit pas le fichier xml if self.menuButtons != None: return self.menuButtons = [] @@ -47,7 +47,7 @@ m.imagePos.left = self.width self.width += m.imagePos.width except: - print 'Un des TAGS suivant est manquant : action, image' + print ('Un des TAGS suivant est manquant : action, image') self.menuButtons.append(m) if len(self.menuButtons) >0: Modified: PACEmaker/src/menuParser.py =================================================================== --- PACEmaker/src/menuParser.py 2010-06-19 21:21:52 UTC (rev 17) +++ PACEmaker/src/menuParser.py 2011-07-20 00:05:11 UTC (rev 18) @@ -50,7 +50,7 @@ sm.iconeActiveMenu = pygame.image.load(self.getText(unSousMenu.getElementsByTagName("active")[0])) sm.imagePos = sm.iconeMenu.get_rect(); except: - print 'Un des TAGS suivant est manquents : action, icone, active' + print ('Un des TAGS suivant est manquents : action, icone, active') self.lstSousMenus.append(sm) Added: PACEmaker/src/setup.py =================================================================== --- PACEmaker/src/setup.py (rev 0) +++ PACEmaker/src/setup.py 2011-07-20 00:05:11 UTC (rev 18) @@ -0,0 +1,27 @@ +__author__="Vincent" +__date__ ="$12 déc. 2010 01:31:06$" + +from setuptools import setup,find_packages + +setup ( + name = 'PACEmaker', + version = '0.1', + packages = find_packages(), + + # Declare your packages' dependencies here, for eg: + install_requires=['foo>=3'], + + # Fill in these to make your Egg ready for upload to + # PyPI + author = 'Vincent', + author_email = '', + + summary = 'Just another Python package for the cheese shop', + url = '', + license = '', + long_description= 'Long description of the package', + + # could also include long_description, download_url, classifiers, etc. + + +) \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vin...@us...> - 2010-06-19 21:21:58
|
Revision: 17 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=17&view=rev Author: vincentniakos Date: 2010-06-19 21:21:52 +0000 (Sat, 19 Jun 2010) Log Message: ----------- Quelques tentatives d'am?\195?\169liorations (pas tr?\195?\168s glorieuses). Moins de calculs sont effectu?\195?\169s, mais quand on g?\195?\169n?\195?\169re de nombreux ?\195?\169v?\195?\169nement la file d'attente ne suit pas le rythme, au bout d'un certain temps on aper?\195?\167oit un gros temps de latence....?\195?\160 voir comment am?\195?\169liorer tout cela. Modified Paths: -------------- PACEmaker/src/apprentissage1.py Modified: PACEmaker/src/apprentissage1.py =================================================================== --- PACEmaker/src/apprentissage1.py 2010-06-16 20:00:51 UTC (rev 16) +++ PACEmaker/src/apprentissage1.py 2010-06-19 21:21:52 UTC (rev 17) @@ -9,25 +9,25 @@ from pygame.locals import * __author__ = "Vincent" -__date__ = "$1 f�vr. 2010 21:52:29$" +__date__ = "$1 f\xE8vr. 2010 21:52:29$" if __name__ == "__main__": print "Hello World" colorkey = None menuGame = None icones = [] - #pygame.init() + pygame.init() - imagePath = '../ressources/images/' + """imagePath = '../ressources/images/' decorPath = imagePath+"decord1.png" persoPath = imagePath+"PersoTest.png" + """ - - #creation de l'instance du menu en passant le fichier xml � charger + #creation de l'instance du menu en passant le fichier xml \xE0 charger menuGame = Menu('../exemples/actionMenu.xml') menuBar = MenuBar('../exemples/menuBar.xml') lstSets = SetParser('../exemples/set.xml') - + # Affiche dans la console le fichier courant avec son chemin absolu print __file__ @@ -67,118 +67,117 @@ clock = pygame.time.Clock() running = 1 - # sizeIcone repr�sente et l'�chelle de distance qui permettra d'agrandir le cercle + # sizeIcone repr\xE9sente et l'\xE9chelle de distance qui permettra d'agrandir le cercle sizeIcone = 1.5*menuGame.lstSousMenus[0].iconeMenu.get_width() - # isClick : permet de soit si on bouton est maintenu enfonc� + # isClick : permet de soit si on bouton est maintenu enfonc\xE9 isClick = 0 - # imageActive permet de savoir si un sous menu doit �tre affich� dans son �tat actif ou non (quand le curseur est dessus) + # imageActive permet de savoir si un sous menu doit \xEAtre affich\xE9 dans son \xE9tat actif ou non (quand le curseur est dessus) # Sa valeur contient l'indice de la liste de sous menu, ou -1 si aucun sous menus n'a le curseur par dessus imageActive = -1 actionToDo = "aller" + nbCircleMenu = menuGame.nbElemMenu%8 + betaBis = 2 * math.pi / nbCircleMenu + sizex = menuGame.lstSousMenus[0].iconeMenu.get_width() + sizey = menuGame.lstSousMenus[0].iconeMenu.get_height() # execution des instructions principales en boucle while running: + clock.tick(25) #on affiche dans un premier temps la scene screen.blit(background, backgroundRect) - #si �v�nement est rencontr�... + if isMenuBarOpen== 1 : + for unMenu in menuBar.menuButtons : + screen.blit(unMenu.image, unMenu.imagePos) + #si \xE9v\xE9nement est rencontr\xE9... event = pygame.event.poll() - if event.type == pygame.QUIT: #si on demande de quitter on arr�te l'executiondu programme + if event.type == pygame.QUIT: #si on demande de quitter on arr\xEAte l'executiondu programme running = 0 elif event.type is KEYDOWN and event.key == 282 and isMenuBarOpen == 0 : #menuBar.showMenu() isMenuBarOpen = 1 - - elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 3: #si le bouton droit est enfonc� ... - #on r�cup�re les coordonn�ees de la souris - pos = x, y = event.pos - # On place les elements du menu de fa�on circulaire - for i in range(menuGame.nbElemMenu): - if i > 7 : - nbCircleMenu = menuGame.nbElemMenu%8 - coef = 1+(i/7) - if nbCircleMenu == 0 : - posx = round(math.cos(menuGame.beta * i)*coef*sizeIcone,0) - posy = round(math.sin(menuGame.beta* i)*coef*sizeIcone,0) + elif event.type == pygame.MOUSEBUTTONDOWN : + if event.button == 3: #si le bouton droit est enfonc\xE9 ... + #on r\xE9cup\xE8re les coordonn\xE9ees de la souris + pos = x, y = event.pos + # On place les elements du menu de fa\xE7on circulaire + for i in range(menuGame.nbElemMenu): + if i > 7 : + coef = 1+(i/7) + if nbCircleMenu == 0 : + posx = round(math.cos(menuGame.beta * i)*coef*sizeIcone,0) + posy = round(math.sin(menuGame.beta* i)*coef*sizeIcone,0) + else : + posx = round(math.cos(betaBis * i)*coef*sizeIcone,0) + posy = round(math.sin(betaBis * i)*coef*sizeIcone,0) else : - betaBis = 2 * math.pi / nbCircleMenu - posx = round(math.cos(betaBis * i)*coef*sizeIcone,0) - posy = round(math.sin(betaBis * i)*coef*sizeIcone,0) - else : - posx = round(math.cos(menuGame.beta * i)*sizeIcone,0) - posy = round(math.sin(menuGame.beta* i)*sizeIcone,0) - sizex = menuGame.lstSousMenus[i].iconeMenu.get_width() - sizey = menuGame.lstSousMenus[i].iconeMenu.get_height() - dx = x + posx - (sizex/2) - dy = y + posy - (sizey/2) - menuGame.lstSousMenus[i].imagePos = menuGame.lstSousMenus[i].imagePos.move(dx, dy) - #print "position x :" , posx , " position y : ", posy , "\n" - isClick = 1 - elif event.type == pygame.MOUSEBUTTONUP and event.button == 3: - for i in range(menuGame.nbElemMenu): - if i > 7 : - nbCircleMenu = menuGame.nbElemMenu%8 - coef = 1+(i/7) - if nbCircleMenu == 0 : - posx = round(math.cos(menuGame.beta * i)*coef*sizeIcone,0) - posy = round(math.sin(menuGame.beta* i)*coef*sizeIcone,0) + posx = round(math.cos(menuGame.beta * i)*sizeIcone,0) + posy = round(math.sin(menuGame.beta* i)*sizeIcone,0) + dx = x + posx - (sizex/2) + dy = y + posy - (sizey/2) + menuGame.lstSousMenus[i].imagePos = menuGame.lstSousMenus[i].imagePos.move(dx, dy) + #print "position x :" , posx , " position y : ", posy , "\n" + isClick = 1 + elif event.type == pygame.MOUSEBUTTONUP : + if event.button == 3: + for i in range(menuGame.nbElemMenu): + if i > 7 : + coef = 1+(i/7) + if nbCircleMenu == 0 : + posx = round(math.cos(menuGame.beta * i)*coef*sizeIcone,0) + posy = round(math.sin(menuGame.beta* i)*coef*sizeIcone,0) + else : + posx = round(math.cos(betaBis * i)*coef*sizeIcone,0) + posy = round(math.sin(betaBis * i)*coef*sizeIcone,0) else : - betaBis = 2 * math.pi / nbCircleMenu - posx = round(math.cos(betaBis * i)*coef*sizeIcone,0) - posy = round(math.sin(betaBis * i)*coef*sizeIcone,0) - else : - posx = round(math.cos(menuGame.beta * i)*sizeIcone,0) - posy = round(math.sin(menuGame.beta* i)*sizeIcone,0) - sizex = menuGame.lstSousMenus[i].iconeMenu.get_width() - sizey = menuGame.lstSousMenus[i].iconeMenu.get_height() - dx = x + posx - (sizex/2) - dy = y + posy - (sizey/2) - menuGame.lstSousMenus[i].imagePos = menuGame.lstSousMenus[i].imagePos.move(-dx, -dy) - isClick = 0 - elif event.type == pygame.MOUSEBUTTONUP and event.button == 1: - i = 0 - newPos = nx, ny = event.pos - if isClick==1: + posx = round(math.cos(menuGame.beta * i)*sizeIcone,0) + posy = round(math.sin(menuGame.beta* i)*sizeIcone,0) + dx = x + posx - (sizex/2) + dy = y + posy - (sizey/2) + menuGame.lstSousMenus[i].imagePos = menuGame.lstSousMenus[i].imagePos.move(-dx, -dy) + isClick = 0 + elif event.button == 1 : + i = 0 + newPos = nx, ny = event.pos + if isClick==1: + while i < menuGame.nbElemMenu: + if menuGame.lstSousMenus[i].imagePos.collidepoint(newPos): + #print "Action a effectuer : "+menuGame.lstSousMenus[i].action + actionToDo = menuGame.lstSousMenus[i].action + break + i = i + 1 + elif isMenuBarOpen == 1 and (ny > menuBar.menuButtons[0].imagePos.bottom or + (ny <= menuBar.height and nx > menuBar.width ) ): + #menuBar.hideMenu() + isMenuBarOpen = 0 + elif actionToDo == "aller": + activeSet = lstSets.activeSet + #print activeSet + for zone in lstSets.__sets__[activeSet].zones.keys() : + #print lstSets.__sets__[activeSet].zones[zone] + #print newPos + if lstSets.__sets__[activeSet].zones[zone].RectZone.collidepoint(newPos) : + lstSets.activeSet = lstSets.__sets__[activeSet].exitZones[zone] + try: + background = pygame.image.load(lstSets.__sets__[lstSets.activeSet].assets[0].file) + except pygame.error, message: + print "impossible d'ouvrir l'image" + raise SystemExit, message + break + elif isClick ==1 : + if event.type == pygame.MOUSEMOTION : + i = 0 + newPos = nx, ny = event.pos while i < menuGame.nbElemMenu: if menuGame.lstSousMenus[i].imagePos.collidepoint(newPos): - #print "Action a effectuer : "+menuGame.lstSousMenus[i].action - actionToDo = menuGame.lstSousMenus[i].action break i = i + 1 - elif isMenuBarOpen == 1 and (ny > menuBar.menuButtons[0].imagePos.bottom or - (ny <= menuBar.height and nx > menuBar.width ) ): - #menuBar.hideMenu() - isMenuBarOpen = 0 - elif actionToDo == "aller": - activeSet = lstSets.activeSet - for zone in lstSets.__sets__[activeSet].zones : - if lstSets.__sets__[activeSet].zones[zone].RectZone.collidepoint(newPos) : - lstSets.activeSet = lstSets.__sets__[activeSet].exitZones[zone] - try: - background = pygame.image.load(lstSets.__sets__[lstSets.activeSet].assets[0].file) - except pygame.error, message: - print "impossible d'ouvrir l'image" - raise SystemExit, message - break - - elif event.type == pygame.MOUSEMOTION and isClick ==1: - i = 0 - newPos = nx, ny = event.pos - while i < menuGame.nbElemMenu: - if menuGame.lstSousMenus[i].imagePos.collidepoint(newPos): - break - i = i + 1 - if i < menuGame.nbElemMenu: - imageActive = i - else : - imageActive = -1 - if isMenuBarOpen== 1 : - for unMenu in menuBar.menuButtons : - screen.blit(unMenu.image, unMenu.imagePos) - if isClick == 1: + if i < menuGame.nbElemMenu: + imageActive = i + else : + imageActive = -1 for i in range(menuGame.nbElemMenu): if i==imageActive : screen.blit(menuGame.lstSousMenus[i].iconeActiveMenu, menuGame.lstSousMenus[i].imagePos) else : screen.blit(menuGame.lstSousMenus[i].iconeMenu, menuGame.lstSousMenus[i].imagePos) - #pygame.display.update() pygame.display.flip() \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jo...@us...> - 2010-06-16 20:01:00
|
Revision: 16 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=16&view=rev Author: johnb0b Date: 2010-06-16 20:00:51 +0000 (Wed, 16 Jun 2010) Log Message: ----------- - Correction du bug sous linux du a la case dans les fichiers xml - Correction du probl?\195?\168me de l'event pour les zones cliquables - Suppression de traces ( de pneu!, h?\195?\169h?\195?\169h?\195?\169h?\195?\169) Modified Paths: -------------- PACEmaker/exemples/actionMenu.xml PACEmaker/src/SetParser.py PACEmaker/src/apprentissage1.py PACEmaker/src/menuParser.py PACEmaker/src/ui/__init__.pyc PACEmaker/src/ui/menu.pyc Modified: PACEmaker/exemples/actionMenu.xml =================================================================== --- PACEmaker/exemples/actionMenu.xml 2010-06-13 15:53:48 UTC (rev 15) +++ PACEmaker/exemples/actionMenu.xml 2010-06-16 20:00:51 UTC (rev 16) @@ -10,7 +10,7 @@ <actions> <action name="aller"> <icone>../ressources/images/aller.png</icone> - <active>../ressources/images/AllerActif.png</active> + <active>../ressources/images/allerActif.png</active> </action> <action name="regarder"> <icone>../ressources/images/regarder.png</icone> @@ -26,7 +26,7 @@ </action> <action name="aller"> <icone>../ressources/images/aller.png</icone> - <active>../ressources/images/AllerActif.png</active> + <active>../ressources/images/allerActif.png</active> </action> <action name="regarder"> <icone>../ressources/images/regarder.png</icone> @@ -42,7 +42,7 @@ </action> <action name="aller"> <icone>../ressources/images/aller.png</icone> - <active>../ressources/images/AllerActif.png</active> + <active>../ressources/images/allerActif.png</active> </action> <action name="regarder"> <icone>../ressources/images/regarder.png</icone> Modified: PACEmaker/src/SetParser.py =================================================================== --- PACEmaker/src/SetParser.py 2010-06-13 15:53:48 UTC (rev 15) +++ PACEmaker/src/SetParser.py 2010-06-16 20:00:51 UTC (rev 16) @@ -24,7 +24,7 @@ def readXml(self, xml_path): self.doc = xml.dom.minidom.parse(xml_path) - #recup\xE9ration du premier noeud (racine) du fichier xml + #recup�ration du premier noeud (racine) du fichier xml def getRootElement(self): if self.__currentNode__ == None: self.__currentNode__ = self.doc.documentElement @@ -46,8 +46,8 @@ for asset in assets.getElementsByTagName("asset"): s.addAsset(asset) s.zones = {} - z = Zone() for zone in set.getElementsByTagName("zones")[0].getElementsByTagName("zone") : + z = Zone() x = int(self.getText(zone.getAttributeNode("initX"))) y = int(self.getText(zone.getAttributeNode("initY"))) width = int(self.getText(zone.getAttributeNode("width"))) Modified: PACEmaker/src/apprentissage1.py =================================================================== --- PACEmaker/src/apprentissage1.py 2010-06-13 15:53:48 UTC (rev 15) +++ PACEmaker/src/apprentissage1.py 2010-06-16 20:00:51 UTC (rev 16) @@ -9,7 +9,7 @@ from pygame.locals import * __author__ = "Vincent" -__date__ = "$1 f\xE8vr. 2010 21:52:29$" +__date__ = "$1 f�vr. 2010 21:52:29$" if __name__ == "__main__": print "Hello World" @@ -23,7 +23,7 @@ persoPath = imagePath+"PersoTest.png" - #creation de l'instance du menu en passant le fichier xml \xE0 charger + #creation de l'instance du menu en passant le fichier xml � charger menuGame = Menu('../exemples/actionMenu.xml') menuBar = MenuBar('../exemples/menuBar.xml') lstSets = SetParser('../exemples/set.xml') @@ -67,11 +67,11 @@ clock = pygame.time.Clock() running = 1 - # sizeIcone repr\xE9sente et l'\xE9chelle de distance qui permettra d'agrandir le cercle + # sizeIcone repr�sente et l'�chelle de distance qui permettra d'agrandir le cercle sizeIcone = 1.5*menuGame.lstSousMenus[0].iconeMenu.get_width() - # isClick : permet de soit si on bouton est maintenu enfonc\xE9 + # isClick : permet de soit si on bouton est maintenu enfonc� isClick = 0 - # imageActive permet de savoir si un sous menu doit \xEAtre affich\xE9 dans son \xE9tat actif ou non (quand le curseur est dessus) + # imageActive permet de savoir si un sous menu doit �tre affich� dans son �tat actif ou non (quand le curseur est dessus) # Sa valeur contient l'indice de la liste de sous menu, ou -1 si aucun sous menus n'a le curseur par dessus imageActive = -1 actionToDo = "aller" @@ -79,18 +79,18 @@ while running: #on affiche dans un premier temps la scene screen.blit(background, backgroundRect) - #si \xE9v\xE9nement est rencontr\xE9... + #si �v�nement est rencontr�... event = pygame.event.poll() - if event.type == pygame.QUIT: #si on demande de quitter on arr\xEAte l'executiondu programme + if event.type == pygame.QUIT: #si on demande de quitter on arr�te l'executiondu programme running = 0 elif event.type is KEYDOWN and event.key == 282 and isMenuBarOpen == 0 : #menuBar.showMenu() isMenuBarOpen = 1 - elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 3: #si le bouton droit est enfonc\xE9 ... - #on r\xE9cup\xE8re les coordonn\xE9ees de la souris + elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 3: #si le bouton droit est enfonc� ... + #on r�cup�re les coordonn�ees de la souris pos = x, y = event.pos - # On place les elements du menu de fa\xE7on circulaire + # On place les elements du menu de fa�on circulaire for i in range(menuGame.nbElemMenu): if i > 7 : nbCircleMenu = menuGame.nbElemMenu%8 @@ -150,9 +150,7 @@ elif actionToDo == "aller": activeSet = lstSets.activeSet for zone in lstSets.__sets__[activeSet].zones : - print lstSets.__sets__[activeSet].zones if lstSets.__sets__[activeSet].zones[zone].RectZone.collidepoint(newPos) : - print "collisionnnn" lstSets.activeSet = lstSets.__sets__[activeSet].exitZones[zone] try: background = pygame.image.load(lstSets.__sets__[lstSets.activeSet].assets[0].file) Modified: PACEmaker/src/menuParser.py =================================================================== --- PACEmaker/src/menuParser.py 2010-06-13 15:53:48 UTC (rev 15) +++ PACEmaker/src/menuParser.py 2010-06-16 20:00:51 UTC (rev 16) @@ -1,5 +1,5 @@ #-*- coding:Utf-8 -*- -# Fichier menu.py permettant la cr\xE9ation du menu depuis un fichier xml +# Fichier menu.py permettant la cr�ation du menu depuis un fichier xml import math import pygame from pygame.locals import * @@ -37,7 +37,7 @@ def initMenu(self): - #Si le menu est d\xE9j\xE0 charg\xE9 on ne relit pas le fichier xml + #Si le menu est d�j� charg� on ne relit pas le fichier xml if self.lstSousMenus != None: return self.lstSousMenus = [] Modified: PACEmaker/src/ui/__init__.pyc =================================================================== (Binary files differ) Modified: PACEmaker/src/ui/menu.pyc =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vin...@us...> - 2010-06-13 15:53:54
|
Revision: 15 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=15&view=rev Author: vincentniakos Date: 2010-06-13 15:53:48 +0000 (Sun, 13 Jun 2010) Log Message: ----------- Un comit de la nouvelle structure. D?\195?\169sormais on charge le menu des actions par le fichier xml, ainsi que pour les sets. Une barre de menu a ?\195?\169t?\195?\169 ajout?\195?\169e ?\195?\169galement. Elle s'ouvre par la touche "f1" et se ferme quand on clique en dehors de la zone Pour le moment il y a un leger bug sur l'evenement click quand on a choisit l'action "aller" (l'icone verte), en effet seule la zone 2 fonctionne car il y a une erreur dans l'initialisation des sets avec les tableaux assosiatifs. Added Paths: ----------- PACEmaker/ressources/images/aller.png PACEmaker/ressources/images/allerActif.png PACEmaker/ressources/images/menuGame.png PACEmaker/ressources/images/menuHelp.png PACEmaker/ressources/images/menuOption.png PACEmaker/ressources/images/menuScreen.png PACEmaker/ressources/images/parler1.png PACEmaker/ressources/images/parler2.png PACEmaker/ressources/images/persoTest.png PACEmaker/ressources/images/regarder.png PACEmaker/ressources/images/regarder2.png PACEmaker/ressources/images/regarderActif.png PACEmaker/ressources/images/scene2.png PACEmaker/ressources/images/scene3.png PACEmaker/ressources/images/sceneStart.png PACEmaker/ressources/images/testActive.png Added: PACEmaker/ressources/images/aller.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/aller.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/allerActif.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/allerActif.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/menuGame.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/menuGame.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/menuHelp.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/menuHelp.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/menuOption.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/menuOption.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/menuScreen.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/menuScreen.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/parler1.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/parler1.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/parler2.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/parler2.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/persoTest.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/persoTest.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/regarder.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/regarder.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/regarder2.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/regarder2.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/regarderActif.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/regarderActif.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/scene2.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/scene2.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/scene3.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/scene3.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/sceneStart.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/sceneStart.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: PACEmaker/ressources/images/testActive.png =================================================================== (Binary files differ) Property changes on: PACEmaker/ressources/images/testActive.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vin...@us...> - 2010-06-13 15:52:15
|
Revision: 14 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=14&view=rev Author: vincentniakos Date: 2010-06-13 15:52:09 +0000 (Sun, 13 Jun 2010) Log Message: ----------- Un comit de la nouvelle structure. D?\195?\169sormais on charge le menu des actions par le fichier xml, ainsi que pour les sets. Une barre de menu a ?\195?\169t?\195?\169 ajout?\195?\169e ?\195?\169galement. Elle s'ouvre par la touche "f1" et se ferme quand on clique en dehors de la zone Pour le moment il y a un leger bug sur l'evenement click quand on a choisit l'action "aller" (l'icone verte), en effet seule la zone 2 fonctionne car il y a une erreur dans l'initialisation des sets avec les tableaux assosiatifs. Modified Paths: -------------- PACEmaker/exemples/set.xml Added Paths: ----------- PACEmaker/exemples/actionMenu.xml PACEmaker/exemples/menuBar.xml Removed Paths: ------------- PACEmaker/exemples/characters.xml PACEmaker/exemples/objects.xml PACEmaker/exemples/screenplay.xml Added: PACEmaker/exemples/actionMenu.xml =================================================================== --- PACEmaker/exemples/actionMenu.xml (rev 0) +++ PACEmaker/exemples/actionMenu.xml 2010-06-13 15:52:09 UTC (rev 14) @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + Document : actionsMenu.xml + Created on : 25 février 2010, 22:01 + Author : Vincent + Description: Purpose of the document follows. +--> + +<actions> + <action name="aller"> + <icone>../ressources/images/aller.png</icone> + <active>../ressources/images/AllerActif.png</active> + </action> + <action name="regarder"> + <icone>../ressources/images/regarder.png</icone> + <active>../ressources/images/regarderActif.png</active> + </action> + <action name="penser"> + <icone>../ressources/images/icone3.png</icone> + <active>../ressources/images/testActive.png</active> + </action> + <action name="parler"> + <icone>../ressources/images/parler1.png</icone> + <active>../ressources/images/testActive.png</active> + </action> + <action name="aller"> + <icone>../ressources/images/aller.png</icone> + <active>../ressources/images/AllerActif.png</active> + </action> + <action name="regarder"> + <icone>../ressources/images/regarder.png</icone> + <active>../ressources/images/regarderActif.png</active> + </action> + <action name="penser"> + <icone>../ressources/images/icone3.png</icone> + <active>../ressources/images/testActive.png</active> + </action> + <action name="parler"> + <icone>../ressources/images/parler1.png</icone> + <active>../ressources/images/testActive.png</active> + </action> + <action name="aller"> + <icone>../ressources/images/aller.png</icone> + <active>../ressources/images/AllerActif.png</active> + </action> + <action name="regarder"> + <icone>../ressources/images/regarder.png</icone> + <active>../ressources/images/regarderActif.png</active> + </action> + <action name="penser"> + <icone>../ressources/images/icone3.png</icone> + <active>../ressources/images/testActive.png</active> + </action> + <action name="parler"> + <icone>../ressources/images/parler1.png</icone> + <active>../ressources/images/testActive.png</active> + </action> +</actions> \ No newline at end of file Deleted: PACEmaker/exemples/characters.xml =================================================================== --- PACEmaker/exemples/characters.xml 2010-06-13 15:51:28 UTC (rev 13) +++ PACEmaker/exemples/characters.xml 2010-06-13 15:52:09 UTC (rev 14) @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- - Document : characters.xml - Created on : 1 février 2010, 20:50 - Author : eric - Description: - This document shows an example of what could be a characters.xml file ---> - - -<characters> - <character name="John Bob" image="path/to/file2.png"> <!-- image représenterait une sorte d'avatar du perso --> - - <animations> - <animation name="Standing" spriteFile="path/to/file.png" repeat="yes" /> - <animation name="Walking" spriteFile="path/to/file2.png" repeat="yes" /> - <animation name="Jumping" spriteFile="path/to/file.png" repeat="no" /> - <!-- Etc, etc... --> - </animations> - - <!-- AMHA, il faudrait prévoir un système d'inventaire pour chaque perso --> - <inventory capacity="10"> <!-- Pourquoi pas? Avec 0 pour un inventaire "infini" --> - <object name="Gants" number="2"/> - <object name="Poire de lavement" number="3"/> - <object name="Friteuse" number="0"/> - <object name="Scie sauteuse" number="0"/> - <object name="String" number="0" givable="false"/> - <!-- - Avec un système comme ça, on peut autoriser ou non un joueur a filé des trucs a un perso. - Du style on file veut filer une brosse a dent a un édenté, il t'envoie chier. - Je pense que ce système permetra de rendre plus facile un système de quète avec les persos, - genre une liste d'objet à donner - --> - </inventory> - - - - <!-- - Ici, on tente de gérer les différentes interactions possible entre le perso et d'autre trucs - et là, on va se marrer. - - Genre va falloir imaginer un petit language de script pour organiser tout ça je crois, enfin, c'est à voir - --> - <interactions> - <interaction from="PLAYER" action="push" do="action:fall"/> - <interaction from="PLAYER" action="use" do="tell:Pierre:chapitre12:verset14"/> - <interaction from="PLAYER" action="use:Poire de lavement" do="say:dialogueXX:sentenceYY"/> - <interaction from="PLAYER" action="say:dialogue1:sentence1" do="say:dialogue1:sentence2"/> - <!-- Bref, la, je sèche un peu de comment on va faire pour associer des actions face à quelque chose --> - </interactions> - - - - - <!-- La, je sèche vraiment... Faudra voir ça ensemble... --> - <actions> - <action name="fall"> - - <!-- - Je pense qu'il faudrait foutre une séquence d'action plus "simple". Il faudra également définir - une liste d'action "primaire" comme marcher, sauter, se baisser, enfin, je sais pas trop. - A réfléchir encore - --> - - - </action> - </actions> - - - </character> - - - <!-- - Bon, je pense que c'est loin d'être fini à ce niveau là, qu'il y a plein de remarque à faire et de truc à revoir - donc surtout n'hésitez pas! - --> - - - - - - - -</characters> Added: PACEmaker/exemples/menuBar.xml =================================================================== --- PACEmaker/exemples/menuBar.xml (rev 0) +++ PACEmaker/exemples/menuBar.xml 2010-06-13 15:52:09 UTC (rev 14) @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="windows-1252"?> + +<!-- + Document : menuBar.xml + Created on : 13 juin 2010, 01:38 + Author : Vincent + Description: + Purpose of the document follows. +--> + +<menus> + <menu action="test"> + <image>../ressources/images/menuGame.png</image> + <description>Le menu Game</description> + </menu> + <menu action="option"> + <image>../ressources/images/menuOption.png</image> + <description>Le menu d'option</description> + </menu> + <menu action="changeDisplay"> + <image>../ressources/images/menuScreen.png</image> + <description>Le menu d'affichage</description> + </menu> + <menu action="help"> + <image>../ressources/images/menuHelp.png</image> + <description>Le menu Aide</description> + </menu> +</menus> \ No newline at end of file Deleted: PACEmaker/exemples/objects.xml =================================================================== --- PACEmaker/exemples/objects.xml 2010-06-13 15:51:28 UTC (rev 13) +++ PACEmaker/exemples/objects.xml 2010-06-13 15:52:09 UTC (rev 14) @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="windows-1252"?> - -<!-- - Document : objects.xml - Created on : 7 f\xE9vrier 2010, 18:44 - Author : Eric - Description: - Purpose of the document follows. ---> - -<objects> - - <object name="friteuse" displayName="Friteuse" pickable="yes" icon="friteuse.png"> - - - - </object> - -</objects> Deleted: PACEmaker/exemples/screenplay.xml =================================================================== --- PACEmaker/exemples/screenplay.xml 2010-06-13 15:51:28 UTC (rev 13) +++ PACEmaker/exemples/screenplay.xml 2010-06-13 15:52:09 UTC (rev 14) @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="windows-1252"?> - -<!-- - Document : scenario.xml - Created on : 7 f\xE9vrier 2010, 17:41 - Author : Vincent - Description: - Purpose of the document follows. ---> - - -<screenplay name="screenplay1"> - <!-- - the title attribute defines the chapter's title - isFinished notify if the player has completely accomplished the chapter - --> - <chapters title="title1" isFinished="false"> - <chapter title="title1" set="set1"> - <!-- - objectives define the differents missions that can be accomplished - some objectives can be optional, then not prevent player continuing the game - --> - <objectives> - <objective accomplished="false"> - <description> - - </description> - </objective> - </objectives> - </chapter> - <chapter> - -</screenplay> Modified: PACEmaker/exemples/set.xml =================================================================== --- PACEmaker/exemples/set.xml 2010-06-13 15:51:28 UTC (rev 13) +++ PACEmaker/exemples/set.xml 2010-06-13 15:52:09 UTC (rev 14) @@ -10,17 +10,14 @@ --> <sets> - <set name="set1"> - - + <set name="START"> <!-- Description permettant d'avoir une aide pour une hypot\xE9tique interface de d\xE9veloppement des jeux --> <description> - Set repr\xE9sentant une sc\xE8ne avec une porte, un pont et une fenetre + Scene de test avec un seul layer </description> - <!-- Les entryZones correspondent aux zones par lequelles le h\xE9ros peut arriver, en fonction de son set de de d\xE9part @@ -28,21 +25,18 @@ du set "source" --> <entryZones> - <entryZone zoneName="porte" from="START" /> <!-- "START" serait une sorte de constante pour d\xE9finir le d\xE9but du jeu --> - <entryZone zoneName="fenetre" from="set2" /> + <entryZone zoneName="porteLeft" from="set2" ></entryZone> + <entryZone zoneName="porteRight" from="END" ></entryZone> </entryZones> - - <!-- Les exitZones correspondent aux zones de sorties du set permettant donc d'atteindre aux autres tableau On y d\xE9finit le nom de zone, et le nom du set "cible" --> <exitZones> - <exitZone zoneName="fenetre" to="set2"/> - <exitZone zoneName="pont" to="END"/> <!-- Pourquoi ne pas d\xE9finir constante de fin de jeu ? --> + <exitZone zoneName="porteLeft" to="set2" ></exitZone> + <exitZone zoneName="porteRight" to="END" ></exitZone> </exitZones> - <!-- Les assets correspondent aux d\xE9cors. Puisqu'on peut mettre plusieurs d\xE9cors, il faut en d\xE9finir l'ordre avec l'attribut "depth". @@ -50,20 +44,51 @@ Exemple ici: le truc.png sera "avant" le machin.png --> <assets> - <asset file="truc.png" depth="0" /> - <asset file="truc.png" depth="2" /> + <asset file="../ressources/images/sceneStart.png" depth="0"></asset> </assets> - - <!-- - D\xE9finitions des diff\xE9rentes zones du set. Carr\xE9 pour le moment, - mais \xE0 voir si on ne peut pas faire un truc mieux foutu... - --> + <zones> + <zone name="porteLeft" initX="0" initY="360" width="30" height="110"></zone> + <zone name="porteRight" initX="610" initY="360" width="30" height="110"></zone> + </zones> + </set> + <set name="set2"> + <description> + Scene de test ni start ni end avec un seul layer + </description> + <entryZones> + <entryZone zoneName="porteLeft" from="END" ></entryZone> + <entryZone zoneName="porteRight" from="START" ></entryZone> <!-- "START" serait une sorte de constante pour d\xE9finir le d\xE9but du jeu --> + </entryZones> + <exitZones> + <exitZone zoneName="porteLeft" to="END" ></exitZone> + <exitZone zoneName="porteRight" to="START" ></exitZone> + </exitZones> + <assets> + <asset file="../ressources/images/scene2.png" depth="0" ></asset> + </assets> <zones> - <zone name="porte" from="0;0" to="15;20" /> - <zone name="fenetre" from="100;100" to="110;240" /> - <zone name="pont" from="50;13" to="60;43" /> + <zone name="porteLeft" initX="0" initY="360" width="30" height="110"></zone> + <zone name="porteRight" initX="610" initY="360" width="30" height="110"></zone> </zones> - </set> - + <set name="END"> + <description> + Scene de test END avec un seul layer + </description> + <entryZones> + <entryZone zoneName="porteLeft" from="START" ></entryZone> + <entryZone zoneName="porteRight" from="set2" ></entryZone> + </entryZones> + <exitZones> + <exitZone zoneName="porteLeft" to="START" ></exitZone> + <exitZone zoneName="porteRight" to="set2" ></exitZone> + </exitZones> + <assets> + <asset file="../ressources/images/scene3.png" depth="0" ></asset> + </assets> + <zones> + <zone name="porteLeft" initX="0" initY="360" width="30" height="110"></zone> + <zone name="porteRight" initX="610" initY="360" width="30" height="110"></zone> + </zones> + </set> </sets> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vin...@us...> - 2010-06-13 15:51:35
|
Revision: 13 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=13&view=rev Author: vincentniakos Date: 2010-06-13 15:51:28 +0000 (Sun, 13 Jun 2010) Log Message: ----------- Un comit de la nouvelle structure. D?\195?\169sormais on charge le menu des actions par le fichier xml, ainsi que pour les sets. Une barre de menu a ?\195?\169t?\195?\169 ajout?\195?\169e ?\195?\169galement. Elle s'ouvre par la touche "f1" et se ferme quand on clique en dehors de la zone Pour le moment il y a un leger bug sur l'evenement click quand on a choisit l'action "aller" (l'icone verte), en effet seule la zone 2 fonctionne car il y a une erreur dans l'initialisation des sets avec les tableaux assosiatifs. Modified Paths: -------------- PACEmaker/src/apprentissage1.py PACEmaker/src/apprentissage2.py Added Paths: ----------- PACEmaker/src/Asset.py PACEmaker/src/Set.py PACEmaker/src/SetParser.py PACEmaker/src/Zone.py PACEmaker/src/animation.py PACEmaker/src/menuBarParser.py PACEmaker/src/menuParser.py Added: PACEmaker/src/Asset.py =================================================================== --- PACEmaker/src/Asset.py (rev 0) +++ PACEmaker/src/Asset.py 2010-06-13 15:51:28 UTC (rev 13) @@ -0,0 +1,23 @@ +#-*- coding:Utf-8 -*- +# To change this template, choose Tools | Templates +# and open the template in the editor. + +__author__="Eric Mercier <mer...@gm...>" +__date__ ="$15 févr. 2010 18:44:25$" + +class Asset: + + depth = None + file = None + + def __init__(self): + """Documentation""" + self.depth = None + self.file = None + + def to_string(self): + """Documentation""" + response = "Depth: " + self.depth + response+= "\nFile: " + self.file + return response + \ No newline at end of file Added: PACEmaker/src/Set.py =================================================================== --- PACEmaker/src/Set.py (rev 0) +++ PACEmaker/src/Set.py 2010-06-13 15:51:28 UTC (rev 13) @@ -0,0 +1,59 @@ +#-*- coding:Utf-8 -*- +from Asset import * +from xml.dom import * + +__author__ = "Eric Mercier <mer...@gm...>" +__date__ = "$14 févr. 2010 22:08:08$" + + +class Set: + name = None + description = None + entryZones = None + exitZones = None + assets = None + zones = None + + def __init__(self): + """Constructeur d'un set""" + self.name = None + self.description = None + self.entryZones = {} + self.exitZones = {} + + def addAsset(self, nodeAsset): + if nodeAsset.nodeType == nodeAsset.ELEMENT_NODE : + asset = Asset() + try: + asset.depth = self.getText(nodeAsset.getAttributeNode("depth")) + asset.file = self.getText(nodeAsset.getAttributeNode("file")) + except: + print 'Un des TAGS suivant est manquant : depth, file' + self.assets.append(asset) + + def getText(self, node): + return node.childNodes[0].nodeValue + + + def toString(self): + """Documentation""" + response = "Name: " + self.name + + response += "\nDescription: " + self.description + +# response.append("Entry Zones: ") +# response.append(self.entry_zones.to_string()) +# +# response.append("Entry Zones: ") +# reponse.append(self.entry_zones.to_string()) +# +# response.append("Exit Zones: ") +# reponse.append(self.exit_zones.to_string()) +# +# response.append("Zones: ") +# response.append(self.zones.to_string()) +# +# response.append("Assets: ") +# response.append(self.assets.to_string()) + + return response Added: PACEmaker/src/SetParser.py =================================================================== --- PACEmaker/src/SetParser.py (rev 0) +++ PACEmaker/src/SetParser.py 2010-06-13 15:51:28 UTC (rev 13) @@ -0,0 +1,66 @@ +#-*- coding:Utf-8 -*- +from Set import Set +from Zone import Zone +import pygame +from pygame.locals import * +import xml.dom.minidom + +__author__ = "Ong Vincent <Vin...@gm...>" +__date__ = "$11 Juin. 2010 19:00:00$" + + +class SetParser: + __currentNode__ = None + # __sets__ = listes des scenes + __sets__ = None + # activeSet : permet de connaitre le set courant + activeSet = "START" + # initialisation de la classe + def __init__(self, xml_path): + self.readXml(xml_path) + self.initSets() + + #chargement du fichier xml contenant les sets + def readXml(self, xml_path): + self.doc = xml.dom.minidom.parse(xml_path) + + #recup\xE9ration du premier noeud (racine) du fichier xml + def getRootElement(self): + if self.__currentNode__ == None: + self.__currentNode__ = self.doc.documentElement + return self.__currentNode__ + + #initialisation de la listes des sets + def initSets(self): + if self.__sets__ != None: + return + self.__sets__ = {} + for set in self.getRootElement().getElementsByTagName("set"): + if set.nodeType == set.ELEMENT_NODE: + s = Set() + try: + s.name = self.getText(set.getAttributeNode("name")) + s.description = set.getElementsByTagName("description") + s.assets = [] + for assets in set.getElementsByTagName("assets"): + for asset in assets.getElementsByTagName("asset"): + s.addAsset(asset) + s.zones = {} + z = Zone() + for zone in set.getElementsByTagName("zones")[0].getElementsByTagName("zone") : + x = int(self.getText(zone.getAttributeNode("initX"))) + y = int(self.getText(zone.getAttributeNode("initY"))) + width = int(self.getText(zone.getAttributeNode("width"))) + height = int(self.getText(zone.getAttributeNode("height"))) + z.RectZone = pygame.Rect(x, y, width, height) + s.zones[self.getText(zone.getAttributeNode("name"))] = z + for exitZone in set.getElementsByTagName("exitZones")[0].getElementsByTagName("exitZone") : + s.exitZones[self.getText(exitZone.getAttributeNode("zoneName"))] = self.getText(exitZone.getAttributeNode("to")) + self.__sets__[self.getText(set.getAttributeNode("name"))] = s + except Exception as inst: + print "Erreur :", inst + #self.__sets__.append(s) + return self.__sets__ + + def getText(self, node): + return node.childNodes[0].nodeValue Added: PACEmaker/src/Zone.py =================================================================== --- PACEmaker/src/Zone.py (rev 0) +++ PACEmaker/src/Zone.py 2010-06-13 15:51:28 UTC (rev 13) @@ -0,0 +1,12 @@ +#-*- coding: UTf-8 -*- +# To change this template, choose Tools | Templates +# and open the template in the editor. + +__author__="Vincent" +__date__ ="$13 juin 2010 14:23:58$" + +class Zone : + RectZone = None + + def __init__(self): + pass \ No newline at end of file Added: PACEmaker/src/animation.py =================================================================== --- PACEmaker/src/animation.py (rev 0) +++ PACEmaker/src/animation.py 2010-06-13 15:51:28 UTC (rev 13) @@ -0,0 +1,103 @@ +#! /usr/bin/python + +# To change this template, choose Tools | Templates +# and open the template in the editor. + +__author__="Vincent" +__date__ ="$13 juin 2010 01:14:04$" + +import pygame, sys, time +from pygame.locals import * + +# set up pygame +pygame.init() + +# set up the window +WINDOWWIDTH = 400 +WINDOWHEIGHT = 400 +windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32) +pygame.display.set_caption('Animation') + +# set up direction variables +DOWNLEFT = 1 +DOWNRIGHT = 3 +UPLEFT = 7 +UPRIGHT = 9 + +MOVESPEED = 4 + +# set up the colors +BLACK = (0, 0, 0) +RED = (255, 0, 0) +GREEN = (0, 255, 0) +BLUE = (0, 0, 255) + +# set up the block data structure +b1 = {'rect':pygame.Rect(300, 80, 50, 100), 'color':RED, 'dir':UPRIGHT} +b2 = {'rect':pygame.Rect(200, 200, 20, 20), 'color':GREEN, 'dir':UPLEFT} +b3 = {'rect':pygame.Rect(100, 150, 60, 60), 'color':BLUE, 'dir':DOWNLEFT} +blocks = [b1, b2, b3] + +# run the game loop +while True: + # check for the QUIT event + for event in pygame.event.get(): + if event.type == QUIT: + pygame.quit() + sys.exit() + + # draw the black background onto the surface + windowSurface.fill(BLACK) + + for b in blocks: + # move the block data structure + if b['dir'] == DOWNLEFT: + b['rect'].left -= MOVESPEED + b['rect'].top += MOVESPEED + if b['dir'] == DOWNRIGHT: + b['rect'].left += MOVESPEED + b['rect'].top += MOVESPEED + if b['dir'] == UPLEFT: + b['rect'].left -= MOVESPEED + b['rect'].top -= MOVESPEED + if b['dir'] == UPRIGHT: + b['rect'].left += MOVESPEED + b['rect'].top -= MOVESPEED + + # check if the block has move out of the window + if b['rect'].top < 0: + # block has moved past the top + if b['dir'] == UPLEFT: + b['dir'] = DOWNLEFT + if b['dir'] == UPRIGHT: + b['dir'] = DOWNRIGHT + if b['rect'].bottom > WINDOWHEIGHT: + # block has moved past the bottom + if b['dir'] == DOWNLEFT: + b['dir'] = UPLEFT + if b['dir'] == DOWNRIGHT: + b['dir'] = UPRIGHT + if b['rect'].left < 0: + # block has moved past the left side + if b['dir'] == DOWNLEFT: + b['dir'] = DOWNRIGHT + if b['dir'] == UPLEFT: + b['dir'] = UPRIGHT + if b['rect'].right > WINDOWWIDTH: + # block has moved past the right side + if b['dir'] == DOWNRIGHT: + b['dir'] = DOWNLEFT + if b['dir'] == UPRIGHT: + b['dir'] = UPLEFT + + # draw the block onto the surface + pygame.draw.rect(windowSurface, b['color'], b['rect']) + + # draw the window onto the screen + pygame.display.update() + time.sleep(0.02) + + + +if __name__ == "__main__": + print "Hello World"; Modified: PACEmaker/src/apprentissage1.py =================================================================== --- PACEmaker/src/apprentissage1.py 2010-02-27 17:50:14 UTC (rev 12) +++ PACEmaker/src/apprentissage1.py 2010-06-13 15:51:28 UTC (rev 13) @@ -1,218 +1,186 @@ #-*- coding:Utf-8 -*- # To change this template, choose Tools | Templates # and open the template in the editor. -from pygame import cursors +from menuBarParser import * +from menuParser import * +from SetParser import * import math -from pygame import mouse import pygame from pygame.locals import * __author__ = "Vincent" -__date__ = "$1 f�vr. 2010 21:52:29$" +__date__ = "$1 f\xE8vr. 2010 21:52:29$" if __name__ == "__main__": - print "Hello World" - colorkey = None - icones = [] - #pygame.init() + print "Hello World" + colorkey = None + menuGame = None + icones = [] + #pygame.init() - #decorPath = os.path.join(os.getcwd(), '\\ressources\\images\\decord1.png') - decorPath = "../ressources/images/decord1.png" - imagePath = "../ressources/images/" - print __file__ - print decorPath - try: - background = pygame.image.load(decorPath) - except pygame.error, message: - print "impossible d'ouvrir l'image" - raise SystemExit, message - backgroundRect = background.get_rect() - size = (width, height) = background.get_size() - screen = pygame.display.set_mode(size) - if colorkey is not None: - if colorkey is -1: - colorkey = background.get_at((0, 0)) - background.set_colorkey(colorkey, RLEACCEL) - running = 1 - icone_rect = [] - lstimage = ("icone1.png", "icone2.png", "icone3.png", "icone4.png") - beta = 2 * math.pi / 4 - for i in range(4): - icones.append(pygame.image.load(imagePath + lstimage[i])) - icone_rect.append(icones[i].get_rect()) - isClick = 0 - while running: - screen.blit(background, backgroundRect) - event = pygame.event.poll() - if event.type == pygame.QUIT: - running = 0 - elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 3: - print "mouse at (%d, %d)" % event.pos - pos = x, y = event.pos - for i in range(4): - posx = round(math.cos(beta * i)*50,0) - posy = round(math.sin(beta * i)*50,0) - dx = x + posx - 32 - dy = y + posy - 32 - icone_rect[i] = icone_rect[i].move(dx, dy) - print "position x :" , posx , " position y : ", posy , "\n" - isClick = 1 - elif event.type == pygame.MOUSEBUTTONUP and event.button == 3: - for i in range(4): - posx = round(math.cos(beta * i)*50,0) - posy = round(math.sin(beta * i)*50,0) - dx = x + posx - 32 - dy = y + posy - 32 - icone_rect[i] = icone_rect[i].move(-dx, -dy) - isClick = 0 - elif event.type == pygame.MOUSEMOTION and isClick ==1: - print "ca bouge la souris" - i = 0 - newPos = nx, ny = event.pos - #mouseRec = Rect(5, 5, nx, ny) - while i < 4: - #if mouseRec.colliderect(icone_rect[i]): - if icone_rect[i].collidepoint(newPos): - break - i = i + 1 - if i < 4: - print "collision avec l'image : ", i+1 + imagePath = '../ressources/images/' + decorPath = imagePath+"decord1.png" + persoPath = imagePath+"PersoTest.png" - if isClick == 1: - for i in range(4): - screen.blit(icones[i], icone_rect[i]) - - pygame.display.flip() + #creation de l'instance du menu en passant le fichier xml \xE0 charger + menuGame = Menu('../exemples/actionMenu.xml') + menuBar = MenuBar('../exemples/menuBar.xml') + lstSets = SetParser('../exemples/set.xml') + + # Affiche dans la console le fichier courant avec son chemin absolu + print __file__ -""" + #chargement de la scene + try: + background = pygame.image.load(lstSets.__sets__[lstSets.activeSet].assets[0].file) + except pygame.error, message: + print "impossible d'ouvrir l'image" + raise SystemExit, message + backgroundRect = background.get_rect() + size = (width, height) = background.get_size() + screen = pygame.display.set_mode(size) + if colorkey is not None: + if colorkey is -1: + colorkey = background.get_at((0, 0)) + background.set_colorkey(colorkey, RLEACCEL) - def punch(self, target): - "Renvoi true si le poing entre en collision avec la cible" - if not self.punching: - self.punching = 1 - hitbox = self.rect.inflate(-5, -5) - return hitbox.colliderect(target.rect) -class Personne: + """try: + background = pygame.image.load(decorPath) + except pygame.error, message: + print "impossible d'ouvrir l'image" + raise SystemExit, message + backgroundRect = background.get_rect() + size = (width, height) = background.get_size() + screen = pygame.display.set_mode(size) + if colorkey is not None: + if colorkey is -1: + colorkey = background.get_at((0, 0)) + background.set_colorkey(colorkey, RLEACCEL) + """ - nom = None - prenom = None + #isMenuBarOpen :permet de savoir si la barre de menu est ouverte ou non + isMenuBarOpen = 0 + #initialisation de l'horloge pour la vitesse du jeux + clock = pygame.time.Clock() - adresse = Adresse() + running = 1 + # sizeIcone repr\xE9sente et l'\xE9chelle de distance qui permettra d'agrandir le cercle + sizeIcone = 1.5*menuGame.lstSousMenus[0].iconeMenu.get_width() + # isClick : permet de soit si on bouton est maintenu enfonc\xE9 + isClick = 0 + # imageActive permet de savoir si un sous menu doit \xEAtre affich\xE9 dans son \xE9tat actif ou non (quand le curseur est dessus) + # Sa valeur contient l'indice de la liste de sous menu, ou -1 si aucun sous menus n'a le curseur par dessus + imageActive = -1 + actionToDo = "aller" + # execution des instructions principales en boucle + while running: + #on affiche dans un premier temps la scene + screen.blit(background, backgroundRect) + #si \xE9v\xE9nement est rencontr\xE9... + event = pygame.event.poll() + if event.type == pygame.QUIT: #si on demande de quitter on arr\xEAte l'executiondu programme + running = 0 + elif event.type is KEYDOWN and event.key == 282 and isMenuBarOpen == 0 : + #menuBar.showMenu() + isMenuBarOpen = 1 + elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 3: #si le bouton droit est enfonc\xE9 ... + #on r\xE9cup\xE8re les coordonn\xE9ees de la souris + pos = x, y = event.pos + # On place les elements du menu de fa\xE7on circulaire + for i in range(menuGame.nbElemMenu): + if i > 7 : + nbCircleMenu = menuGame.nbElemMenu%8 + coef = 1+(i/7) + if nbCircleMenu == 0 : + posx = round(math.cos(menuGame.beta * i)*coef*sizeIcone,0) + posy = round(math.sin(menuGame.beta* i)*coef*sizeIcone,0) + else : + betaBis = 2 * math.pi / nbCircleMenu + posx = round(math.cos(betaBis * i)*coef*sizeIcone,0) + posy = round(math.sin(betaBis * i)*coef*sizeIcone,0) + else : + posx = round(math.cos(menuGame.beta * i)*sizeIcone,0) + posy = round(math.sin(menuGame.beta* i)*sizeIcone,0) + sizex = menuGame.lstSousMenus[i].iconeMenu.get_width() + sizey = menuGame.lstSousMenus[i].iconeMenu.get_height() + dx = x + posx - (sizex/2) + dy = y + posy - (sizey/2) + menuGame.lstSousMenus[i].imagePos = menuGame.lstSousMenus[i].imagePos.move(dx, dy) + #print "position x :" , posx , " position y : ", posy , "\n" + isClick = 1 + elif event.type == pygame.MOUSEBUTTONUP and event.button == 3: + for i in range(menuGame.nbElemMenu): + if i > 7 : + nbCircleMenu = menuGame.nbElemMenu%8 + coef = 1+(i/7) + if nbCircleMenu == 0 : + posx = round(math.cos(menuGame.beta * i)*coef*sizeIcone,0) + posy = round(math.sin(menuGame.beta* i)*coef*sizeIcone,0) + else : + betaBis = 2 * math.pi / nbCircleMenu + posx = round(math.cos(betaBis * i)*coef*sizeIcone,0) + posy = round(math.sin(betaBis * i)*coef*sizeIcone,0) + else : + posx = round(math.cos(menuGame.beta * i)*sizeIcone,0) + posy = round(math.sin(menuGame.beta* i)*sizeIcone,0) + sizex = menuGame.lstSousMenus[i].iconeMenu.get_width() + sizey = menuGame.lstSousMenus[i].iconeMenu.get_height() + dx = x + posx - (sizex/2) + dy = y + posy - (sizey/2) + menuGame.lstSousMenus[i].imagePos = menuGame.lstSousMenus[i].imagePos.move(-dx, -dy) + isClick = 0 + elif event.type == pygame.MOUSEBUTTONUP and event.button == 1: + i = 0 + newPos = nx, ny = event.pos + if isClick==1: + while i < menuGame.nbElemMenu: + if menuGame.lstSousMenus[i].imagePos.collidepoint(newPos): + #print "Action a effectuer : "+menuGame.lstSousMenus[i].action + actionToDo = menuGame.lstSousMenus[i].action + break + i = i + 1 + elif isMenuBarOpen == 1 and (ny > menuBar.menuButtons[0].imagePos.bottom or + (ny <= menuBar.height and nx > menuBar.width ) ): + #menuBar.hideMenu() + isMenuBarOpen = 0 + elif actionToDo == "aller": + activeSet = lstSets.activeSet + for zone in lstSets.__sets__[activeSet].zones : + print lstSets.__sets__[activeSet].zones + if lstSets.__sets__[activeSet].zones[zone].RectZone.collidepoint(newPos) : + print "collisionnnn" + lstSets.activeSet = lstSets.__sets__[activeSet].exitZones[zone] + try: + background = pygame.image.load(lstSets.__sets__[lstSets.activeSet].assets[0].file) + except pygame.error, message: + print "impossible d'ouvrir l'image" + raise SystemExit, message + break + elif event.type == pygame.MOUSEMOTION and isClick ==1: + i = 0 + newPos = nx, ny = event.pos + while i < menuGame.nbElemMenu: + if menuGame.lstSousMenus[i].imagePos.collidepoint(newPos): + break + i = i + 1 + if i < menuGame.nbElemMenu: + imageActive = i + else : + imageActive = -1 + if isMenuBarOpen== 1 : + for unMenu in menuBar.menuButtons : + screen.blit(unMenu.image, unMenu.imagePos) + if isClick == 1: + for i in range(menuGame.nbElemMenu): + if i==imageActive : + screen.blit(menuGame.lstSousMenus[i].iconeActiveMenu, menuGame.lstSousMenus[i].imagePos) + else : + screen.blit(menuGame.lstSousMenus[i].iconeMenu, menuGame.lstSousMenus[i].imagePos) - def __init__(self): - - pass - - - -class Adresse: - - ville = None - - - - def __init__(self): - - pass - - - -class TransformXmlToPersonnes: - - - - __currentNode__ = None - - __personneList__ = None - - - - def __init__(self): - - self.readXml() - - - - def readXml(self): - - from xml.dom.minidom import parse - - self.doc = parse('E:/python/samplexml/personnes.xml') - - - - def getRootElement(self): - - if self.__currentNode__ == None: - - self.__currentNode__ = self.doc.documentElement - - return self.__currentNode__ - - - - def getPersonnes(self): - - if self.__personneList__ != None: - - return - - self.__personneList__ = [] - - for personnes in self.getRootElement().getElementsByTagName("personne"): - - if personnes.nodeType == personnes.ELEMENT_NODE: - - p = Personne() - - try: - - p.nom = self.getText(personnes.getElementsByTagName("nom")[0]) - - p.prenom = self.getText(personnes.getElementsByTagName("prenom")[0]) - - p.adresse = self.getAdresse(personnes.getElementsByTagName("adresse")[0]) - - except: - - print 'Un des TAGS suivant est manquents : nom, prenom, adresse' - - self.__personneList__.append(p) - - return self.__personneList__ - - - - def getAdresse(self, node): - - adress = Adresse() - - try: - - adress.ville = self.getText(node.getElementsByTagName("ville")[0]) - - except: - - adress.ville = None - - return adress - - - - def getText(self, node): - - return node.childNodes[0].nodeValue - - - -if __name__ == "__main__": - - x=TransformXmlToPersonnes() - - print x.getPersonnes()[1].nom -""" + #pygame.display.update() + pygame.display.flip() \ No newline at end of file Modified: PACEmaker/src/apprentissage2.py =================================================================== --- PACEmaker/src/apprentissage2.py 2010-02-27 17:50:14 UTC (rev 12) +++ PACEmaker/src/apprentissage2.py 2010-06-13 15:51:28 UTC (rev 13) @@ -7,7 +7,7 @@ from scenarii.SetParser import SetParser __author__ = "Eric" -__date__ = "$15 fèvr. 2010 21:52:29$" +__date__ = "$15 fevrier. 2010 21:52:29$" if __name__ == "__main__": Added: PACEmaker/src/menuBarParser.py =================================================================== --- PACEmaker/src/menuBarParser.py (rev 0) +++ PACEmaker/src/menuBarParser.py 2010-06-13 15:51:28 UTC (rev 13) @@ -0,0 +1,84 @@ +#-*- coding:Utf-8 -*- +#To change this template, choose Tools | Templates +# and open the template in the editor. + +import pygame +from pygame.locals import * +import xml.dom.minidom + + + +__author__="Ong Vincent" +__date__ ="$Jun 12, 2010 01:00:00 AM$" + +class MenuBar : + __currentNode__ = None + menuButtons = None + height = None + width = None + + def __init__(self, xml_path): + self.readXml(xml_path) + self.initMenuBar() + + def readXml(self, xml_path): + self.doc = xml.dom.minidom.parse(xml_path) + + def getRootElement(self): + if self.__currentNode__ == None: + self.__currentNode__ = self.doc.documentElement + return self.__currentNode__ + + + def initMenuBar(self): + #Si le menu est d\xE9j\xE0 charg\xE9 on ne relit pas le fichier xml + if self.menuButtons != None: + return + self.menuButtons = [] + self.width = 0 + self.height = 0 + for menu in self.getRootElement().getElementsByTagName("menu"): + if menu.nodeType == menu.ELEMENT_NODE: + m = Menu() + try: + m.action = menu.getAttributeNode("action").nodeValue + m.image = pygame.image.load(self.getText(menu.getElementsByTagName("image")[0])) + m.imagePos = m.image.get_rect() + m.imagePos.left = self.width + self.width += m.imagePos.width + except: + print 'Un des TAGS suivant est manquant : action, image' + + self.menuButtons.append(m) + if len(self.menuButtons) >0: + self.height = self.menuButtons[0].imagePos.height + + def getText(self, node): + return node.childNodes[0].nodeValue + + def getAllMenu(self): + return self.menuButtons + + def getMenu(self, indice): + return self.menuButtons[indice] + + def addMenu(self, sousMenu): + self.menuButtons.append(sousMenu) + + def removeMenu(self, indice): + del self.menuButtons[indice] + + def hideMenu(self): + for menu in self.menuButtons : + menu.imagePos.bottom = 0 + + def showMenu(self): + for menu in self.menuButtons : + menu.imagePos.bottom = self.height +class Menu: + action = None + imagePos = None + image = None + + def __init__(self): + pass Added: PACEmaker/src/menuParser.py =================================================================== --- PACEmaker/src/menuParser.py (rev 0) +++ PACEmaker/src/menuParser.py 2010-06-13 15:51:28 UTC (rev 13) @@ -0,0 +1,81 @@ +#-*- coding:Utf-8 -*- +# Fichier menu.py permettant la cr\xE9ation du menu depuis un fichier xml +import math +import pygame +from pygame.locals import * +import xml.dom.minidom + + + +__author__="Ong Vincent" +__date__ ="$Jun 11, 2010 18:00:00 PM$" + +class Menu: + __currentNode__ = None + lstSousMenus = None + nbElemMenu = None + beta = None + #beta = 2 * math.pi / nbElemMenu + + def __init__(self, fichierMenu): + self.readXml(fichierMenu) + self.initMenu() + self.nbElemMenu = len(self.lstSousMenus) + if self.nbElemMenu < 8 : + self.beta = 2 * math.pi / self.nbElemMenu + else : + self.beta = 2 * math.pi / 8 + + def readXml(self, xml_path): + self.doc = xml.dom.minidom.parse(xml_path) + + + def getRootElement(self): + if self.__currentNode__ == None: + self.__currentNode__ = self.doc.documentElement + return self.__currentNode__ + + + def initMenu(self): + #Si le menu est d\xE9j\xE0 charg\xE9 on ne relit pas le fichier xml + if self.lstSousMenus != None: + return + self.lstSousMenus = [] + for unSousMenu in self.getRootElement().getElementsByTagName("action"): + if unSousMenu.nodeType == unSousMenu.ELEMENT_NODE: + sm = SousMenu() + try: + sm.action = unSousMenu.getAttributeNode("name").nodeValue + sm.iconeMenu = pygame.image.load(self.getText(unSousMenu.getElementsByTagName("icone")[0])) + sm.iconeActiveMenu = pygame.image.load(self.getText(unSousMenu.getElementsByTagName("active")[0])) + sm.imagePos = sm.iconeMenu.get_rect(); + except: + print 'Un des TAGS suivant est manquents : action, icone, active' + + self.lstSousMenus.append(sm) + + def getText(self, node): + return node.childNodes[0].nodeValue + + def getAllSousMenu(self): + return self.lstSousMenus + + def getSousMenu(self, indice): + return self.lstSousMenus[indice] + + def addSousMenu(self, sousMenu): + self.lstSousMenus.append(sousMenu) + + def removeSousMenu(self, indice): + del self.lstSousMenus[indice] + + + +class SousMenu: + action = None + imagePos = None + iconeMenu = None + iconeActiveMenu = None + + def __init__(self): + pass This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vin...@us...> - 2010-02-27 17:50:20
|
Revision: 12 http://pacemaker.svn.sourceforge.net/pacemaker/?rev=12&view=rev Author: vincentniakos Date: 2010-02-27 17:50:14 +0000 (Sat, 27 Feb 2010) Log Message: ----------- Un ptit commit, pour la prise en compte du menu radial ?\195?\160 partir du d?\195?\169cort g?\195?\169n?\195?\169r?\195?\169 par le fichier xml Modified Paths: -------------- PACEmaker/src/apprentissage2.py Modified: PACEmaker/src/apprentissage2.py =================================================================== --- PACEmaker/src/apprentissage2.py 2010-02-15 22:07:54 UTC (rev 11) +++ PACEmaker/src/apprentissage2.py 2010-02-27 17:50:14 UTC (rev 12) @@ -2,6 +2,7 @@ # To change this template, choose Tools | Templates # and open the template in the editor. import pygame +import math from pygame.locals import * from scenarii.SetParser import SetParser @@ -19,7 +20,7 @@ running = 1 # chargement du xml, va falloir dynamiser tout ça - parser = SetParser('/home/eric/NetBeansProjects/pacemaker~subversion/PACEmaker/exemples/set.xml') + parser = SetParser('../exemples/set.xml') background = [] sets = parser.get_sets() @@ -27,15 +28,64 @@ for set in sets: for asset in set.assets: background.append(pygame.image.load(asset.file)) + + + # Chargement des icones + icone_rect = [] + icones = [] + lstimage = ("../ressources/images/icone1.png", "../ressources/images/icone2.png", "../ressources/images/icone3.png", "../ressources/images/icone4.png") + beta = 2 * math.pi / 4 + for i in range(4): + icones.append(pygame.image.load(lstimage[i])) + icone_rect.append(icones[i].get_rect()) + isClick = 0 + + clock = pygame.time.Clock() while running: + clock.tick(25) for i in range (len(background)): screen.blit(background[i], (0, 0)) event = pygame.event.poll() + if event.type == pygame.QUIT: running = 0 + elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 3: + print "mouse at (%d, %d)" % event.pos + pos = x, y = event.pos + for i in range(4): + posx = round(math.cos(beta * i)*50,0) + posy = round(math.sin(beta * i)*50,0) + dx = x + posx - 32 + dy = y + posy - 32 + icone_rect[i] = icone_rect[i].move(dx, dy) + print "position x :" , posx , " position y : ", posy , "\n" + isClick = 1 + elif event.type == pygame.MOUSEBUTTONUP and event.button == 3: + for i in range(4): + posx = round(math.cos(beta * i)*50,0) + posy = round(math.sin(beta * i)*50,0) + dx = x + posx - 32 + dy = y + posy - 32 + icone_rect[i] = icone_rect[i].move(-dx, -dy) + isClick = 0 + elif event.type == pygame.MOUSEMOTION and isClick ==1: + print "ca bouge la souris" + i = 0 + newPos = nx, ny = event.pos + #mouseRec = Rect(5, 5, nx, ny) + while i < 4: + #if mouseRec.colliderect(icone_rect[i]): + if icone_rect[i].collidepoint(newPos): + break + i = i + 1 + if i < 4: + print "collision avec l'image : ", i+1 + + if isClick == 1: + for i in range(4): + screen.blit(icones[i], icone_rect[i]) + pygame.display.flip() - - print "kthxbye!" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |