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.

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

GI

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

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

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

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

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

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

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

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

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

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

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