OVH Cloud OVH Cloud

Pac-Man

7 réponses
Avatar
Penguin_X
Salut. Je voudrais développer un PAC-MAN en C++ mais le plus portable
possible avec le moin de librarie possible. J'aimerais bien utiliser les
fonctions SYSTEM, mais ce n'est pas portable. Mon compilateur sous est
GCC 3.2 et sous Windows: Turbo C++ 2.01 de Borland. Merci d'avance !

7 réponses

Avatar
David
Salut. Je voudrais développer un PAC-MAN en C++ mais le plus portable
possible avec le moin de librarie possible. J'aimerais bien utiliser les
fonctions SYSTEM, mais ce n'est pas portable. Mon compilateur sous est
GCC 3.2 et sous Windows: Turbo C++ 2.01 de Borland. Merci d'avance !


Bonjour,
SDL ( http:://www.libsdl.org ) par exemple.
Mais ton compilateur sous windows semble plutôt vieux.

Pourquoi ne récupères-tu pas un compilateur gratuit plus récent ?
gcc 3.4, VC7, Borland 5.5, ...

Cordialement.

Avatar
Andre Heinen
On Thu, 30 Sep 2004 17:33:48 -0400, Penguin_X
wrote:

Salut. Je voudrais développer un PAC-MAN en C++ mais le plus portable
possible avec le moin de librarie possible. J'aimerais bien utiliser les
fonctions SYSTEM, mais ce n'est pas portable. Mon compilateur sous est
GCC 3.2 et sous Windows: Turbo C++ 2.01 de Borland. Merci d'avance !


Les bibliothèques Qt et wxWidgets sont portables et ne se
limitent pas aux interfaces graphiques. Va voir
http://www.wxwidgets.org/
http://www.trolltech.com/
Attention, Qt n'est gratuit que sous certaines conditions.

Tu seras peut-être également intéressé par Cygwin. Il s'agit
d'une émulation pour Windows de l'API Linux. Cela devrait
t'aider à écrire du code qui convienne à la fois à Windows, Linux
et Unix.
http://www.cygwin.com/

--
Andre Heinen
My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz

Avatar
Pierre Maurette
Penguin_X a écrit:

Salut. Je voudrais développer un PAC-MAN en C++ mais le plus portable
possible avec le moin de librarie possible. J'aimerais bien utiliser les
fonctions SYSTEM, mais ce n'est pas portable. Mon compilateur sous est
GCC 3.2 et sous Windows: Turbo C++ 2.01 de Borland. Merci d'avance !
Si la portabilité envisagée est limitée à Windows et Linux, vous avez

avantage à utiliser gcc des deux cotés (TC 2.01 est vraiment trop
ancien). Il existe des paquetage qui installent un EDI, le compilateur
et wxWidget dans les deux OS. Par exemple
http://www.parinya.ca/
http://wxdsgn.sourceforge.net/

Voyez également C++BuilderX (Borland).

Pour une portabilité plus étendue (PC de poche par exemple), pourquoi
pas Java ?
--
Pierre

Avatar
Andre Heinen
On Fri, 01 Oct 2004 00:08:43 +0200, David
wrote:

Mon compilateur sous est
GCC 3.2 et sous Windows: Turbo C++ 2.01 de Borland.


Mais ton compilateur sous windows semble plutôt vieux.


Oui, je voudrais insister là-dessus. Un compilateur récent,
c'est vraiment important. Et ça aide à la portabilité. Tu dois
upgrader. Note que si tu installes Cygwin, ce qui est très
facile, tu auras d'office une version récente de gcc, que tu
pourras utiliser sous Windows. Et en prime, tous les utilitaires
Unix classiques.

--
Andre Heinen
My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz


Avatar
Pierre Maurette
David a écrit:

Salut. Je voudrais développer un PAC-MAN en C++ mais le plus portable
possible avec le moin de librarie possible. J'aimerais bien utiliser les
fonctions SYSTEM, mais ce n'est pas portable. Mon compilateur sous est
GCC 3.2 et sous Windows: Turbo C++ 2.01 de Borland. Merci d'avance !


Bonjour,
SDL ( http:://www.libsdl.org ) par exemple.
Mais ton compilateur sous windows semble plutôt vieux.

Pourquoi ne récupères-tu pas un compilateur gratuit plus récent ?
gcc 3.4, VC7, Borland 5.5, ...
Pour info, C++BuilderX Personnel contient (outre gcc 3.2) Borland 5.6

et est gratuit et à priori sans limitation de licence (applis
distribuables). En revanche, éviter absolument la preview de 6.0
(C99).
--
Pierre


Avatar
Trognon Patrice
Penguin_X wrote:

Salut. Je voudrais développer un PAC-MAN en C++ mais le plus portable
possible avec le moin de librarie possible. J'aimerais bien utiliser les
fonctions SYSTEM, mais ce n'est pas portable. Mon compilateur sous est
GCC 3.2 et sous Windows: Turbo C++ 2.01 de Borland. Merci d'avance !


Hi,

va voir sur mon site (http://www.javadevel.com) j'ai réalisé ce jeu
entièrement en C++, un utilisant une librairie maison qui wrappe
OpenGL.
Le développement s'est fait sur windows , et j'ai fait
le portage sur linux avec g++.

Le portage m'a demandé une seule journée de travail, parceque dès
le début j'ai pensé mon code pour qu'il soit portable.

Bref, mon avis est le suivant :

Ton jeu va etre portable si :
1) ton code est portable.
2) tu t'appuie sur les librairies de plus bas niveau
qui sont portables.

Exemple de problème que tu peux rencontrer pour le portage :

Q) Comment gérer la boucle d'evennement de ton jeu ?
(c'est la boucle principale qui detecte les evt extérieurs
souris, clavier, joystick, etc).

Pour etre clair, sous windows et sur mac tu peux la bypasser
et faire ta propre boucle d'EVT, sur linux impossible de
s'en passer, tu dois utiliser la boucle d'evt du systeme
graphique.
Donc si t'as par exemple une boucle d'EVT par type de panel
du jeu, je t'explique pas le bordel a porter !!!

La solution ? simple : le polymorphisme.
Tu créé une classes de base qui contient une méthode draw()
méthode que tu surcharges dans chaque classe qui représente
un panel du jeu, ainsi aucun soucis pour porter cela dans
une boucle d'EVT sur linux.

(c'est seulement un exemple de ce que tu vas rencontrer).

Q) comment gérer les I/O
Clavier
Souris
Joy

Q) Comment gérer le multimédia.
Son
Music
Webcam

Tu vas trouver pleins de libs gérant tout cela, je te conseil
fortement de valider leur portabilité AVANT d'attaquer le code
de ton jeu, sinon tu risques de faire des choix qui te semblent
portables et qui en fait ne le sont pas !

Surtout ne pas se fier a ce que disent les sites ou les docs sur
la portabilité de telle ou telle librairie, a toi de faire ton
sample code que tu vas tester sur linux sur windows sur mac
et sur PocketPC.

Perso j'avais fait le choix de m'appuyer sur OpenGL et non sur une
autre librairie, par exemple SDL dont on parle dans ton thread n'est
qu'un wrapper d'opengl qui introduit plus de limites que de solutions.
Par contre, tu vas avoir plus de code à écrire pour faire de l'opengl.
Coté son et music j'ai utilisé une lib, qui est portable, mais qui
a aussi ses problèmes, c'est payant donc je ne ferais pas de pub ici !

Je te conseil fortement aussi de commencer par faire une maquette que tu
vas coder en meme temps sur tous les OS ciblés, ca va te permettre
de tout valider.

Voila, et enfin, en effet, a toi de produire du code portable.

Crdlt,

Patrice.

Avatar
Penguin_X
Trognon Patrice wrote:
Penguin_X wrote:


Salut. Je voudrais développer un PAC-MAN en C++ mais le plus portable
possible avec le moin de librarie possible. J'aimerais bien utiliser les
fonctions SYSTEM, mais ce n'est pas portable. Mon compilateur sous est
GCC 3.2 et sous Windows: Turbo C++ 2.01 de Borland. Merci d'avance !



Hi,

va voir sur mon site (http://www.javadevel.com) j'ai réalisé ce jeu
entièrement en C++, un utilisant une librairie maison qui wrappe
OpenGL.
Le développement s'est fait sur windows , et j'ai fait
le portage sur linux avec g++.

Le portage m'a demandé une seule journée de travail, parceque dès
le début j'ai pensé mon code pour qu'il soit portable.

Bref, mon avis est le suivant :

Ton jeu va etre portable si :
1) ton code est portable.
2) tu t'appuie sur les librairies de plus bas niveau
qui sont portables.

Exemple de problème que tu peux rencontrer pour le portage :

Q) Comment gérer la boucle d'evennement de ton jeu ?
(c'est la boucle principale qui detecte les evt extérieurs
souris, clavier, joystick, etc).

Pour etre clair, sous windows et sur mac tu peux la bypasser
et faire ta propre boucle d'EVT, sur linux impossible de
s'en passer, tu dois utiliser la boucle d'evt du systeme
graphique.
Donc si t'as par exemple une boucle d'EVT par type de panel
du jeu, je t'explique pas le bordel a porter !!!

La solution ? simple : le polymorphisme.
Tu créé une classes de base qui contient une méthode draw()
méthode que tu surcharges dans chaque classe qui représente
un panel du jeu, ainsi aucun soucis pour porter cela dans
une boucle d'EVT sur linux.

(c'est seulement un exemple de ce que tu vas rencontrer).

Q) comment gérer les I/O
Clavier
Souris
Joy

Q) Comment gérer le multimédia.
Son
Music
Webcam

Tu vas trouver pleins de libs gérant tout cela, je te conseil
fortement de valider leur portabilité AVANT d'attaquer le code
de ton jeu, sinon tu risques de faire des choix qui te semblent
portables et qui en fait ne le sont pas !

Surtout ne pas se fier a ce que disent les sites ou les docs sur
la portabilité de telle ou telle librairie, a toi de faire ton
sample code que tu vas tester sur linux sur windows sur mac
et sur PocketPC.

Perso j'avais fait le choix de m'appuyer sur OpenGL et non sur une
autre librairie, par exemple SDL dont on parle dans ton thread n'est
qu'un wrapper d'opengl qui introduit plus de limites que de solutions.
Par contre, tu vas avoir plus de code à écrire pour faire de l'opengl.
Coté son et music j'ai utilisé une lib, qui est portable, mais qui
a aussi ses problèmes, c'est payant donc je ne ferais pas de pub ici !

Je te conseil fortement aussi de commencer par faire une maquette que tu
vas coder en meme temps sur tous les OS ciblés, ca va te permettre
de tout valider.

Voila, et enfin, en effet, a toi de produire du code portable.

Crdlt,

Patrice.

Merci Beaucoup, mais j'ai presque résolut mon probleme: DJGPP. le "GCC"

de windows. Si j'utilise un vieux compilateur c'est parce que j'ai que
25 MO, dans mon répertoire personnel à l'école. Je peut travailler le
source code chez nous en unix, mais pour l'école il me fallait un vieux
compilateur qui entre dans 25 MegaOctets. Mais je ne sais pas comment
installer DJGPP :S