Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#101 Le 29/05/2011, à 12:33

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

A noter que j'ai fait tout récemment une autre animation sur Inkscape avec des jeunes filles de 12/13 ans sur le thème du stylisme. Ayant travaillé dans la mode auparavant, le sujet m'intéressait beaucoup et j'avais amené doucement l'animation en montrant des réalisations perso, en regardant les sites qui intéressaient les filles, etc.

Nous sommes parties d'une image de personnage en sous-vêtements choisies dans les sites Ma Bimbo et Amour sucré, qu'elles utilisent d'elles-mêmes.

Ces 2 sites proposent des forums où l'on peut présenter ses créations en rapport avec les personnages des sites.
Exemple: Stylisme - créer ta mode sur Ma Bimbo
concours de stylisme sur Amour sucré.

Nous avons dessiné des vêtements avec l'outil Courbe de Béziers, qu'elles ont vite appris à manier.
Je leur ai montré comment choisir et changer la couleur des objets, les rendre transparents, changer le contour, etc...
Pour faire des coutures de jean, on crée une forme (mais on ne sait pas comment faire une ligne seule hmm ), et on change le contour en pointillés, magique !

Nous avons ajouté un calque pour placer les ombres (que nous pouvons flouter grâce aux menu Filtres > flous)
Un autre calque sert à placer des motifs comme une étoile qu'on copie-colle ou qu'on crée plusieurs fois sur un corsage.

Hors ligne

#102 Le 29/05/2011, à 13:00

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

Ce qui est important dans les animations avec les jeunes, surtout s'ils ne sont pas trop motivés en apparence, c'est de partir de ce qu'ils font quand ils jouent en accès libre et d'amener l'animation progressivement, sans se préoccuper s'il n'y a qu'un ou deux participants au début.

Il faut soit les prendre pendant l'accès libre si ça les tente (mais ça oblige à être au moins 2 animateurs) soit leur proposer un horaire disponible sur plusieurs séances, en se doutant qu'ils ne seront pas là à chaque fois. Sans liberté, ils se sentent coincés. Le nombre de séances n'est pas fixé, on s'adapte à leurs envies tout en étant prêt à proposer des activités précises qui incitent à utiliser d'autres logiciels libres. cool
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
STOPMOTION

Avec un autre groupe plus jeune (9-12 ans) et mieux encadré, venant du centre social du quartier, nous avons réussi à faire deux petits films en stopmotion, entièrement avec les logiciels Kdenlive et stopmotion.

Là, le nombre de séance était fixé à l'avance et nous avons bien calé notre programme en nous inspirant d'autres travaux sur le web.
Les enfants ont vu des films d'animation avec différentes techniques, puis fait le scénario et le story-board de leurs films avant de démarrer le tournage.

Nous avons utilisé des figurines articulées (type Playmobil ou Légo), de la pâte à modeler (un peu fragile, attention à la qualité) et du crépon pour le film en 3D, sur le thème de la plage. Nous avons utilisé la caméra (sur pied) en scènes très courtes pour ce film. Le décor, posé sur une table contre un mur, doit pouvoir rester en place pendant plusieurs semaines. Une des scènes utilisait du fil pour faire voler les héros, le décor étant constitué d'une image projetée avec le vidéoprojecteur.

L'autre film, dont le thème était l'école, était à base de photos trouvées sur internet pour les décors, agrandies sur 4 feuilles A4 pour chaque plan. Le décor était calé par terre sous une vitre.
Les personnages, assez petits, étaient en papier de couleur découpé, les membres étant séparés du corps. Les visages des enfants ont été photographiés, découpés et imprimés. Il y avait 2 sets par enfant, de taille différente, et plusieurs visages pour chaque set. Il faut bien ranger chaque personnage dans des petits boites et pouvoir faire des doubles facilement.
Par moments, on a écrit du texte sur la vitre avec un feutre pour tableau blanc, et on effaçait quand on avait fini.
Tout a été fait en plaçant un appareil photo bien en hauteur, presque à la verticale (on a d'ailleurs cassé l'appareil photo - et la vitre - à la fin car on avait baissé les pieds avant du pied photo et il est tombé mad )

Hors ligne

#103 Le 23/06/2011, à 09:22

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

2 jeunes de 18 ans vont faire une animation avec RPG-Maker qui est gratuit mais non libre et marche sous windows. J'ai essayé de l'installer sous ubuntu 10.04 avec Wine, ça marche plus ou moins mais pas totalement. hmm
Je n'arrive pas à voir les graphismes quand je crée un nouveau projet, je dois les copier du dossier de RPG Maker vers le dossier du projet. Ensuite, je peux dessiner les objets du décor et retrouver les persos dans la base de données.
Quand on veut le tester, le jeu se lance mais le héros n'avance pas quand on utilise les flèches du pavé numérique. sad

Je n'ai pas encore trouvé d'équivalent aussi intuitif et complet sous Linux pour les ados. Je n'aime pas trop le principe de RPG-Maker dans la mesure où la part de création est un peu limitée (tout au moins quand on démarre) mais les jeunes aiment bien ce type de logiciel assez facile à prendre en main et dont les graphismes ressemblent à ce qu'ils connaissent. La façon de gérer les évènements est peut-être encore un peu complexe pour les plus jeunes, mais c'est pas mal.

Scratch est pas mal pour apprendre la programmation mais un peu trop gamin côté graphisme et peut-être un peu trop "pédagogique" pour plaire aux moins scolaires des ados. Je n'ai pas eu un super accueil quand je l'ai montré à certains jeunes, même si d'autres le connaissent par leur collège.

Si Ultimate Smash Friends pouvait se transformer pour offrir une interface de création de décors et de persos plus intuitive, ce serait bien, d'ailleurs ! cool Sinon, existe-t-il ailleurs un programme libre de création de jeux de plate-formes ?

Hors ligne

#104 Le 23/06/2011, à 09:32

tshirtman

Re : Faire une animation sur la création de jeux vidéo libres

hum, non, je ne pense pas, mais de ce coté, peut être que le projet super tux est plus aboutie.

Pour rpg maker, oui c'est très connus, et beaucoup voudraient ce genre de choses sous linux, mais ça intéresse assez peu de monde (ayant les compétences) de le faire, paradoxalement, peut être que se baser sur le projet FLARE (plus action-rpg, mais bon, ça peut se modifier je pense, c'est plus facile de reprendre le moteur de rendu et refaire le système de combat que de tout refaire) pourrait permettre de faire ce genre de choses… mais ça demande beaucoup de "modifiabilité" et de mettre en place des scripts de haut niveau… peut être avec python ou lua, mais bon, c'est un projet à part entière, même en considérant qu'on reprends le moteur d'un jeu.

Hors ligne

#105 Le 23/06/2011, à 17:43

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

Pour mon jeu miksgame, j'ai réussi à faire le setup.py, MANIFEST.in et à créer le .deb.

J'ai installé ce .deb sur un autre poste, il parait bien installé dans Synaptic mais je ne le trouve pas dans les menus et je n'arrive pas à le lancer dans le terminal.

Hors ligne

#106 Le 23/06/2011, à 19:12

tshirtman

Re : Faire une animation sur la création de jeux vidéo libres

arf tongue

pour le trouver dans les menus, il faut avoir créé un lanceur (.desktop) avec les catégories correctements renseignés dedans, et dire à setup.py qu'on le met dans /usr/share/applications, …

hum, il me semblait que ça marchait avec usf, mais je ne l'ai pas…

Hors ligne

#107 Le 24/06/2011, à 06:59

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

Voici déjà miks_game.tar.gz qui contient tout le dossier du jeu et python_miksgame.tar.gz qui contient le .deb.

Si je n'ai pas le lanceur, comment je peux vérifier que mon jeu marche avec le .deb ? Y a-t-il une commande qui permet de le lancer ?

Hors ligne

#108 Le 28/06/2011, à 15:48

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

Aujourd'hui, première séance de l'animation RPGMaker réalisée par 2 jeunes de 18 ans. 4 jeunes un peu moins âgés ont participé, et moi aussi (j'hésitais à venir les "embêter" mais ils sont venus me chercher).
On a fait l'animation sous windows mais j'ai pu installer RPG Maker sous Linux avec Wine. Je pensais que ça ne fonctionnait pas mais RPGMaker 2003 n'était en fait pas bien configuré, le jeune qui l'utilise régulièrement m'a résolu le problème rapidement.
Les participants ont beaucoup apprécié au point de vouloir utiliser l'accès libre destiné d'habitude aux jeux pour continuer sur RPGMaker.
Même si RPGMaker n'est pas libre, tout n'est pas perdu pour la jeunesse: le jeune animateur bénévole leur a en effet parlé de Gimp pour faire certains graphismes, donc on les convertit doucement...
Comme bientôt nous comptons supprimer totalement windows (que nous gardions en double boot presque uniquement pour les jeux) et juste émuler ces jeux, il faudra bien qu'ils passent à Linux dans notre Espace Public Numérique.

Dernière modification par doudoulolita (Le 28/06/2011, à 15:50)

Hors ligne

#109 Le 28/06/2011, à 15:50

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

Pour mon jeu miks_game, je crois que le problème vient du dossier data que je n'arrive pas à intégrer. hmm

Hors ligne

#110 Le 01/07/2011, à 09:28

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

En fait, un ami de mon boulot vient de me donner la solution qui est toute simple, c'est surtout le fichier MANIFEST.in qui n'était pas bon.

setup.py

from distutils.core import setup

setup(name='miks_game',
      version='1.0',
      py_modules=['miks_game'],
      )

On peut ajouter les autres infos d'auteur et de description mais au moins, avec un fichier aussi simple, on est sur de ne pas faire d'erreur

MANIFEST.in

include *.png
recursive-include data *.png

Je fais comme les autres fois:

python setup.py sdist

Je récupère un fichier .tar.gz dans un sous-dossier dist. en le décompressant, je vérifie qu'il contient bien toutes mes données.

Pour faire le .deb, je vire le dossier dist, le fichier MANIFEST (celui qui s'est créé tout seul) et ensuite:

python setup.py --command-packages=stdeb.command bdist_deb

Je rappelle que j'ai installé python-distutils-extra, python-setuptools, python-stdeb et debhelper.

Dernière modification par doudoulolita (Le 08/07/2011, à 10:52)

Hors ligne

#111 Le 01/07/2011, à 09:35

tshirtman

Re : Faire une animation sur la création de jeux vidéo libres

T'as un dev pythoniste à ton boulot? smile

ça va t'aider tongue

Hors ligne

#112 Le 01/07/2011, à 09:38

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

Pas tout à fait, il débute aussi mais à nous deux, on améliore le truc !
Le .deb se crée aussi mais je ne parviens pas à le lancer alors qu'il est dans synaptic. Là, tous les fichiers sont là, donc je ne comprends pas pourquoi je ne peux pas le lancer.

Hors ligne

#113 Le 01/07/2011, à 09:59

tshirtman

Re : Faire une animation sur la création de jeux vidéo libres

sudo dpkg -i ton_fichier.deb

tu as des erreurs?

sinon, taper le nom de l'executable du programme dans le terminal donne quelque chose?

Hors ligne

#114 Le 01/07/2011, à 10:14

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

epn13@epn13-desktop:~/01-laurence/programmation/miks_game/deb_dist$ sudo dpkg -i python-miksgame_1.0-1_all.deb 
(Lecture de la base de données... 221808 fichiers et répertoires déjà installés.)
Préparation du remplacement de python-miksgame 1.0-1 (en utilisant python-miksgame_1.0-1_all.deb) ...
Dépaquetage de la mise à jour de python-miksgame ...
Paramétrage de python-miksgame (1.0-1) ...

Traitement des actions différées (« triggers ») pour « python-support »...
epn13@epn13-desktop:~/01-laurence/programmation/miks_game/deb_dist$
epn13@epn13-desktop:~/01-laurence/programmation/miks_game/deb_dist$ python-miksgame
python-miksgame : commande introuvable
epn13@epn13-desktop:~/01-laurence/programmation/miks_game/deb_dist$ python-miksgame_1.0-1_all.deb
python-miksgame_1.0-1_all.deb : commande introuvable

Voici ce que je trouve dans les propriétés de mon jeu dans Synaptic, on dirait que les images ne se sont pas installées correctement alors que dans le tar.gz créé par bdist_deb, tout est OK:
Capture_python-miksgame.png

Hors ligne

#115 Le 01/07/2011, à 10:21

tshirtman

Re : Faire une animation sur la création de jeux vidéo libres

hum, essaye de lancer

/usr/share/pyshared/miks_game.py

?

Hors ligne

#116 Le 01/07/2011, à 10:29

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

epn13@epn13-desktop:~/01-laurence/ultimate-smash-friends$ /usr/share/pyshared/miks_game.py
bash: /usr/share/pyshared/miks_game.py: Permission non accordée

Hors ligne

#117 Le 01/07/2011, à 10:36

tshirtman

Hors ligne

#118 Le 01/07/2011, à 11:54

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

epn13@epn13-desktop:~/01-laurence/programmation/04_programmes_maternelles/miks_game2$ python /usr/share/pyshared/miks_game.py
/usr/share/pyshared/
data/
Traceback (most recent call last):
  File "/usr/share/pyshared/miks_game.py", line 22, in <module>
    dirFiles = os.listdir(currentPath) 
OSError: [Errno 2] No such file or directory: '/usr/share/pyshared/data/'

C'est bien ce que je pensais, le .deb n'a pas incorporé le dossier data qui contient mes images de fond.

MANIFEST.in lui indique le dossier data et ses png, mais setup.py ne lui parle pas du dossier data, est-ce à cause de ça ?

Par contre, l'ami qui fait un peu de python à mon boulot m'a réalisé un petit script python qui trie mes images par date dans l'ordre décroissant, ce qui me permet d'avoir toujours les images de fond les plus récentes:

# chemin des images de fond
data_file = 'data/'

print data_file

def get_files_by_date(directory):
    files = [(os.stat(directory+'/'+f)[ST_CTIME], f) for f in os.listdir(directory) if os.path.isfile(directory+'/'+f)]
    files.sort()
    files.reverse()
    print 'fichiers triés =', files
    
    return [f for s, f in files]
    
chemincomplet= os.path.abspath(data_file)

listfichier = get_files_by_date(chemincomplet)

print 'listfichier=', listfichier

image1b = listfichier[0]
image2b = listfichier[1]

print image1b
print image2b

J'utilise ensuite image1b et image2b à la place d'image1 et image2 dans mon code et ça a l'air de marcher.

A l'origine, je voulais mettre ce code dans un fichier nommé trier.py et écrire import trier dans le fichier du jeu, mais ça ne marche pas.

Dernière modification par doudoulolita (Le 01/07/2011, à 12:16)

Hors ligne

#119 Le 04/07/2011, à 17:52

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

Le fichier setup.py est de nouveau plus complexe et j'arrive maintenant, quand j'installe le .deb, à intégrer le dossier data (où son rangés les arrières-plans) et le dossier images (qui contient maintenant toutes les autres images) dans /usr/.
Le fichier miks_game.py se range lui dans /usr/share/pyshared/ smile

Pour y parvenir, j'ai dû mettre le répertoire où vont se situer les images + indiquer le dossier où elles se trouvent à ce niveau:

IMAGES = [('images', ['images/arriereplan.png', 'images/arriereplan_cote.png', 'images/arriereplan_cote2.png', 'images/miks_roll2.png', 'images/miks_smackup2.png', 'images/miks_static.png', 'images/miks_walk2.png', 'images/tux_defaite.png', 'images/tux_victoire.png'])]

Au départ, je ne mettais que le nom des images, et non leur chemin, dans la deuxième partie de ce code et ça ne fonctionnait pas.

Voici setup.py au complet tel qu'il est actuellement:

import os
from stat import ST_CTIME
from distutils.core import setup

# chemin des images de fond
data_file1 = 'data'
data_file = 'data/'

def get_files_by_date(directory):
    files = [(os.stat(directory+'/'+f)[ST_CTIME], f) for f in os.listdir(directory) if os.path.isfile(directory+'/'+f)]
    files.sort()
    files.reverse()
    
    return [f for s, f in files]
    
chemincomplet= os.path.abspath(data_file1)
listfichier = get_files_by_date(chemincomplet)

image1b = listfichier[0]
image2b = listfichier[1]

DATA = [('data', [data_file+image1b, data_file+image2b])]
IMAGES = [('images', ['images/arriereplan.png', 'images/arriereplan_cote.png', 'images/arriereplan_cote2.png', 'images/miks_roll2.png', 'images/miks_smackup2.png', 'images/miks_static.png', 'images/miks_walk2.png', 'images/tux_defaite.png', 'images/tux_victoire.png'])]

setup(name='miks_game',
      version='1.0',
      description='game for kids',
      author='Doudoulolita',
      author_email='doudou-lolita@hotmail.fr',
      url='http://oursement-votre.com/document/',      
      py_modules=['miks_game'],
      data_files= DATA+IMAGES
      )

Là où ça cloche, c'est que mon fichier setup.py et mon fichier miks_game.py font appel à des fonctions de récupération du chemin du dossier data qui ne fonctionnent plus dans ces conditions:

epn13@epn13-desktop:/usr/share/pyshared$ python /usr/share/pyshared/miks_game.py/usr/share/pyshared/
data/
Traceback (most recent call last):
  File "/usr/share/pyshared/miks_game.py", line 34, in <module>
    listfichier = get_files_by_date(chemincomplet)
  File "/usr/share/pyshared/miks_game.py", line 26, in get_files_by_date
    files = [(os.stat(directory+'/'+f)[ST_CTIME], f) for f in os.listdir(directory) if os.path.isfile(directory+'/'+f)]
OSError: [Errno 2] No such file or directory: '/usr/share/pyshared/data'

On voit avec ce code qu'il cherche le dossier data dans pyshared et non dans usr où il s'est rangé automatiquement. sad
Et piree, si je me mets dans un autre répertoire que pyshared, il cherche dans le répertoire où je me trouve ! mad

En fait, ce serait bien que tout se range gentiment dans un dossier miksgame au sein de pyshared au lieu d'aller un peu dans tous les coins ! Je suppose que data_files permet de faire ça mais je ne sais pas trop comment.
Je continue mes recherches !

Dernière modification par doudoulolita (Le 04/07/2011, à 17:58)

Hors ligne

#120 Le 04/07/2011, à 18:52

tshirtman

Re : Faire une animation sur la création de jeux vidéo libres

A l'origine, je voulais mettre ce code dans un fichier nommé trier.py et écrire import trier dans le fichier du jeu, mais ça ne marche pas.

from trier import get_file_by_date

ou

import trier
trier.get_file_by_date()

Pour le reste, je sais pas trop, dans celui d'usf on a réussis à lui dire de les mettre dans /usr/share/games/usf ou un truc du genre…

def files(path):
    """ 
    Return all non-python-file filenames in path
    """

    result = []
    all_results = []
    module_suffixes = [info[0] for info in imp.get_suffixes()]
    ignore_dirs = ['cvs']
    for item in os.listdir(path):
        name = join(path, item)
        if isfile(name) and splitext(item)[1] not in module_suffixes:
            result.append(name)
        elif isdir(name) and item.lower() not in ignore_dirs:
            all_results.extend(files(name))
    if result:
        all_results.append([path, result])
    return all_results

et

DATA = [(item[0], item[1]) for item in files('data')]

Hors ligne

#121 Le 05/07/2011, à 15:50

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

J'ai pour l'instant réussi à intégrer mes dossiers data et images dans /usr/share/pyshared ce qui fait que le programme marche en faisant python /usr/share/pyshared/miks_game.py.
Ce n'est pas l'idéal car je ne parviens pas à la lancer en tapant juste le nom du jeu dans la console, mais c'est mieux. smile
Je n'ai pas encore testé ton code ci-dessus mais je le ferai plus tard, merci !

Hors ligne

#122 Le 08/07/2011, à 09:45

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

Mon ami du boulot pense qu'il faudrait mettre miks_game.py dans usr/bin pour qu'il se lance plus facilement depuis la console, j'essaierai plus tard.
Sinon, il pense aussi que la fonction de tri ne doit pas être mise dans le setup.py (ça veut dire que seuls 2 backgrounds sont installés) mais être faite seulement quand le jeu se lance (tous les backgrounds fournis au départ s'installent et on trie par date au moment de jouer). En fait, il faudrait que je décide si je fournis seulement 2 backgrounds (et dans ce cas, j'ai leurs noms pour le setup) ou plusieurs. Ceux-ci pourraient être fournis à part, d'ailleurs, et insérés dans le dossier data après l'installation.

Améliorations à apporter au jeu:
- Pouvoir recommencer le jeu sans quitter quand on a gagné ou perdu.
- Le répertoire où sont les backgrounds doit être facile d'accès mais si je crée le répertoire data dans /home/user, comment je connais le nom du user ?
- Ce serait bien de pouvoir voir plus de backgrounds en vignettes et cliquer dessus pour sélectionner au lieu de taper un chiffre.
- Et mieux encore, faire "parcourir" pour aller chercher son background sur son ordi sans avoir à le glisser dans le dossier data.

Bon, de toute façon, pour l'instant, j'essaie de régler la création du .deb et du lancement facile du programme pour comprendre comment ça fonctionne, j'améliorerai le jeu après.

Dernière modification par doudoulolita (Le 08/07/2011, à 09:51)

Hors ligne

#123 Le 08/07/2011, à 10:08

tshirtman

Re : Faire une animation sur la création de jeux vidéo libres

doudoulolita a écrit :

Mon ami du boulot pense qu'il faudrait mettre miks_game.py dans usr/bin pour qu'il se lance plus facilement depuis la console, j'essaierai plus tard.

tu peux aussi plus simplement mettre un script shell du genre

#!/usr/bin/env sh
python chemin_vers/miks_game.py

dans /usr/bin/ et tu l'appelle miks_game, voir même miks

Sinon, il pense aussi que la fonction de tri ne doit pas être mise dans le setup.py (ça veut dire que seuls 2 backgrounds sont installés) mais être faite seulement quand le jeu se lance (tous les backgrounds fournis au départ s'installent et on trie par date au moment de jouer). En fait, il faudrait que je décide si je fournis seulement 2 backgrounds (et dans ce cas, j'ai leurs noms pour le setup) ou plusieurs. Ceux-ci pourraient être fournis à part, d'ailleurs, et insérés dans le dossier data après l'installation.

Améliorations à apporter au jeu:
Pouvoir recommencer le jeu sans quitter quand on a gagné ou perdu.
Le répertoire où sont les backgrounds doit être facile d'accès mais si je crée le répertoire data dans /home/user, comment je connais le nom du user ?

Les variables d'environnements smile $USER contient toujours le nom de l'utilisateurs qui lance le programme, $HOME contient toujours le chemin vers son dossier perso (qui n'est pas forcément /home/$USER…) y'a aussi xdg pour savoir précisément ou ranger tout ça… http://ploum.net/post/207-modify-your-a … dg-folders (il me semblait qu'il avait fait une version française, mais je peut me planter, le blog et bilingue, et j'ai tendance à oublier dans quelle langue j'ai lu un truc sad)

Ce serait bien de pouvoir voir plus de backgrounds en vignettes et cliquer dessus pour sélectionner au lieu de taper un chiffre.
Et mieux encore, faire "parcourir" pour aller chercher son background sur son ordi sans avoir à le glisser dans le dossier data.

Tu peux construire des menus en regardant ou sont l'utilisateurs clic et en faisant des actions en conséquences, tant que ça reste simple, pas besoin de faire trop compliqué, une liste de tuples (rectangle, titre, fonction), que tu parcours à chaque fois qu'un clic est effectué, si le clic entre en collision avec le rectangle, tu lance la fonction:

# initialisation, en début du jeu
def hello_world():
    print "hello world"

def fonction2():
    pass

def fonction3():
    pass

buttons = [
    (pygame.Rect(10, 10, 90, 90), 'truc', hello_world),
    (pygame.Rect(110, 110, 90, 90), 'truc', fonction2),
    (pygame.Rect(220, 220, 90, 90), 'truc', fonction3)]

# plus loin dans le code, quand tu détecte un évenement de clic si tu est dans le mode menu
for rect, _, f in buttons:
    if rect.collide_point((e.x, e.y)):
         f()

# dans ton code d'affichage, si tu est en mode menu
for rect, title, _ in buttons:
    screen.fill(pygame.Color('blue'), rect)
    screen.blit(font.render(title), rect) # un peu foireux, on peut centrer, et tout, c'est pour te donner une idée.

Après, tu peux changer la couleur au survol de la souris, je sais que tu a déjà fait ce genre de trucs dans ton code, smile
code totalement non testé, sans lire la doc, ni riens, ça ne marche probablement pas tongue mais tu devrais comprendre l'idée smile

Bon, de toute façon, pour l'instant, j'essaie de régler la création du .deb et du lancement facile du programme pour comprendre comment ça fonctionne, j'améliorerai le jeu après.

Bon courage smile

Dernière modification par tshirtman (Le 08/07/2011, à 10:09)

Hors ligne

#124 Le 25/07/2011, à 13:41

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

Pour changer d'emplacement mes fichiers afin de les placer dans /usr/bin, je fais d'abord

python setup.py --command-packages=stdeb.command bdist_deb

Je supprime le .deb dans /home/user/miks_game/deb_dist car je vais le recréer après.
Ensuite je suis le chemin suivant: /home/user/miks_game/deb_dist/miksgame-1.0/debian/python-miksgame/usr/share/pyshared où je retrouve mes fichiers et dossiers.
Je les déplace, au besoin en créant le répertoire bin dans /home/user/miks_game/deb_dist/miksgame-1.0/debian/python-miksgame/usr/ et ensuite, j'utilise

dpkg-deb -b python-miksgame

Jusqu'ici, cette technique marchait à peu près pour recréer un .deb avec les fichiers changés de place, mais après plusieurs changements de miks_game.py et de setup.py pour régler les problèmes de chemins, ça ne fonctionne plus très bien. Je suppose que j'ai oublié une partie de la démarche, je n'ai pas pensé à le noter ici pour m'en souvenir. Le problème semble venir de mon fichier DEBIAN/control, mais il paraît correct à 1ère vue.

Le script shell avec le chemin vers le fichier ne fonctionne pas trop bien non plus, j'ai dû faire des erreurs quelque part.

Voici le début du fichier miks_game.py, avec les petits changements (realpath remplace abspath, par exemple et le chemin du dossier data est le chemin complet et non relatif)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# importe la bibliothèque Pygame
import pygame
from pygame.locals import *
import os
import sys
from stat import ST_CTIME

# indique le chemin du dossier
nom_fichier = __file__
chemin1 = os.path.realpath(nom_fichier)
chemin = os.path.dirname(chemin1) + '/'

images_file = 'images/'

# chemin des images de fond
data_file1 = 'data'
data_file = 'data/'

# trie les images du dossier data en fonction de la date
def get_files_by_date(directory):
    files = [(os.stat(directory+'/'+f)[ST_CTIME], f) for f in os.listdir(directory) if os.path.isfile(directory+'/'+f)]
    files.sort()
    files.reverse()
    
    return [f for s, f in files]
    
chemincomplet= chemin + data_file

listfichier = get_files_by_date(chemincomplet)

print listfichier

# les 2 images les plus récentes du dossier data
image1b = listfichier[0]
image2b = listfichier[1]

setup.py permettant de mettre automatiquement les dossiers data et images dans /usr/share/pyshared (voir la première partie de DATA et IMAGES):

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
from stat import ST_CTIME
from distutils.core import setup

# chemin des images de fond
data_file1 = 'data'
data_file = 'data/'


def get_files_by_date(directory):
    files = [(os.stat(directory+'/'+f)[ST_CTIME], f) for f in os.listdir(directory) if os.path.isfile(directory+'/'+f)]
    files.sort()
    files.reverse()
    
    return [f for s, f in files]
    
chemincomplet= os.path.abspath(data_file1)

listfichier = get_files_by_date(chemincomplet)

image1b = listfichier[0]
image2b = listfichier[1]

DATA = [('share/pyshared/data/', ['data/'+image1b, 'data/'+image2b])]
IMAGES = [('share/pyshared/images/', ['images/arriereplan.png', 'images/arriereplan_cote.png', 'images/arriereplan_cote2.png', 'images/miks_roll2.png', 'images/miks_smackup2.png', 'images/miks_static.png', 'images/miks_walk2.png', 'images/tux_defaite.png', 'images/tux_victoire.png'])]

setup(name='miks_game',
      version='1.0',
      description='game for kids',
      author='Doudoulolita',
      author_email='doudou-lolita@hotmail.fr',
      url='http://oursement-votre.com/document/', 
      py_modules=['miks_game'],
      data_files= DATA+IMAGES,
      )

Dernière modification par doudoulolita (Le 25/07/2011, à 14:26)

Hors ligne

#125 Le 25/07/2011, à 13:53

doudoulolita

Re : Faire une animation sur la création de jeux vidéo libres

Ah, j'ai testé le script shell de nouveau en le plaçant dans usr/bin et en plaçant à la main miks_game.py dans /usr/share/pyshared/
Ca se lance bien si on pense à Autoriser l'exécution du fichier dans un programme (clic droit > Propriétés, onglet permissions)  smile

J'ai trouvé dans http://docs.python.org/distutils/setups … ng-scripts un code à mettre dans le setup pour les script, je vais tester.

Dernière modification par doudoulolita (Le 25/07/2011, à 14:26)

Hors ligne