Conway's Game of Life
Header file:
/**************************************************************************** ** $Id: $ ** ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #ifndef LIFE_H #define LIFE_H #include <qframe.h> class LifeWidget : public QFrame { Q_OBJECT public: LifeWidget( int s = 10, QWidget *parent = 0, const char *name = 0 ); void setPoint( int i, int j ); int maxCol() { return maxi; } int maxRow() { return maxj; } public slots: void nextGeneration(); void clear(); protected: virtual void paintEvent( QPaintEvent * ); virtual void mouseMoveEvent( QMouseEvent * ); virtual void mousePressEvent( QMouseEvent * ); virtual void resizeEvent( QResizeEvent * ); void mouseHandle( const QPoint &pos ); private: enum { MAXSIZE = 50, MINSIZE = 10, BORDER = 5 }; bool cells[2][MAXSIZE + 2][MAXSIZE + 2]; int current; int maxi, maxj; int pos2index( int x ) { return ( x - BORDER ) / SCALE + 1; } int index2pos( int i ) { return ( i - 1 ) * SCALE + BORDER; } int SCALE; }; #endif // LIFE_H
Implementation:
/**************************************************************************** ** $Id: $ ** ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include "life.h" #include <qpainter.h> #include <qdrawutil.h> #include <qcheckbox.h> #include <qevent.h> #include <qapplication.h> // The main game of life widget
Main:
/**************************************************************************** ** $Id: $ ** ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include "lifedlg.h" #include <qapplication.h> #include <stdlib.h> void usage() { qWarning( "Usage: life [-scale scale]" ); } int main( int argc, char **argv ) { QApplication a( argc, argv ); int scale = 10; for ( int i = 1; i < argc; i++ ){ QString arg = argv[i]; if ( arg == "-scale" ) scale = atoi( argv[++i] ); else { usage(); exit(1); } } if ( scale < 2 ) scale = 2; LifeDialog *life = new LifeDialog( scale ); a.setMainWidget( life ); life->setCaption("Qt Example - Life"); life->show(); return a.exec(); } See also Examples. |
Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. | Qt 3.2 | |
Copyright © 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD. | ||
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP ! |
Copyright © 2000-2012 - www.developpez.com