IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Projets Discussion :

Langage C : Boulder Dash


Sujet :

Projets

  1. #1
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut Langage C : Boulder Dash
    Voilà, il y a quelque mois, j'ai developpé une reprise du jeu Boulder Dash de l'amstrad CPC.

    Vous pouvez y accèder par le lien : http://neoflo.free.fr/boulder2/boulder2.rar

    Ou :

    http://neoflo.free.fr/boulder2/boulder2.tar.gz


    Il est fini (du moins la version pour un seul joueur mais intégrer un autre joueur n'est pas difficile étant donné l'implémentation).

    Ca peut permettre à certains qui s'interessent de voir un jeu vidéo complet programmer en langage C et utilisant la librairie SDL et SDL_ttf.

    J'ai tenté une approche professionnelle en coupant par module pour minimiser la dépendance à l'implémentation (par exemple, il y a un module spécifique au graphique pour pouvoir changer de moteur graphique (SDL) rapidement...).

    Il y a également des jeux de tests sur chaque module pour vérifier le bon fonctionnement (ça fait gagner du temps en développement).

    Il fonctionne sous windows (directement compilable avec devC++) et sous linux également.

    Je signale que le graphisme est assez moche, cela est dû au fait que j'ai voulu reproduire le graphisme de l'amstrad, mais, en modifiant un seul des modules, on peut donner beaucoup plus de gueule au graphisme.

    Il a également de la documentation dans ./doc/ sur divers module, ça peut être interessant, notamment pour le module moteur_graphique.
    Je ne répondrai à aucune question technique en privé

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Salut et merci pour ce code source

    Est-ce que tu postes pour présenter ton projet et avoir des retours, ou bien pour proposer le code source (auquel cas il faudra déplacer ton sujet vers le forum "Contribuez") ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    [ganymede]~/tmp/boulder2%make                                                                                                                                      
    gcc -c -Wall -g ./src/slim/slim.c -o slim.o
    gcc -c -Wall -g ./src/pierre/type_pierre/pierre.c -o pierre.o
    gcc -c -Wall -g ./src/liste/liste.c -o liste.o
    gcc -c -Wall -g ./src/pierre/liste_pierre/liste_pierre.c -o liste_pierre.o
    gcc -c -Wall -g ./src/ennemi/type_ennemi/ennemi.c -o ennemi.o
    gcc -c -Wall -g ./src/ennemi/liste_ennemi/liste_ennemi.c -o liste_ennemi.o
    gcc -c -Wall -g ./src/evenement/temps/temps.c -o temps.o
    gcc -c -Wall -g ./src/joueur/type_joueur/joueur.c -o joueur.o
    gcc -c -Wall -g ./src/joueur/liste_joueur/liste_joueur.c -o liste_joueur.o
    gcc -c -Wall -g ./src/diamant/type_diamant/diamant.c -o diamant.o
    gcc -c -Wall -g ./src/diamant/liste_diamant/liste_diamant.c -o liste_diamant.o
    gcc -c -Wall -g ./src/niveau/niveau.c -o niveau.o
    In file included from ./src/niveau/niveau.c:8:
    ./src/niveau/niveau.h:55: error: redeclaration of enumerator `NIVEAU_ETAT_PLUS_DE_TEMPS'
    ./src/niveau/niveau.h:51: error: previous definition of 'NIVEAU_ETAT_PLUS_DE_TEMPS' was here
    make: *** [niveau.o] Error 1
    Corrigé betement en changeant un des 2 noms de l'enum...

    Puis ensuite, je continue ma petite compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    ./src/environnement/environnement_diamant.c: In function `environnementEvoluerDiamant':
    ./src/environnement/environnement_diamant.c:100: warning: enumeration value `ENNEMI_TYPE_ABSENT' not handled in switch
    gcc -c -Wall -g ./src/environnement/environnement_explosion.c -o environnement_explosion.o
    gcc -c -Wall -g ./src/environnement/environnement_pierre.c -o environnement_pierre.o
    ./src/environnement/environnement_pierre.c: In function `environnementEvoluerPierre':
    ./src/environnement/environnement_pierre.c:86: warning: enumeration value `ENNEMI_TYPE_ABSENT' not handled in switch
    ./src/environnement/environnement_pierre.c:253: warning: enumeration value `PIERRE_TYPE_DIAMANT' not handled in switch
    ./src/environnement/environnement_pierre.c:253: warning: enumeration value `PIERRE_TYPE_ABSENT' not handled in switch
    gcc -c -Wall -g ./src/environnement/environnement_slim.c -o environnement_slim.o
    gcc -c -Wall -g ./src/fichier/fichier.c -o ./fichier.o
    gcc -c -Wall -g ./src/moteur_graphique/moteur_graphique.c -o moteur_graphique.o
    gcc -c -Wall -g ./src/boulder_graphique/boulder_graphique_acc.c -o boulder_graphique_acc.o
    gcc -c -Wall -g ./src/boulder_graphique/boulder_graphique_affiche.c -o boulder_graphique_affiche.o
    ./src/boulder_graphique/boulder_graphique_affiche.c: In function `element_niveau2sprite':
    ./src/boulder_graphique/boulder_graphique_affiche.c:165: warning: suggest explicit braces to avoid ambiguous `else'
    gcc -c -Wall -g ./src/boulder_graphique/boulder_graphique_calcul.c -o boulder_graphique_calcul.o
    gcc -c -Wall -g ./src/boulder_graphique/boulder_graphique_cons.c -o boulder_graphique_cons.o
    gcc -c -Wall -g ./src/boulder_graphique/boulder_graphique_couleurs.c -o boulder_graphique_couleurs.o
    gcc -c -Wall -g ./src/boulder_graphique/boulder_graphique_sprite.c -o boulder_graphique_sprite.o
    gcc -c -Wall -g ./src/interface/interface.c -o interface.o
    gcc -c -Wall -g ./src/main.c -o main.o
    gcc -c -Wall -g ./src/jeu/jeu.c
    ./src/jeu/jeu.c: In function `jeu_un_joueur':
    ./src/jeu/jeu.c:89: warning: unused variable `joueur'
    ./src/jeu/jeu.c: In function `jeu_un_joueur_animation_gagne':
    ./src/jeu/jeu.c:284: warning: unused variable `joueur'
    Bon, quelques warnings, ca s'arrange assez bien ça

    (ben mince, j'ai pas le droit d'uploader un fichier patch... bon, ca passera en texte pur)

    boulder2.patch.txt

    Voici donc un patch contenant les quelques modifs que j'ai faites (c'est peut etre pas super propre, mais au moins, ca ne warn plus, et j'ai un tout petit peu taper sur le Makefile)

    Sinon, sympa, j'ai pu me refaire une petite partie de boudler Bonne idée de partager ton travail.

    Si je pouvait me permettre une derniere suggestion (et oui, mettre son travail a disposition des autres, c'est s'attendre a des critiques...) le rar, c'est mal... pourquoi ne pas utiliser un format de compression libre (bz2 ou gz par exemple)

  4. #4
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Sympa comme jeu, cela a toujours été un de mes grands favoris

    Moi aussi j'ajouterais le commentaire qu'il n'y a pas assez de commentaires dans ton code... C'est un peu dommage

    Mais :


    Continue comme ça,
    Jc

  5. #5
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    J'ai corrigé l'erreur de compilation, le fichier est toujours un .rar. (je changerai)

    J'avais fini le développement sous windows et il ne m'avait rien dit au sujet de l'énumaration en double, je n'avais plus fait attention, je viens de recompiler sous linux pr effectivement voir que ça passait pas Je regarderai pour les warning après.

    J'ai commenté que quelque modules, les .h de touche, moteur_graphique, niveau et liste. Mais on peut y accèder dans le .doc/index.html.


    Je voulais bien qq retour, genre si ça bug sur certaine machine, ou des erreurs de compilation

    Pour ceux qui n'ont pas SDL_ttf, vous pouvez ajouter l'option de compilation: -DSANS_TTF dans le makefile. Ca compilera sans la librairie. Cela dit, ça va pas être pratique pour lancer dans le menu :p
    Je ne répondrai à aucune question technique en privé

  6. #6
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Ayé, j'ai réglé tous les warning, j'avais oublié des default dans des switch

    Le nouveau lien pour les amateurs de libre:

    http://neoflo.free.fr/boulder2/boulder2.tar.gz

    L'ancien est toujours valabe
    Je ne répondrai à aucune question technique en privé

  7. #7
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,

    Citation Envoyé par millie
    Ayé, j'ai réglé tous les warning, j'avais oublié des default dans des switch
    Sûr, j'en ai trouvé quelqu'uns :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    gege2061@debian:~/jeux/boulder2$ make
    gcc -c -Wall -W -std=c99 -pedantic -O2 ./src/liste/liste.c -o liste.o
    ./src/liste/liste.c: In function 'listeAjouter':
    ./src/liste/liste.c:166: warning: 'cellule_en_cours' may be used uninitialized in this function
    [...]
    gcc -c -Wall -W -std=c99 -pedantic -O2 ./src/environnement/environnement_ennemi.c -o environnement_ennemi.o
    ./src/environnement/environnement_ennemi.c: In function 'environnementEnnemiTestExplosionJoueur':
    ./src/environnement/environnement_ennemi.c:38: warning: 'jy' may be used uninitialized in this function
    ./src/environnement/environnement_ennemi.c:37: warning: 'jx' may be used uninitialized in this function
    [...]
    gcc -c -Wall -W -std=c99 -pedantic -O2 ./src/moteur_graphique/moteur_graphique.c -o moteur_graphique.o
    ./src/moteur_graphique/moteur_graphique.c: In function 'g_surfaceEcrireTexte':
    ./src/moteur_graphique/moteur_graphique.c:219: warning: missing initializer
    ./src/moteur_graphique/moteur_graphique.c:219: warning: (near initialization for 't.unused')
    ./src/moteur_graphique/moteur_graphique.c:220: warning: missing initializer
    ./src/moteur_graphique/moteur_graphique.c:220: warning: (near initialization for 'f.unused')
    ./src/moteur_graphique/moteur_graphique.c:216: warning: unused parameter 'couleur_texte'
    ./src/moteur_graphique/moteur_graphique.c:216: warning: unused parameter 'couleur_fond'
    [...]
    gcc -c -Wall -W -std=c99 -pedantic -O2 ./src/main.c -o main.o
    ./src/main.c: In function 'main':
    ./src/main.c:13: warning: unused parameter 'argc'
    ./src/main.c:13: warning: unused parameter 'argv'
    gcc -c -Wall -W -std=c99 -pedantic -O2 ./src/jeu/jeu.c
    ./src/jeu/jeu.c: In function 'jeu_un_joueur_animation_gagne':
    ./src/jeu/jeu.c:278: warning: unused parameter 'niveau'
    Et à la fin du premier niveau à l'écran de transition, j'ai voulu appuyer sur ESC pour quitter et ça m'a lancer le second niveau et impossible de fermer le jeux

    Enfin je me suis bien ammusé quand même

  8. #8
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Oui, juste avec -Wall, je n'utilisais pas -pedantic vu qu'il n'acceptait pas les commentaires à la C++ //
    Je ne répondrai à aucune question technique en privé

  9. #9
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par millie
    Oui, juste avec -Wall, je n'utilisais pas -pedantic vu qu'il n'acceptait pas les commentaires à la C++ //
    Si en ajoutant :
    Mais c'est dommage parce que ces options peuvent t'éviter des fautes d'étourderies (bon le -W est peut être un peu excessif )

  10. #10
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Aah, je ne connaissais pas l'option -W. Je me rappelle de la première fois que j'ai vu l'option -pedantic, j'avais réalisé un code pour un projet d'école, et j'avais oublié de mettre -Wall, alors le prof l'a mis et j'ai balisé en me disant que ça n'allait jamais passer. Par chance, c'est passé, mais ensuite, il a ajouté -pedantic... et il s'est marré vu que ça passait pas. lol
    Je ne répondrai à aucune question technique en privé

  11. #11
    Membre habitué Avatar de poussinphp
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 428
    Points : 176
    Points
    176
    Par défaut
    Pas mal le jeu mais je trouve qu'il y a enormément de fichiers quand même

    Mais dans l'ensemble super simpa

  12. #12
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    J'ai tout découpé par module pour le rendre plus facilement modifiable par la suite (même si je savais d'avance que c'était peu probable que j'y retouche).

    Si tu n'as pas remarqué, la partie graphique et vraiment séparé de la parti jeu. Il suffirait de pas grd chose pour jouer en mode texte, et le rendre modulable à souhait était une grde priorité pour moi.

    De même, pour ajouter un joueur supplémentaire, il n'y a qu'un module à modifier (voir deux pour le menu)
    Je ne répondrai à aucune question technique en privé

  13. #13
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Par exemple, il y a :

    Il y a des modules pour chaque type abstrait :

    liste, ennemi, joueur, élément (pierre, diamant), niveau (chargement des niveaux et évolution independemment du graphisme), graphisme de base, graphisme évoluée, évenement de touche, évenement temporel, environnement...
    Je ne répondrai à aucune question technique en privé

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Ca fesait longtemps que je n'y avais pas jouer !

    J'ai juste une seul remarque : dommage qu'il n'y ai pas la musique, mais sinon c'est très bien.

  15. #15
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    C'est vrai que dès le début de la programmation du jeu, je savais que je ne metterai pas de son.

    Mais un problème aurait été de récuperer les fichiers wav (car tout le reste, j'ai absolument tout refait avec mes pattes), soit le recuperer sur qqn qui l'avait déjà fait (mais ça me tente pas), soit les recuperer directement du jeu original (mais la flemme). Donc tant pis, ça fait un jeu sans son. (quoique, j'aurais pu créer les miens, mais ça n'aurait pas été pareil que l'original).
    Je ne répondrai à aucune question technique en privé

  16. #16
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    Si tu veux j'ai le jeu original sur une disquette pour amstrad 6128+

  17. #17
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Pour faire le graphisme, j'ai dû reprendre une émulateur amstrad (j'ai eu le jeu original dans le temps, mais il est un peu trop vieilli pour fonctionner le pauvre). Donc, ça va Merci quand même
    Je ne répondrai à aucune question technique en privé

  18. #18
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    ça fait plaisir de trouver des fans de boulder dash :-)

    si tu veux y ajouter du son, je te donne volontier mes wav,
    j'avais fait un jeu similaire en 1998... oui c'est vieux :-)

    tous les sons sont fait avec les moyens du bord, j'ai des oeufs
    qui se cassent dans ma version, et j'en avais plein les doigts lors
    de l'enregistrement :-)

    il est téléchargeable ici http://games.ludomedia.ch/rockbasher-en296.html
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

Discussions similaires

  1. Boulder dash
    Par millie dans le forum Contribuez
    Réponses: 0
    Dernier message: 03/01/2011, 13h01
  2. [DEMO2]PAD: Insipiré de boulder Dash !
    Par fulue dans le forum Projets
    Réponses: 3
    Dernier message: 31/05/2008, 12h33
  3. [Source] [SDL] Boulder Dash
    Par millie dans le forum Contribuez
    Réponses: 2
    Dernier message: 30/07/2006, 13h12
  4. [langage] Je cherche un bon livre ?
    Par Anonymous dans le forum Langage
    Réponses: 13
    Dernier message: 09/04/2003, 14h16
  5. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo