Jeu puissance 4 [Résolu]

cs_Franini 3 Messages postés dimanche 18 avril 2010Date d'inscription 20 avril 2010 Dernière intervention - 19 avril 2010 à 15:48 - Dernière réponse : yannba 139 Messages postés mercredi 4 janvier 2006Date d'inscription 7 septembre 2010 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
ThWilliam 424 Messages postés mardi 3 janvier 2006Date d'inscription 26 novembre 2013 Dernière intervention - 19 avril 2010 à 19:19
3
Merci
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

Merci ThWilliam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de ThWilliam
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 19 avril 2010 à 21:22
0
Merci
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 ?
Commenter la réponse de f0xi
cs_Franini 3 Messages postés dimanche 18 avril 2010Date d'inscription 20 avril 2010 Dernière intervention - 19 avril 2010 à 22:34
0
Merci
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 !
Commenter la réponse de cs_Franini
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 20 avril 2010 à 01:38
0
Merci
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
Commenter la réponse de Caribensila
ThWilliam 424 Messages postés mardi 3 janvier 2006Date d'inscription 26 novembre 2013 Dernière intervention - 20 avril 2010 à 09:44
0
Merci
@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
Commenter la réponse de ThWilliam
cs_Franini 3 Messages postés dimanche 18 avril 2010Date d'inscription 20 avril 2010 Dernière intervention - 20 avril 2010 à 11:50
0
Merci
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.
Commenter la réponse de cs_Franini
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 20 avril 2010 à 13:35
0
Merci
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 ?
Commenter la réponse de f0xi
yannba 139 Messages postés mercredi 4 janvier 2006Date d'inscription 7 septembre 2010 Dernière intervention - 21 avril 2010 à 14:22
0
Merci
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+
Commenter la réponse de yannba

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.