IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Déplacement d'un pion sur un échiquier avec Qt 5


Sujet :

Contribuez

  1. #1
    Invité
    Invité(e)
    Par défaut Déplacement d'un pion sur un échiquier avec Qt 5
    Bonjour,(ou bonsoir)

    voici ma contribution, c'est le même programme que ma contribution de septembre 2012, mais modifié, pour une compilation avec le Qt5 :

    deplacehobj.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    #ifndef _DEPLACEHOBJ_H_
    #define _DEPLACEHOBJ_H_
     
    #include <QtWidgets/QGraphicsScene>
    #include <QtWidgets/QGraphicsView>
    #include <QColor>
    #include <QPolygonF>
    #include <QPolygon>
    #include <QObject>
     
    class Piondeplace : public QObject
    {	Q_OBJECT
    	public :
    	void init()
    	{	s_scene = new QGraphicsScene ;
    		v_view = new QGraphicsView ;	
    		igrec = 5; ikze = 20;
    	}
     
    	void adjuste(QGraphicsScene * mscene,QGraphicsView * mview)
    	{ s_scene = mscene ; v_view = mview ; }
     
    	void objdessin(QGraphicsScene * mscene,int icze = 0,int igrec = 0)
    	{	QColor noirbrun(120,0,0) ;
    		QColor noir(0,0,0) ;
    		QPolygon mpolygon1 ;
    mpolygon1.setPoints(4,(15+icze),(15+igrec),(8+icze),(32+igrec),(32+icze),(32+igrec),(25+icze),(15+igrec) ) ;
    		QPolygon mpolygon2 ;
    mpolygon2.setPoints(4,(8+icze),(40+igrec),(4+icze),(60+igrec),(36+icze),(60+igrec),(32+icze),(40+igrec) ) ;
    		QPolygonF mpolygf1(mpolygon1) ;
    		QPolygonF mpolygf2(mpolygon2) ;
    			mscene->addEllipse((10+icze),igrec,20,16,noir,noirbrun) ;
    			mscene->addPolygon(mpolygf1,noir,noirbrun) ;
    			mscene->addRect((4+icze),(32+igrec),32,8,noir,noirbrun) ;
    			mscene->addPolygon(mpolygf2,noir,noirbrun) ;
    			mscene->addRect(icze,(60+igrec),40,10,noir,noirbrun) ;
    	}
     
    	void carreaux(QGraphicsScene * mscene)
    	{	QColor noir(5,5,5) ;
    		QColor jaune(250,250,0) ;
    		int icze = 0 ;
    //ligne 1 et 2
    		for (icze = 0 ;icze <= 480 ; icze+= 160)
    		{	mscene->addRect(icze,0,80,80,noir,noir) ;
    			mscene->addRect((icze+80),0,80,80,jaune,jaune) ;
    			mscene->addRect((icze+80),80,80,80,noir,noir) ;
    			mscene->addRect(icze,80,80,80,jaune,jaune) ;
    //ligne 3 et 4
    			mscene->addRect(icze,160,80,80,noir,noir) ;
    			mscene->addRect((icze+80),160,80,80,jaune,jaune) ;
    			mscene->addRect((icze+80),240,80,80,noir,noir) ;
    			mscene->addRect(icze,240,80,80,jaune,jaune) ;
    //ligne 5 et 6
    			mscene->addRect(icze,320,80,80,noir,noir) ;
    			mscene->addRect((icze+80),320,80,80,jaune,jaune) ;
    			mscene->addRect((icze+80),400,80,80,noir,noir) ;
    			mscene->addRect(icze,400,80,80,jaune,jaune) ;
    //ligne 7 et 8
    			mscene->addRect(icze,480,80,80,noir,noir) ;
    			mscene->addRect((icze+80),480,80,80,jaune,jaune) ;
    			mscene->addRect((icze+80),560,80,80,noir,noir) ;
    			mscene->addRect(icze,560,80,80,jaune,jaune) ;	
    		}
     
    	}
     
    	public slots :
    	void haut()
    	{	if (igrec > 5) 
    		{ igrec-= 80 ; }
    		else 
    		{ igrec = 5 ; }
     
    		emit appuiet() ;
    	}
    	void bas()
    	{	if(igrec < 565)
    		{ igrec+= 80 ; }
    		else
    		{ igrec = 565; }	
    		emit appuiet() ;
    	}
    	void droite()
    	{	if(ikze < 580)
    		{ ikze+= 80 ; }
    		else
    		{ ikze = 580 ; }
    		emit appuiet() ;
    	}
    	void gauche()
    	{	if(ikze > 20)
    		{ ikze-= 80 ; }
    		else
    		{ ikze = 20 ; }
    		emit appuiet() ;
    	}	
     
    	void deplace()
    	{	s_scene->clear() ;
    		carreaux(s_scene) ;
    		objdessin(s_scene,ikze,igrec) ;	
    	//	v_view->setScene(s_scene) ;
    		v_view->update() ;
    	}
     
    	signals :
    	void appuiet() ;
     
    	private :
    	QGraphicsScene * s_scene ;
    	QGraphicsView * v_view ;	
    	int igrec ;
    	int ikze ;
    };
     
    #endif
    deplacehobj.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     #include "deplacehobj.h"
    #include <QtWidgets/QApplication>
    #include <QtWidgets/QShortcut>
     
    //#include <QtWidgets/QGraphicsScene>
    //#include <QtWidgets/QGraphicsView>
    //#include <QColor>
    //#include <QPolygonF>
    //#include <QPolygon>
    //#include <QObject>
    int main(int argc,char ** argv)
    {	QApplication app(argc,argv) ;
    	QGraphicsScene * mscene = new QGraphicsScene(0,0,640,640) ;
    	QGraphicsView * ecran = new QGraphicsView ;
    	Piondeplace objet1 ;
    		objet1.init() ;
    		objet1.carreaux(mscene) ;
    		objet1.objdessin(mscene,20,5) ;
    	QShortcut * hautbtn = new QShortcut(ecran) ;
    	QShortcut * basbtn = new QShortcut(ecran) ;
    	QShortcut * gauchebtn = new QShortcut(ecran) ;
    	QShortcut * droitebtn = new QShortcut(ecran) ;
    	QShortcut * objet2 = new QShortcut(ecran) ;
    		hautbtn->setKey(Qt::Key_Up) ;
    		basbtn->setKey(Qt::Key_Down) ;
    		gauchebtn->setKey(Qt::Key_Left) ;
    		droitebtn->setKey(Qt::Key_Right) ;
    		objet2->setKey(Qt::Key_S) ;
    	QObject::connect(hautbtn,SIGNAL(activated()),&objet1,SLOT(haut()) ) ;
    	QObject::connect(basbtn,SIGNAL(activated()),&objet1,SLOT(bas()) ) ;
    	QObject::connect(gauchebtn,SIGNAL(activated()),&objet1,SLOT(gauche()) ) ;
    	QObject::connect(droitebtn,SIGNAL(activated()),&objet1,SLOT(droite()) ) ;
    	QObject::connect(&objet1,SIGNAL(appuiet()),&objet1,SLOT(deplace()) ) ;
    	QObject::connect(objet2,SIGNAL(activated()),&app,SLOT(quit()) ) ;
    		ecran->setScene(mscene) ;
    		ecran->setFixedSize(645,645) ;
    		ecran->show() ;
    		objet1.adjuste(mscene,ecran) ;
    app.exec() ;
    return 0 ;
    }
    Dans le fichier .pro il faut rajouter ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LIBS += -L/usr/local/Qt-5.0.1/lib
    LIBS += -lQt5Widgets
    La compilation sous le terminal (Konsole) pour kde (ou gnome) est la suivante:

    Dans la fenêtre du terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    :~$ /usr/local/Qt-5.0.1/bin/qmake -project
    :~$ ls
    :~$ /usr/local/Qt-5.0.1/bin/qmake
    :~$ make
    Ce programme a été revu et corrigé sur kde (linux Kubuntu) le fichier d'instalation que j'ai utilisé est au lien suivant :
    http://qt-project.org/downloads
    puis tar.gz

    Et un lien vidéo :

    http://www.dailymotion.com/compiler-executer-un-programme-ecrit-en-qt4-c-sur-linux
    Dernière modification par Invité ; 01/02/2013 à 02h23.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ...j'ai récemment ,vu ,qu'il y avait plus court...pour la modification du fichier .pro (obtenue aprés l'execution de qmake -project),voici ce qu'il faut modifier (ou rajouter) avec un éditeur de texte gedit ou kwrite ou etc...:

    votre_fichier.pro
    ensuite dans le terminal(émulateur) executer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    :~/dossierproject $ /usr/local/qt-5.0.1/bin/qmake
    :~/dossierproject $ ls
    :~/dossierproject $ make
    :~/dossierproject $ ./programme_compile
    Dans le fichier deplacehobj.h il faut remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <QtWidgets/QGraphicsScene> 
    #include <QtWidgets/QGraphicsView>
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <QGraphicsScene>
    #include <QGraphicsView>
    et dans le fichier deplacehobj.cpp il faut remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <QtWidgets/QApplication>
    #include <QtWidgets/QShortCut>
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <QApplication>
    #include <QShortCut>

    pour l'instalation du qt-5.0.2...tar.gz, il faudra peut-être pour d'autre version linux,rajouter les librairies libicu-dev et libwebkit-dev avec le gestionnaire de packages.

    Voir aussi : Le forum Qt, les cours et tutoriels Qt, et la FAQ Qt.

    Aurevoir...

Discussions similaires

  1. Déplacement d'un pion sur un échiquier
    Par Invité dans le forum Contribuez
    Réponses: 7
    Dernier message: 20/09/2012, 14h22
  2. Faire un zoom sur courbe Wave avec déplacement
    Par FredericB dans le forum C++Builder
    Réponses: 3
    Dernier message: 23/04/2006, 14h22
  3. vision d'un pion sur un damier.
    Par Med_Prog dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 08/09/2005, 10h39
  4. Problème sur une cmd avec AWK
    Par OrangeBud dans le forum Linux
    Réponses: 3
    Dernier message: 02/06/2004, 10h51
  5. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo