jeu_de_la_vie
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
jeu_de_la_vie [2019/10/07 13:12] – Labomedia | jeu_de_la_vie [2019/10/21 09:21] – Camille | ||
---|---|---|---|
Ligne 59: | Ligne 59: | ||
Un code python pour la prise en compte des billes et l' | Un code python pour la prise en compte des billes et l' | ||
OS Raspbian version Buster (10.4 (?)) | OS Raspbian version Buster (10.4 (?)) | ||
- | Modifications de l' | + | Modifications de l'OS:\\ |
- | -prise en compte du bouton marche/ | + | -prise en compte du bouton marche/ |
- | -lancement du programme Jeu de la vie au démarrage de l'OS | + | -lancement du programme Jeu de la vie au démarrage de l'OS\\ |
- | Sauvegarde du système complet sur une carte SD de secours: procédure | + | Sauvegarde du système complet sur une carte SD de secours: procédure\\ |
- | -copie de la carte SD d' | + | -copie de la carte SD d' |
- | -copie sur une autre carte SD | + | -copie sur une autre carte SD\\ |
- | Liste exhaustive du matériel: | + | Liste exhaustive du matériel:\\ |
- | Photos | + | Photos\\ |
- | Codes | + | Codes\\ |
- | Schéma électrique pour les FSR | + | Le code a été écrit en python et utilise la bibliothèque pygame. Il s'agit de l' |
- | Schéma d' | + | http:// |
- | Schéma de câblage sur la Raspberry | + | |
+ | |||
+ | ======================================================= | ||
+ | |||
+ | <code python> | ||
+ | | ||
+ | from pygame.locals import * | ||
+ | | ||
+ | | ||
+ | from time import sleep | ||
+ | |||
+ | | ||
+ | # vérification du nombre de capteurs définis | ||
+ | | ||
+ | | ||
+ | | ||
+ | # les broches sur lesquelles se trouvent les capteurs, ainsi que les broches 14 et 15, sont configurées en entrée. | ||
+ | # Par défaut, les broches des capteurs sont à l' | ||
+ | # Les broches 14 et 15 (sur lesquelles sont câblés des boutons) sont au niveau électrique haut par défaut | ||
+ | for n in GPIOCasesInit: | ||
+ | | ||
+ | | ||
+ | | ||
+ | # les broches 14 et 15 détecteront un front descendant | ||
+ | | ||
+ | | ||
+ | # | ||
+ | FPS = 10 | ||
+ | |||
+ | ### | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | #les dimensions de la grille sont-elles des multiples du nombre de cellules | ||
+ | | ||
+ | | ||
+ | |||
+ | # | ||
+ | | ||
+ | | ||
+ | |||
+ | # fabrication des couleurs | ||
+ | BLACK = (0, 0, 0) | ||
+ | WHITE = (255, | ||
+ | | ||
+ | GREEN = (50, | ||
+ | RED = (255, 0, 100) | ||
+ | |||
+ | | ||
+ | |||
+ | def text_objects(text, | ||
+ | | ||
+ | | ||
+ | |||
+ | def afficheInit(text, | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | # | ||
+ | def drawGrid(): | ||
+ | for x in range(0, WINDOWWIDTH, | ||
+ | | ||
+ | for y in range (0, WINDOWHEIGHT, | ||
+ | | ||
+ | |||
+ | |||
+ | def drawGridExample(): | ||
+ | for n in BoxExample: | ||
+ | | ||
+ | |||
+ | # | ||
+ | def colourGrid(item, | ||
+ | x = item[0] | ||
+ | y = item[1] | ||
+ | y = y * CELLSIZE # transforme le tableau de dimension de la grille | ||
+ | x = x * CELLSIZE # transforme le tableau de dimension de la grille | ||
+ | if lifeDict[item] == 0: | ||
+ | | ||
+ | if lifeDict[item] == 1: | ||
+ | | ||
+ | | ||
+ | |||
+ | # | ||
+ | # | ||
+ | def blankGrid(): | ||
+ | | ||
+ | # | ||
+ | for y in range (CELLHEIGHT): | ||
+ | for x in range (CELLWIDTH): | ||
+ | | ||
+ | | ||
+ | |||
+ | def startingGridInit(lifeDict, | ||
+ | for ncapt in GPIOCasesInit: | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | # | ||
+ | def getNeighbours(item, | ||
+ | | ||
+ | for x in range (-1,2): | ||
+ | for y in range (-1,2): | ||
+ | | ||
+ | if checkCell[0] < CELLWIDTH | ||
+ | if checkCell [1] < CELLHEIGHT and checkCell[1]> | ||
+ | if lifeDict[checkCell] == 1: | ||
+ | if x == 0 and y == 0: # la cellule centrale n'est pas prise en compte | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | #Calcul de la nouvelle génération par appel à la fonction ' | ||
+ | def tick(lifeDict): | ||
+ | | ||
+ | for item in lifeDict: | ||
+ | # | ||
+ | | ||
+ | if lifeDict[item] == 1: # Pour les cellules encore vivantes | ||
+ | if numberNeighbours < 2: # mort par sous-population | ||
+ | | ||
+ | elif numberNeighbours > 3: #mort par surpopulation | ||
+ | | ||
+ | | ||
+ | | ||
+ | elif lifeDict[item] == 0: | ||
+ | if numberNeighbours == 3: # naissance d'une cellule | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | # | ||
+ | def main(): | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | # | ||
+ | for item in lifeDict: | ||
+ | | ||
+ | | ||
+ | | ||
+ | while True: #main game loop | ||
+ | for event in pygame.event.get(): | ||
+ | if event.type == QUIT: | ||
+ | | ||
+ | | ||
+ | # | ||
+ | if event.type == pygame.KEYUP: | ||
+ | | ||
+ | | ||
+ | | ||
+ | if ps14!=cs14: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | doit_demarrer = True | ||
+ | nb_viv+=1 | ||
+ | print(GPIOCasesInit[elem]) | ||
+ | print(' | ||
+ | if doit_demarrer: | ||
+ | etat=1 | ||
+ | lifeDict = startingGridInit(lifeDict, | ||
+ | else: | ||
+ | etat=0 | ||
+ | elif(etat==1): | ||
+ | if(ps15==1 and cs15==0): | ||
+ | etat=0 | ||
+ | lifeDict=blankGrid() | ||
+ | if(ps14==1 and cs14==0): | ||
+ | #Calcul de l' | ||
+ | nb_viv=0 | ||
+ | lifeDict = tick(lifeDict) | ||
+ | print(' | ||
+ | for item in lifeDict: | ||
+ | if(lifeDict[item]): | ||
+ | nb_viv=nb_viv+1 | ||
+ | print(nb_viv) | ||
+ | if(nb_viv==0): | ||
+ | print(' | ||
+ | etat=0 | ||
+ | #Colours the live cells, blanks the dead | ||
+ | for item in lifeDict: | ||
+ | colourGrid(item, | ||
+ | drawGrid() | ||
+ | pygame.display.update() | ||
+ | ps14=cs14 | ||
+ | ps15=cs15 | ||
+ | sleep(0.1) | ||
+ | # | ||
+ | |||
+ | if __name__==' | ||
+ | main() | ||
+ | |||
+ | </ | ||
+ | ======================================================= | ||
+ | |||
+ | |||
+ | |||
+ | Schéma électrique pour les FSR\\ | ||
+ | Schéma d' | ||
+ | Schéma de câblage sur la Raspberry\\ | ||
=====Retour d' | =====Retour d' |
jeu_de_la_vie.txt · Dernière modification : 2020/10/29 14:03 de serge