Jeu puissance 4

Résolu
cs_Franini Messages postés 3 Date d'inscription dimanche 18 avril 2010 Statut Membre Dernière intervention 20 avril 2010 - 19 avril 2010 à 15:48
yannba Messages postés 133 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 7 septembre 2010 - 21 avril 2010 à 14:22
Bonjour,

Dans le cadre de mes cours, je dois créer un jeu de puissance 4 sur Delphi.
Je travaille avec 1 stringgrid dont j'arrive à colorer les cases, et avec deux radiobutton, le premier indiquant la couleur rouge pour les cellules et le deuxième la couleur jaune.
Mais je rencontre un problème lorsque c'est au tour du joueur 2 car la case sélectionnée par le joueur1 change également de couleur en plus de la nouvelle case sélectionnée par le joueur 2.
Je pense que c'est dû au fait que cette première cellule reste sélectionnée, du coup elle passe de rouge à jaune. et vice versa quand le tour passe au joueur 1...
J'aimerais donc savoir s'il est possible d'enlever cette sélection à la cellule avant que l'autre joueur ne sélectionne la sienne.
J'ai essayé de mettre un "canselect := false" dans l'évènement "StringGrid1SelectCell" mais je ne sais pas comment rappeler cette procédure dans l'évènement "StringGrid1DrawCell".

En espérant avoir été assez claire ...
Merci.

8 réponses

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
19 avril 2010 à 19:19
Bonjour.

A mon avis, c'est plutôt dû au fait que dans l'événement DrawCell tu choisis la couleur en fonction du radiobutton qui est coché. Si,p.ex, le rouge est coché : toutes les cellules utilisées vont se peindre en rouge. Fais le test en faisant glisser au-dessus de ton stringgrid une fenêtre quelconque.
Ce qu'il faut faire, c'est attribuer à la cellule choisie par un joueur une valeur ('1' pour joueur1, '2' pour joueur 2).
Ensuite, dans DrawCell, tu détermines la couleur en fonction de la valeur de la cellule (Cells[ACol,ARow]). Si la valeur est = '' : tu laisses en blanc.

A +
Thierry
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
19 avril 2010 à 21:22
ah bon ? stringGrid c'est fait pour ça maintenant ?

paintBox -> onPaint

tu dessine une grille (moveTo, LineTo)

tu maintient une liste des coups joué (tableau de record)

tu dessine les coups joué (ellipse rouge ou jaune (brush))

le tout géré par le onMouseDown/onMouseUp en transformant les coordonnées souris avec les subDivisions de la grille (mod/div).

________________________________________________________
besoin de câbles audio, vidèo, informatique pas cher ?
0
cs_Franini Messages postés 3 Date d'inscription dimanche 18 avril 2010 Statut Membre Dernière intervention 20 avril 2010
19 avril 2010 à 22:34
Alors merci Thierry pour la réponse, j'essaierai ça dès demain !

et fOxi, désolée pour le "choc", oui j'utilise 1 stringgrid parce que je dois faire un projet en rapport avec les cours que je suis. Or je n'ai découvert delphi qu'en septembre dernier donc je ne connais pas encore toutes ses fonctionnalités ... N'ayant jamais utilisé 1 paintbox en cours, je ne vais pas pouvoir l'utiliser pour ce projet, surtout que ce n'est pas ce que mon prof attend ... Désolée de n'être qu'une petite débutante !
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
20 avril 2010 à 01:38
Salut,

Pourtant, la méthode de F0xi est bien plus simple et surtout plus évolutive et pédagogique qu'un TStringGrid.

Il ne faut pas être désolée d'être débutante, Franini. Mais il ne faut pas non plus t'attendre à ce que nous te proposions des solutions qui «collent» à ce que ton prof désire, surtout si tu omets de le préciser.

Nous ne donnons pas de conseil pour avoir de bonnes notes aux TP, nous essayons simplement de donner les meilleurs conseils possibles à ceux qui veulent apprendre à programmer en Delphi.

Enfin, modère un peu ton agressivité envers des personnes qui ne sont là que pour aider les autres de façon désintéressée, et ce n'est pas parce que c'est gratuit qu'il faut les mésestimer.

Sans vouloir critiquer la pédagogie de ton prof, je te rappelle simplement ce que l'Aide Delphi dit au sujet de TStringGrid :
«TStringGrid est un contrôle grille conçu pour simplifier la gestion de chaînes et d'objets associés
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
20 avril 2010 à 09:44
@f0xi et Caribensila : bonjour à vous deux. Tout-à-fait d'accord avec vous pour le stringgrid. Il n'est pas à utiliser dans ce cas, mais comme Franini le fait, je lui ai donné une solution adaptée au stringgrid.
Deux solutions :
- celle de f0xi : on dessine tout sur un PaintBox
- on emploie un DrawGrid.
Dans les 2 cas, la mémorisation des coups jouées se fait dans un array.

A +
Thierry
0
cs_Franini Messages postés 3 Date d'inscription dimanche 18 avril 2010 Statut Membre Dernière intervention 20 avril 2010
20 avril 2010 à 11:50
Bonjour,

J'ai très bien conscience que vous êtes là pour donner les meilleurs conseils et je ne mésestime pas du tout les personnes qui répondent aux questions sur ce forum, sinon je ne me serai pas inscrite.
Seulement, je pense qu'il y a des façons de dire les choses et j'ai été un peu étonnée que foxi commence sa réponse par "ah bon ? stringgrid c'est fait pour ça maintenant ?" comme si j'avais fait une erreur monumentale, honteuse.
J'ai conscience qu'il y a de meilleures solutions qu'utiliser 1 strinngrid, et ce n'est pas la solution proposée que je remets en cause, mais la façon de le dire : je l'ai mal pris car je me suis sentie prise de haut.
Maintenant, je m'excuse de l'agressivité de ma réponse et vous remercie pour vos conseils. Et je tiens à préciser que je n'ai pas posté cette question pour avoir une bonne note mais parce que j'étais vraiment bloquée et que je souhaite venir à bout de mon projet, pour avant tout une satisfaction personnelle (surtout que la programmation ne me déplait pas) et non une note.

Donc je vais essayé de poursuivre avec stringgrid, et si un jour, j'en ai l'occasion, j'essaierai d'utiliser une paintbox ! (et pour info, ce n'est pas mon prof qui m'a demandée d'utiliser un stringgrid, j'ai choisi cela car c'est un outil qu'on venait de découvrir et qui me paraissait le plus adapté à mon projet par rapport à tout ce qu'on avait vu en cours)

Merci encore.
Bonne journée.
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
20 avril 2010 à 13:35
ne t'inquiète pas jeune padawane, mes réponses sont souvent "décalé" ou fournie à l'emporte pièce ... :)

tu es sur la bonne voie pour maitriser la force.

pour le stringgrid, a la rigueur tu peux utiliser les caractères "O" et "X" pour différencier les pionts, donc de manipuler du texte et tu peux remplacer le tableau de gestion des coups par une simple string ou tableau de char.
garde bien à l'esprit que tout composant, même inadapté, peu donner naissance à une technique approprié pour éloigner correctement ce dernier de son utilité première.

attention, a mon sens l'important d'un tel exercice et plus le fond que la forme.
Ton moteur de P4 doit être bien conçus et optimisé, on pourra t'y aider.
n'oublie pas de le séparer de l'affichage!

un moteur doit être indépendant, l'affichage reste dépendant du moteur.

mais par exemple, tu peux proposer :
et une version basé sur StringGrid et une autre version plus poussée basé sur TPaintBox, fonctionnant toute deux avec le même moteur de Jeu!

TPaintBox se trouve dans la palette Système. c'est tout simplement un Canvas (feuille de dessin) en composant visuel.
c'est trés important de connaitre ce composant (et son ancêtre TGraphicControl) car de nombreux composant graphique ou jeu pourront se basé sur lui (même en openGL ou GDI+).

De plus, il est trés facile à manipuler, bien plus qu'un TImage ou autre composant inadapté.



________________________________________________________
besoin de câbles audio, vidèo, informatique pas cher ?
0
yannba Messages postés 133 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 7 septembre 2010
21 avril 2010 à 14:22
Sinon, rien à voir avec la question, mais des sources puissance 4, il y en a plein, dont notamment un defi sur :
http://delphi.developpez.com/defi/puissance4/
Source + explication claires, quoi de mieux ... pour un" debutante
Et là, tu verras, comme dit Foxi, comment les 'moteurs' ont été ecrits

A+
0
Rejoignez-nous