#!/usr/bin/python # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui, QtCore from PyQt4 import Qt from random import randrange class Vie(QtGui.QMainWindow): def __init__(self): super(Vie, self).__init__() self.initUI() def initUI(self): # la barre d'icones avec une seule icone pour quitter exitAction = QtGui.QAction(QtGui.QIcon('exit24.png'), 'Exit', self) exitAction.setShortcut('Ctrl+Q') exitAction.triggered.connect(QtGui.qApp.quit) self.toolbar = self.addToolBar('Exit') self.toolbar.addAction(exitAction) self.nombre=10 #nombre de cases dans chaque dimension self.nombrey=10 self.tableau=[] self.rectangles=[] largeur_ecran=600 hauteur_ecran=600 self.taille=min((hauteur_ecran-60)/self.nombrey,(largeur_ecran-10)/self.nombre) #taille d'un carré self.setGeometry(50, 50, largeur_ecran, hauteur_ecran) self.setWindowTitle('Le jeu de la Vie') self.cree_tableau() self.paev=0 # le compteur qui s'affiche à chaque fois qu'on va dans paintEvent self.show() def mousePressEvent(self,event): self.startx=event.x() self.starty=event.y() def mouseReleaseEvent(self,event): self.endx=event.x() self.endy=event.y() if self.startx==self.endx and self.starty==self.endy: i=(self.startx-5)/self.taille j=(self.starty-60)/self.taille if i in range(self.nombre) and j in range(self.nombrey): self.tableau[i][j]=1-self.tableau[i][j] def paintEvent(self, e): qp = QtGui.QPainter() qp.begin(self) qp.fillRect(self.surface,QtGui.QColor(0, 200, 0)) for i in range(self.nombre): for j in range(self.nombrey): if self.tableau[i][j]==1: qp.fillRect(self.rectangles[i][j],QtGui.QColor(0, 0, 200)) self.paev+=1 print self.paev def cree_tableau(self): for i in range(self.nombre): ligne=[] ligne_rect=[] for j in range(self.nombrey): ligne_rect.append(Qt.QRect(5+self.taille*i,60+self.taille*j,self.taille,self.taille)) ligne.append(0) self.tableau.append(ligne) self.rectangles.append(ligne_rect) self.surface=Qt.QRect(5,60,self.taille*self.nombre, self.taille*self.nombrey) def main(): app = QtGui.QApplication(sys.argv) ex = Vie() sys.exit(app.exec_()) if __name__ == '__main__': main()