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


Sujet :

Contribuez

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

    Voici ma nouvelle contribution ,un programme qui permet (simplement) de déplacer un pion sur un échiquier ,grace aux touches directionnel du clavier...
    La commande de sortie est la touche "s" du clavier...

    Voilà en deux fichiers, le programme compilable :

    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
    #ifndef _DEPLACEHOBJ_H_
    #define _DEPLACEHOBJ_H_
     
    #include <QGraphicsScene>
    #include <QGraphicsView>
    #include <QColor>
    #include <QPolygonF>
    #include <QPolygon>
    #include <QObject>
     
    class Nomduneclace : 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
    42
    43
    44
     
    //un programme pour déplacer
    //un objet dessin
    #include "deplacehobj.h"
    #include <QApplication>
    #include <QShortcut>
     
    //#include <QGraphicsScene>
    //#include <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 ;
    	Nomduneclace 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 ;
    }
    Ce programme a été crée sous linux gnome 3 ubuntu 12.04 avec Qt 4.8.2

    Bonne programmation .

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Nomduneclace
    C'est pas du tout super.

    Pour un .h il y a trop de code à mon gout.

    Ensuite, pourriez vous proposer un projet complet, avec le .pro et le code afin qu'on puisse le compiler facilement.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Invité
    Invité(e)
    Par défaut
    ...

    C'est vrai que j'étais pas trop inspiré pour le nom de la class ...
    (...)
    Pour la compilation,(peut-être)...mieux que le fichier project .pro ,je peux donner un fichier .sh pour facilité la compilation
    mais seulement ,sous linux gnome (ou systême graphique linux).
    car je n'ai pas Windows, mais peut-etre un fichier batch (.bat) en équivalent pourrait facilité autant ?...

    Mais sinon voici,le fichier .sh :
    pourcompil.sh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/sh
    clear ; clear ;
    /usr/local/Trolltech/Qt-4.8.2/bin/qmake -project ;
    /usr/local/Trolltech/Qt-4.8.2/bin/qmake ;
    make ;
    Et la commande sous le Terminal (ou Xterm,ou Konsole):


  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    J'imagine donc que vous n'utilisez pas de QtCreator ni autre IDE.
    Alors, au minimum, c'est un makefile, qu'il faut utiliser. -> http://gl.developpez.com/tutoriel/outil/makefile/

    Et à la place de spécifier tout le chemin de qmake, il suffit de juste dire "qmake", s'il est dans le PATH c'est bon, sinon ... c'est qu'il est pas installé et hop
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Invité
    Invité(e)
    Par défaut
    ...
    Au faite...,j'utilise plutôt un éditeur de texte comme Gedit (ou Kwrite sous Kde)pour écrire mes programmes ,puis j'éxecute les commandes comme dans le fichier .sh,donc oui c'est vrai je n'utilise pas le QtCreator (pour des raisons personnels) et pour le fichier .pro,il est généré directement
    avec ces commandes qmake -project,qmake...
    Donc non, je ne fait pas moi même de fichier makefile !...
    Donc je suis désolé ,je ne peux pas ,donnez ce fichier...

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Si le fichier .pro est généré par la commande qmake -project, cela signifie que vous pouvez le donner, non ? (je sais plus si c'est le bon par contre, mais je crois que si)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Invité
    Invité(e)
    Par défaut
    .....D'accord,ok euh... voilà le fichier .pro...

    deplacehobj.pro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ######################################################################
    # Automatically generated by qmake (2.01a) ven. sept. 14 14:37:25 2012
    ######################################################################
     
    TEMPLATE = app
    TARGET = 
    DEPENDPATH += .
    INCLUDEPATH += .
     
    # Input
    HEADERS += deplacehobj.h
    SOURCES += deplacehobj.cpp

  8. #8
    Invité
    Invité(e)
    Par défaut
    ...
    Nom : deplaceobj2.png
Affichages : 241
Taille : 8,8 Ko
    Aurevoir...!

Discussions similaires

  1. Déplacement d'un pion sur un échiquier avec Qt 5
    Par Invité dans le forum Contribuez
    Réponses: 1
    Dernier message: 06/05/2013, 21h28
  2. [AJAX] Déplacement d'un cadre sur une image
    Par black is beautiful dans le forum AJAX
    Réponses: 2
    Dernier message: 26/01/2010, 15h19
  3. Déplacement des disques dur sur un autre serveur : Kernel Panic
    Par joomlaboy dans le forum Administration système
    Réponses: 3
    Dernier message: 07/08/2009, 23h10
  4. 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
  5. Déplacement d'une Cible sur une droite
    Par kurul1 dans le forum C++Builder
    Réponses: 10
    Dernier message: 11/07/2005, 16h44

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