Aller au contenu

dev graphique, environnement et divers ?


totor

Messages recommandés

Bonjour,

j'entame aujourd'hui le developpement d'un petit utilitaire me permettant de faire des stats sur des jeux de cartes; ne trouvant pas ce que je veux sur le net (et j'ai cherché !)

par contre, si j'ai fait bcp de programmation en divers langages évolués et machines, je suis un peu sec pour demarrer (je m'y remet, aprés + d'une dizaines d'années ) , j'aurais donc besoin de votre aide !!

- je connaissais un forum / un site, specialisé dans l'explication des items graphiques, plus particulierement dans les jeux: impossible de remettre la main sur le lien ( y'a université ou qque chose comme ça dans le nom du site, mais même avec google...)

- bien evidemment, comme j'ai décroché depuis un bon bout de temps, je ne sais plus quels environnements de dev sont valables aujourd'hui, j'en cherche un qui:

* permettent de gerer des objets, essentiellement en 2D (pas de 3 D dans ce que je veux faire )

* permettent également d'aller tripatouiller les plans graphiques ou les couches graphiques pour aller choper des infos

* ais une biblio suffisamment fournis pour pouvoir afficher facilement quelque fenetres et quelques menus

le C /C++ doit bien permettre ça, a mon epoque , le mieux c'était chez borland, aujourd'hui c'est quoi/ qui le mieux ?

- derriere ça, il va me falloir des renseignements un peu plus détaillé: comment et ou trouver des infos sur ce qui est affiché a l'écran, ie; existe-t-il une zone mémoire image du plan graphique (2D) de windows, et si oui comment pourrais-t-on faire pour aller lire des choses dedans: simple lecture mémoire puis analyse ?

je sais que certaines de ces questions pourront vous paraitre saugrenues et/ou vraiment exigentes, mais je sais aussi que pc inpact est vraiment une communauté fournies de multiples connaissances, et je remercie donc d'avance ceux qui voudront bien prendre un peu de temps pour me répondre.

Laurent.

Lien vers le commentaire
Partager sur d’autres sites

- je connaissais un forum / un site, specialisé dans l'explication des items graphiques, plus particulierement dans les jeux: impossible de remettre la main sur le lien ( y'a université ou qque chose comme ça dans le nom du site, mais même avec google...)

Cela dependra de la librairie/langage que tu utilise, si par exemple tu te lance en python avec pygame:

http://www.pygame.org/news.html

- bien evidemment, comme j'ai décroché depuis un bon bout de temps, je ne sais plus quels environnements de dev sont valables aujourd'hui, j'en cherche un qui:

* permettent de gerer des objets, essentiellement en 2D (pas de 3 D dans ce que je veux faire )

* permettent également d'aller tripatouiller les plans graphiques ou les couches graphiques pour aller choper des infos

* ais une biblio suffisamment fournis pour pouvoir afficher facilement quelque fenetres et quelques menus

Ca veut un peu rien dire, si tu est un l33t et que tu veux maitriser toute les ficelles de developpement alors rien de tel qu'un editeurde texte classique (kate/kwrite,scite sur linux ou scite/blocnote sur windows).

le C /C++ doit bien permettre ça, a mon epoque , le mieux c'était chez borland, aujourd'hui c'est quoi/ qui le mieux ?

Le seul interet pour moi d'un IDE est si tu a a faire beaucoups d'interface graphique, il peut etre rapidement plus productif de generer des interface de maniere visuel que de maniere textuel.

- derriere ça, il va me falloir des renseignements un peu plus détaillé: comment et ou trouver des infos sur ce qui est affiché a l'écran, ie; existe-t-il une zone mémoire image du plan graphique (2D) de windows, et si oui comment pourrais-t-on faire pour aller lire des choses dedans: simple lecture mémoire puis analyse ?

Cela depend comment et a quel niveau ce situe ton programme.

- Soit tu utilise un GUI (Win32,GTK,Wx,QT) pour creer une fenetre avec creer un Widget DrawingArea ou Canvas (terme selon le GUI) et ensuite tu dessine dedans. Pareil pour toute les operations tu a accés au contenu de tin widget.

-Soit tu programme directement en OpenGL (pas de mode fenetre sans GUI, car un mode fenetre avec OpenGL c'est simplement un drawing area ou tu a activé openGL), et tu dessine dans une matrice. Tout ce situe au niveau de la detection des point/lignes que tu a dessinés.

-Soit tu programme sans GUI et directement en X (linux) ou GDI (windows) en creent des contextes graphiques (pas le plus simple, et de plus bas niveau)

J'espere t'avoir eclairer un peu =)

Lien vers le commentaire
Partager sur d’autres sites

Merci pour tes réponses, je me penche la dessus !

- derriere ça, il va me falloir des renseignements un peu plus détaillé: comment et ou trouver des infos sur ce qui est affiché a l'écran, ie; existe-t-il une zone mémoire image du plan graphique (2D) de windows, et si oui comment pourrais-t-on faire pour aller lire des choses dedans: simple lecture mémoire puis analyse ?

attention, je cherche a analyser des informations affichées a l'écran par un autre programme que le mien !

Lien vers le commentaire
Partager sur d’autres sites

Un tutoriel indispensable :Programmation de jeux vidéo : par où commencer ?

http://loulou.developpez.com/tutoriels/jeux_video/

Et aussi :

-> En C : Développer une application graphique (comme un jeu vidéo), portable (Linux, Windows, etc), en C en utilisant la bibliothèque SDL (une alternative portable à DirectX).

http://anomaly.developpez.com/tutoriels/sdl/

-> En C++ : La réalisation de A à Z d'un moteur 3D. Celui-ci est entièrement écrit en C++, et multi-API (DirectX9 et OpenGL) :

http://loulou.developpez.com/tutoriels/moteur3d/

Lien vers le commentaire
Partager sur d’autres sites

Je pense pas non plus qu'il veuille carrément aller jouer avec de l'opengl ou du dx.

Le problème c'est que le post est assez vague.

Tu veux récuperer quoi exactement dans d'autres programmes lancés ?

Des captions (text), des infos sur la couleur d'un rect ou d'un point, les coordonnées, ...

Comment ? Via une action user dans l'autre prog, via un timer (intervalles)... etc etc .

Sous win, linux, ... ?

Tu veux en faire quoi après ... ?

Ca aiderait franchement déjà de savoir ca, après pour ton interface on verra.

bàt

Lien vers le commentaire
Partager sur d’autres sites

Je pense pas non plus qu'il veuille carrément aller jouer avec de l'opengl ou du dx.

Le problème c'est que le post est assez vague.

Tu veux récuperer quoi exactement dans d'autres programmes lancés ?

Des captions (text), des infos sur la couleur d'un rect ou d'un point, les coordonnées, ...

Comment ? Via une action user dans l'autre prog, via un timer (intervalles)... etc etc .

Sous win, linux, ... ?

Tu veux en faire quoi après ... ?

Ca aiderait franchement déjà de savoir ca, après pour ton interface on verra.

bàt

effectivement ma demande initiale n'eteit pas assez precise.

j'ai une appli X qui tourne (mon jeu de cartes), developpé par qqu'un d'autre.

ce que je veux faire c'est creer une appli Y, qui:

- sache detecte la fenetre du programme X

- aille lire les info graphique affichée dedans: text, mais aussi graphiques.

savoir aller lire des couleurs de pixels dans cette fenetre de l'appli X ) serait l'operation de base, me permettant ensuite de trouver texte, couleur et type de cartes, nom des joeurs...

l'environnement est windows

Lien vers le commentaire
Partager sur d’autres sites

Bah, c'est tout a fait possible, mais bonjour le boulot !

Surtout que tu dis que ca fait pas mal de temps que t'as plus touché à ca... ca me parait hard.

Récupérer le handle du programme et avoir accès a quelque captions & zones oui ... c'est pas "méga" dur à la base mais bon c'est déjà bien ch*** à coder. Mais après, récupérer des parties de zones sans connaitre rien de leur coord et encore ensuite mapper ca dans des strucs rgb pour récupérer des couleurs etc ... fiouf...

A la limite pour du "plus simple" mais n'est de simple que le nom, utiliser carrément ton pointeur souris via un hook et une action qui p.ex. lors d'un click sur le point x,y de l'autre appli te rétourne le hwnd (handle) de l'appli, de la fenetre dans l'appli et du hdc (device context) qui lui peut te donner ce genre d'infos.

Mais heuuu, good luck d'avance. Prêt à t'aider mais tu feras pas ca en 2 jours :)

Lien vers le commentaire
Partager sur d’autres sites

pour la parite traitement d'image, s'il s'agit juste de reconnaître des cartes - toujours les mêmes avec toujours le même visuel - ça ne devrait pas être trop dur.

une correlation sur l'image avec un bout de carte commun à toutes les cartes devrait te permettre de récupérer l'emplacement des cartes. une fois que tu as ça, il s'agit de savoir laquelle c'est.

pour ça, tu peux encore comparer les correlation de la zone de l'écran avec ton ensemble de carte, et prendre celle qui correlle le plus, soit aprendre un classifieur (réseau de neurones, SVM, ...) pour reconnaître la carte.

Sachant que tu n'as pas besoin de généralisation, même un classifier miteux devrait faire l'affaire, à condition de lui faire faire un apprendtissage par coeur :keskidit:

pour la capture de la zone du jeu, il y a des trainer à diabloII qui font ça très bien, si tu arrive à choper le code source, peut-être que...

:chinois:

Lien vers le commentaire
Partager sur d’autres sites

pour la parite traitement d'image, s'il s'agit juste de reconnaître des cartes - toujours les mêmes avec toujours le même visuel - ça ne devrait pas être trop dur.

une correlation sur l'image avec un bout de carte commun à toutes les cartes devrait te permettre de récupérer l'emplacement des cartes. une fois que tu as ça, il s'agit de savoir laquelle c'est.

pour ça, tu peux encore comparer les correlation de la zone de l'écran avec ton ensemble de carte, et prendre celle qui correlle le plus, soit aprendre un classifieur (réseau de neurones, SVM, ...) pour reconnaître la carte.

Sachant que tu n'as pas besoin de généralisation, même un classifier miteux devrait faire l'affaire, à condition de lui faire faire un apprendtissage par coeur :fou:

pour la capture de la zone du jeu, il y a des trainer à diabloII qui font ça très bien, si tu arrive à choper le code source, peut-être que...

:zarb:

c'est exactement ce a quoi je pensais: ce que j'ai a reconnaitre, c'est toujours les mêmes symboles de cartes, et qui plus est toujours au même endroit et de la même couleur, donc aucune difficulté la dedans.

par contre, c'est ou aller taper pour trouver ces infos ? qu'appelles tu "trainer diabloII" ????

aprés y'a la detection de la bonne fenetre: mon jeu de carte s'executant dans une fentre windwos, il faut que je trouve la bonne fenetre. y'a pas des commandes qui permettent de savoir quelles sont les fenetres actives et keur noms ? de manieres a passer au premier plan celle qui m'interresse et continuer mon traitement ?

PS: passage vieux guerrier: quand au fait que ça fait longtemp que j'ai pas touché a ça ...effectivement... mais bon: j'ai commencé debut des années 80 en codant a la main du langage machine Z80 (pas d'assembleur) , puis un peu de deplombage sur 464, du X86 , du 68HC11, avec en parallele: du fortran, du turbo-pascal, et du C sous unix et C++ sur PC. je suis plus a un truc prés, c'est comme le velo, ça s'oublie pas ! :byebye:

Lien vers le commentaire
Partager sur d’autres sites

c'est exactement ce a quoi je pensais: ce que j'ai a reconnaitre, c'est toujours les mêmes symboles de cartes, et qui plus est toujours au même endroit et de la même couleur, donc aucune difficulté la dedans.

En théorie heuu non. En pratique faut quand même le mettre en oeuvre! :fou:

aprés y'a la detection de la bonne fenetre: mon jeu de carte s'executant dans une fentre windwos, il faut que je trouve la bonne fenetre. y'a pas des commandes qui permettent de savoir quelles sont les fenetres actives et keur noms ? de manieres a passer au premier plan celle qui m'interresse et continuer mon traitement ?

Ben c'est la que commence tout, faut aller taper dans l'api win32.

EnumWindow, EnumChildWindow (en callback) FindWindow .. et toutes les autres ...

Ensuite la "quand" tu as ton handle, récuperer les éléments qui t'intéressent et récupérer leur hdc (getWindowDC, getDC & co) et récupérer tes infos pour comparer avec comme disait lorinc, des mappings que tu auras du au préalable également te créer.

Par contre DiabloII aucune idée de ce que le code peut faire exactement :zarb: là c lorinc de te répondre ;p

PS: passage vieux guerrier: quand au fait que ça fait longtemp que j'ai pas touché a ça ...effectivement... mais bon: j'ai commencé debut des années 80 en codant a la main du langage machine Z80 (pas d'assembleur) , puis un peu de deplombage sur 464, du X86 , du 68HC11, avec en parallele: du fortran, du turbo-pascal, et du C sous unix et C++ sur PC. je suis plus a un truc prés, c'est comme le velo, ça s'oublie pas ! :byebye:

Ben si t'as le temps alors fonce :yes:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...