Se connecter / S'enregistrer
Votre question

faire un tableau C++

Tags :
  • Bibliotheque
  • Programmation
Dernière réponse : dans Programmation
12 Juillet 2005 23:50:57

Bonjour je suis nouveau ici.
Je viens de me lancer dans la programmation j'ai quelques bases en C++(vraiment quelques) et je maitrise + ou - Basic (plutot - m'enfin).
Alors j'ai une question comment creer un tableau style démineur et après pouvoir faire référence à chaque case ?
merci d'avance j'utilise DEV C++

Autres pages sur : tableau

13 Juillet 2005 11:35:29

C'est un tableau graphique que tu veux ou normal (dynamique ou autre...) ?
13 Juillet 2005 20:52:30

bonsoir
je cherhce à faire un tableau dynamique (qu'on puisse cliquer sur chaque case).
Un peu comme le tableau du démineur

Merci de ta réponse
Contenus similaires
13 Juillet 2005 22:54:42

si tu veux afficher des beaux carrés les uns à côté des autres, il va te falloir utiliser une bibliothèque graphique, car il n'existe pas en c++ standart de méthode de dessin.
14 Juillet 2005 00:03:23

oui je vois ...
c'est ce que j'avais cru comprendre tu peux m'expliquer comment trouver la bibliothèque ou m'indiquer un tutorial stp ?

Merci
14 Juillet 2005 00:15:45

Bah moi j'avais vu une source d'un morpion ou plusieur s cases étaient utilisées :

Le truc (m'enfin c'était un peu lourd) c'etait de créer plusieur hWnd en child d'une principale et de récupérer le message d'un clic dans le procésus en fonction de la fenêtre et puis ensuite exécuter une fonction.

Voila voila ;-)

EDIT : Euh je me suis pas renseigner mais tu demander bien sous l'API windows ? parceque sous console il te faudra une biblio ou alors tu fais ca à la old school : parties asm dans le C++ à coup de push lol ;-) mais alors la tu vas souffrir
14 Juillet 2005 10:41:14

tu pourrais m'envoyer le code stp ?
14 Juillet 2005 10:41:43

tu pourrais m'envoyer le code stp ?
Sinon c'est sous l'Api pas sur console :-P
14 Juillet 2005 10:54:41

Le code est assez long quand même donc je post que la partie des hWnd :

hwnd = CreateWindowEx (0, szClassName, "RAOUL Morpion",
WS_SYSMENU | WS_MINIMIZEBOX, 250, 150, 237, 277,
HWND_DESKTOP, NULL, hThisInstance, NULL);

case1 = CreateWindowEx (WS_EX_CLIENTEDGE, szClassName2, "nom1",
WS_VISIBLE|WS_CHILD, 10, 10, 70, 70, hwnd, NULL,
hThisInstance, NULL);

case2 = CreateWindowEx (WS_EX_CLIENTEDGE, szClassName2, "nom2",
WS_VISIBLE|WS_CHILD, 80, 10, 70, 70, hwnd, NULL,
hThisInstance, NULL);

case3 = CreateWindowEx (WS_EX_CLIENTEDGE, szClassName2, "nom3",
WS_VISIBLE|WS_CHILD, 150, 10, 70, 70, hwnd, NULL,
hThisInstance, NULL);

case4 = CreateWindowEx (WS_EX_CLIENTEDGE, szClassName2, "nom4",
WS_VISIBLE|WS_CHILD, 10, 80, 70, 70, hwnd, NULL,
hThisInstance, NULL);

case5 = CreateWindowEx (WS_EX_CLIENTEDGE, szClassName2, "nom5",
WS_VISIBLE|WS_CHILD, 80, 80, 70, 70, hwnd, NULL,
hThisInstance, NULL);

case6 = CreateWindowEx (WS_EX_CLIENTEDGE, szClassName2, "nom6",
WS_VISIBLE|WS_CHILD, 150, 80, 70, 70, hwnd, NULL,
hThisInstance, NULL);

case7 = CreateWindowEx (WS_EX_CLIENTEDGE, szClassName2, "nom7",
WS_VISIBLE|WS_CHILD, 10, 150, 70, 70, hwnd, NULL,
hThisInstance, NULL);

case8 = CreateWindowEx (WS_EX_CLIENTEDGE, szClassName2, "nom8",
WS_VISIBLE|WS_CHILD, 80, 150, 70, 70, hwnd, NULL,
hThisInstance, NULL);

case9 = CreateWindowEx (WS_EX_CLIENTEDGE, szClassName2, "nom9",
WS_VISIBLE|WS_CHILD, 150, 150, 70, 70, hwnd, NULL,
hThisInstance, NULL);

Je te fais pas de copier du processus parceque il fait 5 ou 6 pages mais bon le principe est simple c'est toujours en fonction de MSG msg que tu execute des fonction ...

(switch(msg){case WM_CREATE : ducodeducodeducode;break;case WM_PAINT : etcetcetc;break;default: return DefWindowProc (hwnd, message, wParam, lParam);};)

(Par pitier pas de commentaire je sais c'est illisible mais c'est parceque je les tapper en deux deux et que c'est juste pour expliquer)

Voila en espérence que ca t'aide : sinon le code entier est disponible sur www.cppfrance.com
(tape morpion) ;-) :-D
14 Juillet 2005 11:49:32

Euh je viens de penser à un truc là ... Tu pourrais aussi faire avec un bitblt et afficher un dessin que tu aurais fait d'un tableau de cases avec une impression de profondeur pour chaque cases

Mais le je bloque un peu pour le dynamisme ... Je connais pas vraiment de fonction qui définit une zone dans une fenètre sans se référencer à quoi que ce soit... (quoique ça doit exister en cherchant un peu)

Sinon j'ai une dernière alternative ... si le dynamisme et que tu demandes une action après un clic sur une de ces cases tu peux aussi aligner des boutons les uns à côté des autres avec sur eux un dessins d'une case en profondeur ... mais je reste un peu septique sur le résultat obtenu ... :-D
14 Juillet 2005 13:56:06

merci beaucoup de vos réponses

****Attention ce qui va suivre risque d'être stupide****
On peut pas faire une matrice [10] [10] et mettre des boutons sur chaque case avec un effet de profondeur.
Après on peut faire référence à chaque case avec les coordonnées non ?
14 Juillet 2005 14:44:11

Bah si c'est une bonne idée pour après manipuler les cases cocher ou pas ... en plus comme ça ta une représentation dans l'espace des cases cochées enfin je veux dire que ca sera plus facile de désigner des boutons cochés et alignés de cette façon
a b L Programmation
14 Juillet 2005 17:44:14

Tu peux aussi créer une seule fenetre et traiter avec une fonction de callback le message WM_LBUTTONDOWN.
tu récupère les coordonées de la souris avec GET_X_LPARAM(lParam) et GET_Y_LPARAM(lParam)
et tu calcules sur quelle case tu te trouves.

côté donnée tu peux créer ton tableau indiquant les mines ou créer une liste de mines qui contient sa position dans le tableau.
Petite astuce pour le démineur: ajoute une clonne en début et en fin, une ligne en haut et une en bas (tout à 0). Comme ça ton calcul du nombre de mines autour d'une case est le même partout (pas de cas particulier sur les bords ;) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS