#!/usr/bin/env python # -*- coding: utf8 -*- #*********************************************************************** # pysycache : a program for learn to use the mouse # Copyright (C) 2005-2007 Vincent DEROO (vincent.pysycache@free.fr) # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc. : # 51 Franklin Street, Fifth Floor, Boston, MA02110-1301, USA #*********************************************************************** #******************************************************************************* # Importation des modules #******************************************************************************* import sys import getopt, string import pygame from pygame.locals import * import random, os from pysyclasses import * #type de chaque jeu MODENORMAL = 0 MODEFANTOM = 1 EVTFANTOME = USEREVENT + 1 #fantome EVTCHRONO = USEREVENT + 2 #chronometre EVTSURVOL = USEREVENT + 3 #survol d'un bouton menu EVTMOVE = USEREVENT + 4 # EVTVISIBLE = USEREVENT + 5 #pour rendre visible / invisible une cible #marge de la zone de jeu MARGELEFT = 10 MARGETOP = 4 #largeur d'une souris DEMISOURIS = 32 CACHE = 0 VISIBLE = 1 GRepPysycache = "" #le repertoire de l'application GBtnMenu = 999 #numero du bouton du menu d'application # 1 : move # 2 : click # 3 : buttons # 4 : # 5 : puzzle # 6 : attrapper # 7 : double click GLevel = 2 #niveau des activites #valeurs possibles : 0 (facile) 1 (moyen) et 2 (difficile) GChrono = 0 #0 : pas de chronometre 1 : on a 60 secondes pour finir l'activite GSoundError = 0 #0 : pas d'erreur d'initalisation du mixer - 1 : erreur GPosDepX = 720 #position X (en partant de la gauche) GPosDepY = 150 #position Y (en partant du haut) #---------------------------------- ihm ---------------------------------------- GTabBtnIhm = [] #tableau des boutons GTabDirectories = [] #tableau des repertoires GFirstDirectory = 0 GCurrentDirectory = "" #----------------------------- activity move ----------------------------------- GTabCarreau = [] #tableau d'information sur les carreaux GTailleLarg = 10 #largeur d'un carreau GTailleHaut = 10 #hauteur d'un carreau GTailleCarreau = 0 #indicateur de taille des carreaux (0 : grand, 1 moyen, 2 petit) GNbCarreau = 999 #nombre de carreau (largeur x longueur) #------------------------------ activity click --------------------------------- GTabPhotos = [] #tableau d'information sur les photos GNbPhotos = 999 #nombre de photos a decouvrir GTailleZoom = 30 #rayon du cercle autour de l'endroit ou est la photo GItemToFound = 99 #id de la photo a trouver #------------------------------ activity button -------------------------------- GNbButtons = 999 #nombre d'elements a ranger GSpeed = 3 #vitesse pour l'activite boutons GItemToMove = 99 #id du bouton a deplacer #---------------------------- activity dbl-click ------------------------------- GTabTarget = [] #tableau d'information sur les cibles GCategToClick = 999 #id de la categorie du double click GItemToClick = 999 #----------------------------- activity puzzle --------------------------------- GTabPuzzles = [] #tableau d'information sur les pieces du puzzle GNbPieces = 999 #nombre de pieces du puzzle restant a poser GIdxMovedPiece = 0 #indice de la piece deplacee dans le tableau GIdPieceToDrop = 999 #indice de la piece a placer #------------------------------ select ----------------------------------------- GSelectedUser = 9999999 GTabUser = [] #tableau des utilisateurs GFirsUser = 0 #indice du premier utilisateur a voir #preferences utilisateurs GTabLang = [] GPrefUserInit = Preferences() #pref lues depuis le fichier de config GPrefUserFromOptions = Preferences() #pref passees en parametres GPrefUserTmp = Preferences() #pref temporaires (pour la partie preferences) GPrefUserLang = 0 GIdxphoto = 0 GLstFaces = [] #---------------------------- evenements ------------------------------- EVENT_NOVENT = 3 #on ne traite pas les evenements EVENT_GAGNE = 1 #on a gagne le jeu EVENT_JEU0 = 0 #activite move/click : # on joue normalement en bougeant la souris EVENT_JEU1 = 4 #activite click : # on est proche d'une photo (l'appareil est en rose) EVENT_JEU2 = 2 #activite move : # on joue en bougeant la souris MAIS on est en train de dessiner les cache #activite click : # on a clique pour voir la photo GTypeSouris = EVENT_NOVENT #activite move #1 : on a gagne #2 : on joue en bougeant la souris MAIS on est en train # de dessiner les cache #3 : on ne traite pas les evt (pas dessin) #activite puzzle #0 : on est loin de l'endroit ou il faut poser la piece #1 : on est proche #variables concernant les options eventuelles de pysycache GWithSound = 1 #1 : with sounds, 0 without sound #GWithSoundInit = 0 GWithSoundUser = 0 GWithFullScreen = 1 #1 : with fullscreen 0 in window GWithCredits = 0 #1 : show credits 0 hide credits GWithHelp = 1 #1 : show the sounds of help GWithHelpInit = 1 GWithHelpUser = 1 GDureeTransition = 5 #the duration between two lines progression (ShowTransitionOfTheme) #the duration of view a screen is 1000 x GDureeTransition #GWithLang = "" #langage to use for menus #GWithLangUser = "" GLogoUser = "" #fichier logo de l'utilisateur GDebug = 0 #1 : show debug, 0 without message of debug Gfps = 90 #number of framerate GAdmin = 0 #0 mode normal, 1 mode administration #config de pysycache GPysyUserMode = 999 #0 : one player by computer user 1 : lot of player by computer user GPysyUserModeTmp = 999 GRepScores = "" #le repertoire avec les meilleurs scores GRepScoresTmp = "" GRepUsersPysycache = "" #le repertoire des utilisateurs (si GPysyUserMode=1) GRepUsersPysycacheTmp = "" GRepPersoUser = "" #le repertoire personnel du joueur GInterface = 0 #le detail de l'interface #0 : minimale #1 : normal #2 : detaille GDicoLangue = {} #gere tous les textes dans les langues locales GIdBtnSurvol = 99 #Id du bouton survole GModeJeu = 0 #0 : normal #1 : fantome #2 : chrono GStateOfDrag = 0 #0 : pas de drag #1 : on se deplace avec la piece GChronoLimit = 60 #duree du chronometre GChronoCpt = 60 #nombre de secondes restantes GTpsDebut = 0 #temps de depart du mode chrono GMyLocale = "en_EN" GConsoleLocale = "" #console encoding GMaSourisCurrentPositionX = 1 #Position actuelle de la souris GMaSourisCurrentPositionY = 1 GMaSourisOldPositionX = 1 #Ancienne position de la souris GMaSourisOldPositionY = 1 GFontName = "FreeSansBold.ttf" Gclock = pygame.time.Clock () frames = 0 lastFPSTime = pygame.time.get_ticks() GLstSouris = pygame.sprite.RenderClear() Gbackground_image = pygame.Surface((800,600)) GChronoHaut = pygame.Surface((64, 204)) GChronoVide = pygame.Surface((64, 204)) GChronoBas = pygame.Surface((64, 204)) GChronoAP = pygame.Surface((64, 204)) #from pysyclasses import ApplicationPysy from pysymove import ApplicationMove from pysyclick import ApplicationClick import pysymove import pysyclick import pysybuttons import pysydblclick import pysypuzzle AppMove = pysymove.ApplicationMove() AppClick = pysyclick.ApplicationClick() AppButtons = pysybuttons.ApplicationButtons() AppDblClick = pysydblclick.ApplicationDblClick() AppPuzzle = pysypuzzle.ApplicationPuzzle()