Contenu | Rechercher | Menus

Annonce

Le forum a une nouvelle maison !
Le forum a été migré sur un nouvel hébergement. Si jamais vous trouvez le moindre problème, n'hésitez pas à nous en faire part !
Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#1 Le 11/01/2006, à 19:21

GI
Invité

python jeu de la vie

Salut tout le monde,

je dois programmer le jeu de la vie en python avec une interphace graphique, alors que je ne connais que le langage C...
si quelqu'un pouvait m'aider c'est cool...

merci d'avance

#2 Le 11/01/2006, à 20:00

milambert
Membre

Re : python jeu de la vie

voici un bon cours pour le python: http://www.ulg.ac.be/cifen/inforef/swi/python.htm

dans le bas de la page se trouvent tous les liens pour le download (corrigés des exercices, le cours en pdf, ...)


mouarf, ...

Hors ligne

#3 Le 11/01/2006, à 20:07

jib
Invité

Re : python jeu de la vie

Pas de porno sur le forum tongue.

Sincèrement, c'est quoi, le «jeu de la vie» ?

Je sais, je ne suis pas un programmeur python, et ça se voit.
Mais ça fait remonter ton sujet, sans compter la réponse qu'elle nécessite wink...

Dernière modification par jib (Le 11/01/2006, à 20:13)

#4 Le 11/01/2006, à 20:46

Mathieu147
Membre

Re : python jeu de la vie

jib a écrit :

c'est quoi, le «jeu de la vie» ?

C'est ça.

Y'en a en écran de veille dans Breezy je crois.


Pffff…

Hors ligne

#5 Le 11/01/2006, à 21:23

ant1
Membre

Re : python jeu de la vie

Pour ceux que ça peut intéresser :
http://jcheudin.blogspot.com/

Hors ligne

#6 Le 11/01/2006, à 21:29

jib
Invité

Re : python jeu de la vie

Étrange... Merci quand même...

Dernière modification par jib (Le 11/01/2006, à 21:30)

#7 Le 11/01/2006, à 22:04

bergi
Membre

Re : python jeu de la vie

je dirais que c'est un classique en programmation apres " hello world".
C'est encore pour un cours ?

http://t0m.free.fr/jdlv/

http://www.radicaleye.com/lifepage/patterns/psrtrain.html

Dernière modification par bergi (Le 11/01/2006, à 22:11)

Hors ligne

#8 Le 12/01/2006, à 10:17

Nim
Membre

Re : python jeu de la vie

Pour les personnes ayant déjà une petite expérience en programmation, je conseillerai plus le très bon : http://fr.diveintopython.org/ pour commencer en python.

Hors ligne

#9 Le 12/01/2006, à 10:37

Desintegr
Membre

Re : python jeu de la vie

Si tu connais GTK, tu peux utiliser les modules PyGTK qui un wrapper pour utiliser GTK avec Python.
Sinon, il y a aussi PyQt, c'est comme PyGTK mais avec Qt cette fois.

Il existe aussi le module tkinter qui être peut-être plus simple à utiliser que PyGTK et PyQt.

Ou sinon le module curses (utilisation plus graphique du terminal).


Hoc Volo, Sic Jubeo !
Mon wiki : http://desintegr.free.fr

Hors ligne

#10 Le 13/01/2006, à 10:31

bergiautaf
Invité

Re : python jeu de la vie

Vouila je viens de retrouver mon jeu de la vie lors de mon apprentissage de python il subsiste quelques bugs mais c'est un debut qui peut t'aider :

from Tkinter import *
from random import *
from threading import Thread
import time

class MenuBar(Frame):
    """Barre de menus déroulants"""
    def __init__(self, boss=None):
        Frame.__init__(self, borderwidth =2)
        ##### Menu <Fichier> #####
        fileMenu = Menubutton(self, text ='motif')
        fileMenu.pack(side =LEFT)
        # Partie "déroulante" :
        me1 = Menu(fileMenu)
        me1.add_command(label ='alea', underline =0, command = boss.motif1)
        me1.add_command(label ='rpentomino', underline =0, command = boss.motif2)
        me1.add_command(label ='tpentomino', underline =0, command = boss.motif3)
        me1.add_command(label ='planeur', underline =0, command = boss.motif4)
        me1.add_command(label ='locomotive', underline =0, command = boss.motif6)
        me1.add_command(label ='vaisseau', underline =0, command = boss.motif5)
        me1.add_command(label ='Effacer', underline =0, command = boss.effacer)
        me1.add_command(label ='Terminer', underline =0, command = boss.quit)
        # Intégration du menu :
        fileMenu.configure(menu = me1)
        
class Fenetre(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.master.geometry("350x350")
        self.master.title(" Jeu de la vie")
        self.jeu =Panneau(self)
        mBar = MenuBar(self.jeu)
        mBar.pack()
        self.jeu.pack(expand =YES, fill=BOTH, padx =0, pady =0)
        self.pack()

class Panneau(Frame, Thread):
    """Panneau de jeu (grille de n x m cases)"""
    def __init__(self, boss =None):
        self.ligne=70
        self.colonne=50
        Frame.__init__(self)
        Thread.__init__(self)
        # Canevas :
        self.can =Canvas(self,width=350, height =350, borderwidth =0)
        # Liaison de l'evenement <clic de souris> a son gestionnaire :
        self.can.bind("<Button-1>", self.clic)
        self.can.pack()
        
        self.cell =[] # construction d'une liste de listes
        self.tabcell=[]
        for i in range(self.ligne): # equivalente a un tableau
            self.cell.append([0]*self.ligne) # de x lignes x x colonnes)
            self.tabcell.append([0]*self.ligne)

         #self.motif("alea")
        self.start()
        
    def motif1(self):
        self.effacer()
        element=[1,0]
        for j in range(self.colonne) :
            for i in range(self.ligne):
                self.cell[i][j]=choice(element)
        self.update()
        
    def motif2(self):
        self.effacer()
        #r-pentomino
        self.cell[26][25]=1
        self.cell[24][26]=1
        self.cell[25][26]=1
        self.cell[26][26]=1
        self.cell[25][27]=1
        self.update()
        
    def motif3(self):
        self.effacer()
        #t-pentomino
        self.cell[24][36]=1
        self.cell[25][36]=1
        self.cell[26][36]=1
        self.cell[25][37]=1
        self.update()
        
    def motif4(self):
        self.effacer()
        #planeur
        self.cell[5][6]=1
        self.cell[6][7]=1
        self.cell[7][5]=1
        self.cell[7][6]=1
        self.cell[7][7]=1
        self.update()
        
    def motif5(self):
        self.effacer()
        #vaisseau spatial
        self.cell[26][26]=1
        self.cell[27][27]=1
        self.cell[23][28]=1
        self.cell[27][28]=1
        self.cell[24][29]=1
        self.cell[25][29]=1
        self.cell[26][29]=1
        self.cell[27][29]=1
        self.update()
        
    def motif6(self):
        self.effacer()
        #locomotive à vapeur
        self.cell[23][26]=1
        self.cell[26][26]=1
        self.cell[27][27]=1
        self.cell[23][28]=1
        self.cell[27][28]=1
        self.cell[24][29]=1
        self.cell[25][29]=1
        self.cell[26][29]=1
        self.cell[27][29]=1

        self.cell[23][33]=1
        self.cell[24][34]=1
        self.cell[25][34]=1
        self.cell[25][35]=1
        self.cell[25][36]=1
        self.cell[24][37]=1
                
        self.cell[23][40]=1
        self.cell[26][40]=1
        self.cell[27][41]=1
        self.cell[23][42]=1
        self.cell[27][42]=1
        self.cell[24][43]=1
        self.cell[25][43]=1
        self.cell[26][43]=1
        self.cell[27][43]=1                
        self.update()

    def update(self):
        for j in range (self.colonne):
               for i in range (self.ligne):
                   if self.cell[i][j]==1:
                       self.tabcell[i][j]=self.can.create_rectangle((i*6),(j*6),(i*6)+4,(j*6)+4,fill="black")
                   else :
                       self.tabcell[i][j]=self.can.create_rectangle((i*6),(j*6),(i*6)+4,(j*6)+4,fill="white")
         
    def run(self):
        while 1:
            for j in range (self.colonne):
                for i in range (self.ligne):
                    if self.cell[i][j]==1:
                        self.can.itemconfigure(self.tabcell[i][j],fill="black")
                    else :
                        self.can.itemconfigure(self.tabcell[i][j],fill="white")
            self.evolution()            
            time.sleep(0.1)
            
    def effacer(self):
        for j in range(self.colonne) :
            for i in range(self.ligne):
                self.cell[i][j]=0
        #effacer !
        self.can.delete(ALL)
        
    def evolution(self):
        #buffer
        self.c =[]
        for i in range(self.ligne): # equivalente a un tableau
            self.c.append([0]*self.ligne) # de x lignes x x colonnes)
            
        #for j in range(self.colonne) :
           # for i in range(self.ligne):
              #  self.c[i][j]=self.cell[i][j] # construction d'une liste de listes
        
        for j in range(self.colonne) :
            for i in range(self.ligne):
                cpt=0
                self.c[i][j]=self.cell[i][j] # remplissage du buffer
                #regles de conway
                #case precedente et suivante
                if self.cell[(self.ligne+i-1)%self.ligne][j]==1:
                    cpt=cpt+1
                if self.cell[(self.ligne+i+1)%self.ligne][j]==1:
                    cpt=cpt+1
                #ligne precedente
                if self.cell[(self.ligne+i-1)%self.ligne][(self.colonne+j-1)%self.colonne]==1:
                    cpt=cpt+1
                if self.cell[i][(self.colonne+j-1)%self.colonne]==1:
                    cpt=cpt+1
                if self.cell[(self.ligne+i+1)%self.ligne][(self.colonne+j-1)%self.colonne]==1:
                    cpt=cpt+1
                #ligne suivante
                if self.cell[(self.ligne+i-1)%self.ligne][(self.colonne+j+1)%self.colonne]==1:
                    cpt=cpt+1		
                if self.cell[i][(self.colonne+j+1)%self.colonne]==1:
                    cpt=cpt+1
                if self.cell[(self.ligne+i+1)%self.ligne][(self.colonne+j+1)%self.colonne]==1:
                    cpt=cpt+1
                #resolution des regles
                if (self.cell[i][j]==1 and (cpt==2 or cpt==3) ) :
                    self.c[i][j]=1
                else :
                    if (self.cell[i][j]==0 and cpt==3) :
                        self.c[i][j]=1
                    else :
                        self.c[i][j]=0
        #self.cell=self.c
        for j in range(self.colonne) :
            for i in range(self.ligne):
                self.cell[i][j]=self.c[i][j] # construction d'une liste de listes
                        
    def clic(self, event):
        #evenement souris
        print "clic clic"        
        
if __name__ == '__main__':
    Fenetre().mainloop()

#11 Le 13/01/2006, à 11:47

alexmic
Membre

Re : python jeu de la vie

A baj j'en avais fait un en java 2.0 il y 4 ou 5 ans... il était hum... plus long (un petite dizaine de pages de codes en courrier 9, mais hautemetn documenté).

Faut dire qu'en java le graphisme c'est moins simple.  (mais c'est aussi pas le but).

L'année suivante c'était OCR wink

On voit que les profs debordent toujours d'imagination...


OMG Lawl pwnd rofl... Plaît-il?

Hors ligne