|
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.
|