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

SDL Discussion :

[C++] [SDL] Bomberman


Sujet :

SDL

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Par défaut [C++] [SDL] Bomberman
    Bonjour tout le monde,
    je suis actuellement très interessé pour créer un bomberman-like à l'aide de C++ et de la librairie SDL. Le probleme est que je ne sais veritablement pas par ou commencer. Beaucoup de questions se posent a moi et m'empeche de commencer à coder.

    Par exemple pour les images : La taille doit elle etre celle qui va apparaitre à l'ecran?

    Les maps sont actuellement ce qui me pose le plus de problemes "mentaux"..Comment materialiser une map? J'ai envisagé de voir une map comme un tableau ou chaque blocs peut revetir 3 etats : bloc libre, destructible ou indestructible mais est-ce une bonne solution?

    Pour le deplacement des bomber doit il se faire de facon "continu" ou bien de bloc en bloc? Et si telle est le cas (c'est la solution que je prefererais) comment coder ces deplacements?

    Je souhaiterais aussi mettre en place plusieurs mode de jeu, avec par exemle un mode histoire ou le joueur pourrait debloquer au fur et a mesure de personnages et maps pour le mode battle simple du jeu, mais dois-je alors rattacher une bdd au jeux ou simplement utiliser un simple fichier texte..

    Et derniere question je me demande comment je pourrais creer un menu "à l'ancienne" c'est a dire comme dans la version Supernes du jeux, où on se deplace dans celui ci avec les fleches directionnelles. Est ce que le menu est une combinaison de differentes images qui affiche le texte selectionnés en surbrillance suivant les commandes tapé au clavier?

    Je suis conscient que c'est un long message, que c'est beaucoup de choses d'un coup. J'ai deja fait pas mal de recherche sur SDL mais je n'ai pas eu de reponse clair par rapport à ces questions.. Une reponse a une simple question pourrait m'aider a debloquer la situation, je vous remercie donc de vos eventuelles contributions.
    Bonne journée

  2. #2
    Membre éclairé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Par défaut
    Bonjour,

    Pour tes questions, et sans trop réfléchir :
    Les images seront celles affichées à l'écran, pourquoi vouloir les redimensionner ?

    Je dirais même que ton tableau (représentant la map) doit contenir plus d'informations : joueur (et quel joueur), mur destructible, libre, mur indestructible, monstre (et quel type), bonus, une bombe

    le déplacement des personnages animés, je le verrais comme un simple indicateur dans ton tableau. Si je pars à gauche, j'anime un sprite sur ma case actuelle qui va vers la gauche, dès que j'ai atteint un certain point, je change de case (dans le tableau, mon indicateur s'est déplacé), et j'ai à nouveau un sprite animé vers la gauche, mais situé à droite de la case. Arrivé au milieu, je regarde si le joueur appuye encore sur la commande "aller à gauche", si oui, je recommence, sinon, j'arrête l'animation et je laisse l'indicateur où il est.

    Le mode de jeu, c'est plus complexe. Réfléchis d'abord bien à un simple tableau vide dans lequel ton personnage peut se déplacer seulement à travers les cases libres, puis faire sauter les murs, etc... Regarde mon tutorial sur Tetris pour voir comment se planifier des étapes (même si le tuto est un peu stoppé en ce moment).

    Pour le menu, je te conseillerais de prendre une image de fond qui contient tous les menus non choisis, et de rajouter, suivant le menu sélectionner, une petite image à gauche du menu sélectionné. Si tu veux "illuminer" le menu sélectionné, tu peux afficher son sprite par dessus le fond, donnant ainsi l'illusion qu'il a été illuminé...

    Attention !
    Tout ceci sans réfléchir trop longtemps, je retourne bosser

  3. #3
    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
    Par défaut
    Bon, je ne répond pas à tout

    Citation Envoyé par shub
    Je souhaiterais aussi mettre en place plusieurs mode de jeu, avec par exemle un mode histoire ou le joueur pourrait debloquer au fur et a mesure de personnages et maps pour le mode battle simple du jeu, mais dois-je alors rattacher une bdd au jeux ou simplement utiliser un simple fichier texte..
    En fait, ce problème peut venir assez tard si tu t'y prends bien. Essayes déjà de faire le reste, et si tu y arrives à ajouter cette fonctionnalité. Elle n'est en général pas super marrante (tout ce qui est sauvegarde, ce n'est pas le plus fun). Si tu n'as qu'un seul joueur qui joue, je pense que ça ne sert à rien d'utiliser une base de donnée. Les données seront assez limitées : dernier numéro de niveau débloqué, personnages débloqués. Donc, en gros, quelques octects de fichier texte, donc pas la peine de s'embeter avec une base de donnée

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Par défaut
    merci beaucoup pour vos reponses. Je vais essayer d'avancer ca dans les jours prochain.
    Le probleme que j'ai est veritablement de me lancer dans le projet mais bon, j'ai des idées je vais essayer de faire mon diagramme des classes je vous ferez part de l'avancement et vous risquez de tte facon d'entendre parler de moi.
    Bonne soirée

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Par défaut
    à mon avis, la première étape c'est de beaucoup jouer a des bomberman pour connaitre les features que tu voudrais implémenter
    Une des choses importante à savoir, c'est si ton bomberman peux s'arrêter sur 2 cases, où si en appuyant 1/10e de seconde il va aller directement (avec une animation) sur la case adjacente.
    C'est important de se décider tôt, car la 2e méthode implique pas mal de difficultés (mais rend le jeu 10x mieux )

    Je dirais même que ton tableau (représentant la map) doit contenir plus d'informations : joueur (et quel joueur), mur destructible, libre, mur indestructible, monstre (et quel type), bonus, une bombe
    Pour avoir moi même fait un bomberman (http://www.ticalc.org/archives/files...357/35795.html), je peux te dire que c'est une assez mauvaise idée de mettre les joueurs/monstre dans un tableau à 2 dimensions (ils devraient plutôt être dans un tableau à une dimension)

    Ce que je te conseillerais de faire, c'est d'avoir plusieurs tableaux. Comme tu l'a suggéré, avoir un tableau qui contient des informations sur les block (destructible, indestructible, vide) est une bonne idée. Après, tu peux avoir un tableau qui contient des pointeurs vers les bonus, un autre qui contient des pointeurs vers les bombes posées, etc...

    En ce qui concerne les menus/bdd, comme ils l'ont dit c'est super chiant et de toute façon pas compliqué. à faire à la fin

  6. #6
    Membre éclairé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Par défaut
    Citation Envoyé par Jyaif
    Pour avoir moi même fait un bomberman (http://www.ticalc.org/archives/files...357/35795.html), je peux te dire que c'est une assez mauvaise idée de mettre les joueurs/monstre dans un tableau à 2 dimensions (ils devraient plutôt être dans un tableau à une dimension)
    Tiens ? Tu peux t'expliquer plus en longueur là-dessus ? J'aimerais comprendre pourquoi ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Par défaut
    Merci a tous.
    Je suis partie pour l'instant sur une fenetre SDL que je mettrais a 800x600.
    J'en suis à la partie "game design" donc je fait les pwer up, les blocs , les persos,...
    J'ai decidé de decouper l'arene de jeu en un tableau de 12x12 blocs de 50 pixel chacuns, plus une partie sur la gauche qui donnera des info sur les 4 differents personnages.
    Je pense stocker les differentes "structures" des maps dans un fichier ou seront definis ces maps donc, sous forme de tableau CONSTANT a 2 dimensions 12x12, mais je ne sais pas si cette solution est envisageable.
    J'essaye de finir ca dans la journée et de commencer à coder.
    Vos commentaires et ameliorations sont bien sur les bienvenues.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Par défaut
    Finalement je ne vais pas regrouper les maps , je vais plutot faire un fichier texte pour chaque map que j'irais lire au chargement..

  9. #9
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    Il y a pas mal de projet libres sur le sujet donc il est toujours possible d'aller voir comment eux ont fait ^^

    Citation Envoyé par Mindiell
    Tiens ? Tu peux t'expliquer plus en longueur là-dessus ? J'aimerais comprendre pourquoi ?
    Peut-être une question d'approche objet : Les monstres, personnages et autres ont leur vie propre qui ne dépend pas de leur position (qui est un de leur attributs plutôt qu'un endroit où les ranger). De plus on a des cases vides, des cases avec plusieurs entités et pas non plus envie de partir à la pêche pour retrouver nos entités dans un tableau.

    Même si les différentes entités (bonus, personnages, bombes...) sont biens dans une ou des listes, je crois que j'opterais quand même pour conserver un tableau pour l'arène elle même, histoire de savoir facilement si une case est bloquante ou non. Il serait peut-être aussi intéressant de disposer d'une structure indexée par coordonnées pour retrouver les différentes entités plus facilement (ou pas vue la vitesse des machines actuelles). Bref un peu ce que décrit Jyaif


    Citation Envoyé par shub
    Pour le deplacement des bomber doit il se faire de facon "continu" ou bien de bloc en bloc? Et si telle est le cas (c'est la solution que je prefererais) comment coder ces deplacements?
    C'est plus compliqué de faire du continu, mais le résultat est incomparablement plus souple. Je tenterais une approche mixte : un jeu de coordonnées désignant la case auquel ont ajoute deux offsets en pixels. Quand l'offset devient trop grand, on soustrait la taille d'une case et on incrémente la coordonnée. Reste à interdire de modifier l'offset si la case dans cette direction n'est pas libre et dans certains cas de changement de direction à faire glisser l'offset inutilisé (genre x quand on monte) vers 0 plutôt que de bloquer le joueur qui n'est pas pile aligné sur un passage (c'est ce genre de cas qui seront délicats à gérer) ou de le laisser se promener entre deux rangées de cases libres (si on veut le dynamiter il est important de voir sur laquelle il se trouve précisément).



    Sinon, détail que je considère comme vital : Les dernières versions de bomber que je connaisse (sur PS) permettent de jouer à chat avec les maladies pour les passer à ses amis. Personnellement, la méthode super-NES m'a toujours semblé beaucoup plus fun : elles sont juste contagieuses, donc un malade infecte tout le monde (plutôt que un seul en étant guéri) Et quand tout le monde va super vite en posant systématiquement toutes ses bombes, c'est tordant.

  10. #10
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    Citation Envoyé par shub
    Je pense stocker les differentes "structures" des maps dans un fichier ou seront definis ces maps donc, sous forme de tableau CONSTANT a 2 dimensions 12x12, mais je ne sais pas si cette solution est envisageable.
    Envisageable oui, reste à voir si le mode un joueur aura un scrolling. Ou un mode haute résolution et/ou lemmings pour des batailles à 10 joueurs ?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Par défaut
    Je vais rester sur quelque chose de basique donc pour l'instant la map sera "fixe" (pas de scrolling donc), le jeu n'acceuillera au max que 4 joueurs (multi a voir)
    Je vais essayer de digerer l'explication sur le deplacement. Merci

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Par défaut
    Citation Envoyé par Mindiell
    Tiens ? Tu peux t'expliquer plus en longueur là-dessus ? J'aimerais comprendre pourquoi ?
    Si les monstres/joueurs sont dans un tableau à une dimension, pour les bouger/afficher il suffit de parcourir le tableau.
    Si on utilise ton approche, il ne pourrait pas avoir plusieurs joueurs sur la même case.
    Un joueur/monstre peut être sur plusieurs cases à la fois.


    Sivrît> plutôt que d'utiliser des offset par rapport à une case, je pense qu'il faut mieux tout simplement assigner au joueur des coordonnées. Ça revient à la même chose, à part que avec des coordonnées il y a pas besoin de changer le block de référence et les offset (c'est plus simple quoi ).
    A partir de ces coordonnées, tu peux si tu veux en déduire sur quels blocks se trouve le joueur (grossièrement: blockX = x/largeurBlocks)

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Par défaut
    juste une petite question en passant, suis-je obligé de passer par un projet win32 pour utiliser la SDL? Ou bien est ce que je peux le faire avec d'autre type de projet comme les MFC application par exemple?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/05/2010, 20h41
  2. un plateau en SDL...
    Par maniaco_jazz dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 24/02/2004, 16h48
  3. [Debutant] Sdl & OpenGl link ne marche pas
    Par Riko dans le forum OpenGL
    Réponses: 9
    Dernier message: 18/02/2004, 16h13
  4. [opengl et sdl]
    Par Gonath dans le forum OpenGL
    Réponses: 6
    Dernier message: 08/12/2003, 09h49

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