Forum Solarus-Games francophone

Jeux amateurs => Débuts de projets => Discussion démarrée par: Sam101 le 14 Juin 2008 à 20:57

Titre: [C++][SDL][GPL]PongClassic [0.1]
Posté par: Sam101 le 14 Juin 2008 à 20:57
(http://img391.imageshack.us/img391/7829/pongue0.jpg)
Salut ! Je viens vous proposer un "projet" (Surtout un test de POO :rolleyes:).

Fiche du jeu !

Titre : PongClassic
Plate-Forme: Windows/Linux(I386) en executable, a peut près nimporte quoi si vous recompilez (Le jeu est conçu pour fonctionner dans nimporte quelle resolution, a nimporte quel ratio)
Taille (Compréssé): Source:19.8ko, Linux:8.8ko, Windows:182.8ko (Avec SDL.dll),18.2 ko sinon.
Version:0.1
Concept

Le but etait de faire un pong en C++, en utilisant la SDL, et via des classes. Un autre objectif etait également de pouvoir faire fonctionner le jeu dans nimporte quelle resolution (essayez en 1680*100 pixels :mrgreen:). L'objectif est "rempli", et je vous présente cette 0.1, qui fonctionne :). A noter que le projet est sous licence GNU/GPL.

Ce qui reste a faire
->Des Bruitages Funky
->Une Musique Funky
->Un afficheur de score mieux codé (Allez pas voir la source de number.cpp, c'est horrible  :ninja:)
->Un menu
->Différants modes de jeu sympatiques (Morwenn m'a proposé une fusion avec un space invaders  :mrgreen:)
->Un mode deux joueurs
->Choix de la resolution =)
->Un menu "gagné/perdu"
->Une IA mieux  :lol:.
->Changer le SDL_Delay par quelque chose de mieux  :ninja:
Screenshots !
http://img391.imageshack.us/img391/9982/pongga4.jpg (http://img391.imageshack.us/img391/9982/pongga4.jpg)
Téléchargement
http://sam101.lyokoproject.com/pong (http://sam101.lyokoproject.com/pong) -> Executables, Source..


Je suis a disposition pour d'eventuelles remarques, notament sur le code (J'ai aucune idée de si j'ai la bonne methode d'organisation ou non  :ninja:).
Titre: Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Valoo le 14 Juin 2008 à 21:16
Je viens d'y jouer un peu, et bien oui, ça tourne bien.
Le pong classique quoi. Je trouve que l'adversaire bouge en saccades, c'est bizarre, c'est vrai qu'améliorer l'IA pourrait être une bonne chose. Inclure le 2 joueurs pourrait être sympa aussi. Enfin bref, tu as là une très bonne base, et il n'appartient qu'à toi d'apporter tes améliorations à ce pong. :)
Titre: Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Geomaster le 14 Juin 2008 à 21:20
J'aurais bien voulu te donner mon avis sur ton code mais tu n'as pas pensé à ceux qui étaient sous Windows :P Je n'arrive même à décompresser tes sources. S'pice de linuxien va ^^
Titre: Re : Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Sam101 le 14 Juin 2008 à 21:22
Citation de: Valoo0278 le 14 Juin 2008 à 21:16
Je viens d'y jouer un peu, et bien oui, ça tourne bien.
Le pong classique quoi. Je trouve que l'adversaire bouge en saccades, c'est bizarre, c'est vrai qu'améliorer l'IA pourrait être une bonne chose. Inclure le 2 joueurs pourrait être sympa aussi. Enfin bref, tu as là une très bonne base, et il n'appartient qu'à toi d'apporter tes améliorations à ce pong. :)
Surtout, qu'en fait, j'ai quasi-tout codé en classes, pour pouvoir tout réutiliser (pour plusieurs modes de jeu, ça evite de reinventer a chaque fois la roue).

Pour l'IA, effectivement, mon code est mauvais (Il faut savoir que je l'ai paramétré en "Impossible" la, et que je la bat facilement...)

Sinon je travaille sur un splashscreen, un menu et l'IA ^^.
Geomaster -> Je te fais un .zip ^^. 

EDIT:.zip des sources en ligne.
Titre: Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Valoo le 14 Juin 2008 à 21:26
Je suis pourtant sous windows, et j'ai téléchargé les zip, bien avant le post de Geomaster  :huh:
Titre: Re : Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Sam101 le 14 Juin 2008 à 21:27
Citation de: Valoo0278 le 14 Juin 2008 à 21:26
Je suis pourtant sous windows, et j'ai téléchargé les zip, bien avant le post de Geomaster  :huh:
Les binaires Windows sont en .zip, mais la source n'etait disponible qu'en .tar.gz...
Titre: Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Valoo le 14 Juin 2008 à 21:29
Autant pour moi, je m'en suis rendu compte, et je voulais éditer, mais trop tard ^^
Euh en revanche, AlZip doit pouvoir décompresser ça. Enfin je dis ça parce qu'à priori, il doit dézipper tout, ou presque ^^
Titre: Re : Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Sam101 le 14 Juin 2008 à 21:30
Citation de: Valoo0278 le 14 Juin 2008 à 21:29
Autant pour moi, je m'en suis rendu compte, et je voulais éditer, mais trop tard ^^
Euh en revanche, AlZip doit pouvoir décompresser ça. Enfin je dis ça parce qu'à priori, il doit dézipper tout, ou presque ^^
7Zip marche parfaitement également, c'est ce que j'ai utilisé dans mon XP Virtualisé.
Titre: Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Geomaster le 14 Juin 2008 à 21:32
Sauf que moi je suis con et j'utilise WinRAR :D
Titre: Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Ant1 le 14 Juin 2008 à 21:36
J'ai essayer les toutes première version et il est beaucoup mieux comme sa :P.
Mais c'est vrai que l'ennemie bouge bizarrement et sa fait pas très jolie, mais bon un autre pong à la liste interminable   :)
Titre: Re : Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Sam101 le 14 Juin 2008 à 21:37
Citation de: Ant1 le 14 Juin 2008 à 21:36
J'ai essayer les toutes première version et il est beaucoup mieux comme sa :P.
Mais c'est vrai que l'ennemie bouge bizarrement et sa fait pas très jolie, mais bon un autre pong à la liste interminable   :)
Le but c'est d'avoir une base pour concevoir un pong psychédélique adaptable  :mrgreen:.

Sinon, un mode de jeu en "fusion" avec Spade invaders, ça serait bien ?  :ninja:.
Titre: Re : Re : Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Geomaster le 14 Juin 2008 à 21:39
Citation de: Sam101 le 14 Juin 2008 à 21:37
Sinon, un mode de jeu en "fusion" avec Spade invaders, ça serait bien ?  :ninja:.

Ca dépend ce que tu as derrière la tête ?
Titre: Re : Re : Re : Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Sam101 le 14 Juin 2008 à 21:41
Citation de: Geomaster le 14 Juin 2008 à 21:39
Citation de: Sam101 le 14 Juin 2008 à 21:37
Sinon, un mode de jeu en "fusion" avec Spade invaders, ça serait bien ?  :ninja:.

Ca dépend ce que tu as derrière la tête ?
Citation
[06/14/08 11:39:55 ] !!! Morwenn : T'as déjà essayé de mêler un pong avec un space invaders ?:D
[06/14/08 11:40:32 ] !!! Morwenn : Chuis en train de me dire que, avec tous ces vieux jeux, y'a moyen de créer du funXDDD
Une sorte de pong, mélé a un space invaders, a deux joueurs, ou on remplace le laser des "gentils" (les joueurs) par la balle.

Sinon le code ?
Titre: Re : Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Valoo le 14 Juin 2008 à 21:43
Citation de: Geomaster le 14 Juin 2008 à 21:32
Sauf que moi je suis con et j'utilise WinRAR :D
[spoiler]Ouais, surtout qu'en plus, il est pas gratuit. Et je doute que tu aies payé la licence pour Winrar si ? :D
Allez, tiens (http://www.01net.com/windows/Utilitaire/compression_et_decompression/fiches/30591.html).[/spoiler]

Pour le space invaders, j'imagine que tu veux mettre la raquette en bas, et renvoyer les projectiles sur des ptit aliens. En gros, comme un casse-briques, sauf que les briques bougent et attaquent non ?
Titre: Re : Re : Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Sam101 le 14 Juin 2008 à 21:45
Citation de: Valoo0278 le 14 Juin 2008 à 21:43
Citation de: Geomaster le 14 Juin 2008 à 21:32
Sauf que moi je suis con et j'utilise WinRAR :D
[spoiler]Ouais, surtout qu'en plus, il est pas gratuit. Et je doute que tu aies payé la licence pour Winrar si ? :D
Allez, tiens (http://www.01net.com/windows/Utilitaire/compression_et_decompression/fiches/30591.html).[/spoiler]

Pour le space invaders, j'imagine que tu veux mettre la raquette en bas, et renvoyer les projectiles sur des ptit aliens. En gros, comme un casse-briques, sauf que les briques bougent et attaquent non ?
Non, non, la raquette toujours a gauche, mais en inclinant les "monstres".
Titre: Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Valoo le 14 Juin 2008 à 21:46
Donc en gros, comme je viens de dire, sauf que l'écran tout entier est pivoté de 90° c'est ça ?
Titre: Re : Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Sam101 le 14 Juin 2008 à 21:47
Citation de: Valoo0278 le 14 Juin 2008 à 21:46
Donc en gros, comme je viens de dire, sauf que l'écran tout entier est pivoté de 90° c'est ça ?
En effet, et on met une raquette de l'autre coté ^^.
Titre: Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Valoo le 14 Juin 2008 à 21:57
Ahhh, donc les joueurs ont deux solutions :

- Passer le projectile au keupin
- Taper dans le méchant

Bonne idée en tout cas :)
Titre: Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Noxneo le 14 Juin 2008 à 22:01
J'ai jeté qu'un coup d'oeil en diagonale au code, mais pourquoi ne pas charger les graphismes à partir de fichiers XML style svg ? Tu gardes la flexibilité de le faire tourner sur n'importe quel ratio, c'est plus flexible pour rajouter des trucs par la suite, et ça évite de pourrir ton code :p
Titre: Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: mooglwy le 14 Juin 2008 à 22:09
Bon je voulais tester... Pas de windows a la maison je prend donc les sources. Jusque la ca va.

Et bah pas de makefile....  :o Tu donnes les sources sans le makefile et le configure.  :( T'es méchant comme garçon.

Donc je testerai ça plus tard quoi.

Euh au fait pourquoi t'as mis GNU sur dans le titre de ton topic ?
Titre: Re : Re : [C++][SDL][GNU/GPL]PongClassic [0.1]
Posté par: Sam101 le 15 Juin 2008 à 09:59
Citation de: mooglwy le 14 Juin 2008 à 22:09
Bon je voulais tester... Pas de windows a la maison je prend donc les sources. Jusque la ca va.

Et bah pas de makefile....  :o Tu donnes les sources sans le makefile et le configure.  :( T'es méchant comme garçon.

Donc je testerai ça plus tard quoi.

Euh au fait pourquoi t'as mis GNU sur dans le titre de ton topic ?
Enfin bon, t'aurais pu prendre l'executable  :rolleyes:. Pour le makefile, tu peux le refaire :mrgreen:.

Pour les graphs en XML, c'est pas une mauvaise idée =).

Sinon, pour l'IA, j'ai déja corrigé le problème (du a une vitesse maximale de la balle trop importante, je l'ai baissée dans config.h).
Titre: Re : [C++][SDL][GPL]PongClassic [0.1]
Posté par: mooglwy le 15 Juin 2008 à 11:08
J'ai vu que des .exe et j'ai pas windows.  :rolleyes:

Pour le xml je suis curieux de voir comment t'implémentes ça. J'ai jamais testé. 
Titre: Re : [C++][SDL][GPL]PongClassic [0.1]
Posté par: Noxneo le 15 Juin 2008 à 11:12
Boah, la libxml est tout conne à utiliser. J'ai utilisée massivement une implémentation similaire avec libglade cette année, et ça a rien de bien sorcier.
Titre: Re : [C++][SDL][GPL]PongClassic [0.1]
Posté par: mooglwy le 15 Juin 2008 à 11:14
Bah je vais jeter un oeil alors.  :)

Faire le makefile avec tous tes fichier... Et j'ai même pas d'autoconf...  :(
Nan mais ton ide il fait pas un makefile ?
Si y a une base c'est toujours modifiable. :)

Edit :  en effet c'est pas trop compliqué.  :P
Titre: Re : Re : [C++][SDL][GPL]PongClassic [0.1]
Posté par: Sam101 le 15 Juin 2008 à 11:41
Citation de: mooglwy le 15 Juin 2008 à 11:14
Bah je vais jeter un oeil alors.  :)

Faire le makefile avec tous tes fichier... Et j'ai même pas d'autoconf...  :(
Nan mais ton ide il fait pas un makefile ?
Si y a une base c'est toujours modifiable. :)

Edit :  en effet c'est pas trop compliqué.  :P
J'utilise codeblocks, et apparament, il fait pas de makefile  :lol:.
Sinon Y'a les binaires aussi (http://sam101.lyokoproject.com/pong/0.1/PongClassic_linux.tar.gz)

Pour la libXML, je vais voir :).
Titre: Re : [C++][SDL][GPL]PongClassic [0.1]
Posté par: mooglwy le 15 Juin 2008 à 16:48
Bon coté code j'ai pas regardé, on a jeté l'os a nox on verra bien. ^^

Il est sympa j'aime bien mais car il y a toujours un mais.

Pour le jeu y a pas mal de défaut, enfin de gros défaut juste un, l'adversaire se déplace aussi vite que la balle, donc il l'aura toujours donc on ne pourras jamais gagner.  Ça c'est pas top déjà.  :P

Après le reste c'est des détails, genre faire rebondir la balle sur les bords blanc plutôt ? Et eh le déplacement adverse est très saccadé. ;)
Pareil quand j'ai perdu ie l'adversaire arrive a dix ça coupe violament. Un petit message genre vous avez perdu would be nice.  :)

Je te ferai un binaire pour macOS X si j'ai le courage et un makefile aussi pour linux.  :P
Titre: Re : [C++][SDL][GPL]PongClassic [0.1]
Posté par: Noxneo le 15 Juin 2008 à 17:00
Bof je me sens pas d'humeur à commenter du code objet - je me sens pas encore assez compétent pour faire ça, on en reparlera d'ici 4-5 mois ^^

(par contre le code impératif/fonctionnel, allez y balancez  :ninja: )

Et sinon si tu fais un binaire OS X je prendrais, mais là la flemme de compiler toussa :p
Titre: Re : Re : [C++][SDL][GPL]PongClassic [0.1]
Posté par: Sam101 le 23 Juin 2008 à 10:04
Citation de: mooglwy le 15 Juin 2008 à 16:48
Bon coté code j'ai pas regardé, on a jeté l'os a nox on verra bien. ^^

Il est sympa j'aime bien mais car il y a toujours un mais.

Pour le jeu y a pas mal de défaut, enfin de gros défaut juste un, l'adversaire se déplace aussi vite que la balle, donc il l'aura toujours donc on ne pourras jamais gagner.  Ça c'est pas top déjà.  :P

Après le reste c'est des détails, genre faire rebondir la balle sur les bords blanc plutôt ? Et eh le déplacement adverse est très saccadé. ;)
Pareil quand j'ai perdu ie l'adversaire arrive a dix ça coupe violament. Un petit message genre vous avez perdu would be nice.  :)

Je te ferai un binaire pour macOS X si j'ai le courage et un makefile aussi pour linux.  :P

(Desolé pour la réponse longue, j'etais en vacances :mrgreen:)

Oui, la vitesse de la balle maximum etait calibrée sur une vitesse trop haute, ça faisait buguer l'IA :^^. C'est corrigé maintenant, il y'a des sources a jour dans "unstable" normalement...
Titre: Re : [C++][SDL][GPL]PongClassic [0.1]
Posté par: mooglwy le 24 Juin 2008 à 09:48
Cool j'y jetterai un œil et je te dirais.  ;)
Titre: Re : Re : [C++][SDL][GPL]PongClassic [0.1]
Posté par: Sam101 le 24 Juin 2008 à 09:57
Citation de: mooglwy le 24 Juin 2008 à 09:48
Cool j'y jetterai un œil et je te dirais.  ;)
Ok, j'en profite pour voir si je peut pas améliorer ça (Et activer l'affichage des repertoires dans Apache  :ninja:).

D'ailleurs maintenant j'arrive plus a compiler (Merci CodeBlocks  :ninja:)

Linking executable: bin/Release/PongClassic
obj/Release/game.o: In function `Game::Victory_Test()':
game.cpp:(.text+0x0): multiple definition of `Game::Victory_Test()'
obj/Release/game.o:game.cpp:(.text+0x0): first defined here
obj/Release/game.o: In function `Game::Collision()':
game.cpp:(.text+0x50): multiple definition of `Game::Collision()'
obj/Release/game.o:game.cpp:(.text+0x50): first defined here
obj/Release/game.o: In function `Game::Play()':
game.cpp:(.text+0x1a0): multiple definition of `Game::Play()'
obj/Release/game.o:game.cpp:(.text+0x1a0): first defined here
obj/Release/game.o: In function `Game::Game()':
game.cpp:(.text+0x270): multiple definition of `Game::Game()'
obj/Release/game.o:game.cpp:(.text+0x270): first defined here
obj/Release/game.o: In function `Game::Game()':
game.cpp:(.text+0x3f0): multiple definition of `Game::Game()'
obj/Release/game.o:game.cpp:(.text+0x3f0): first defined here
collect2: ld a retourné 1 code d'état d'exécution


EDIT 2 : Corrigé ^.^

Sinon c'est un test du moteur hein, je compte rajouter un menu, des modes de jeu, un choix de la difficulté... :).