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 :

[SDL] Quadrillage d'une map


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Par défaut [SDL] Quadrillage d'une map
    Bonsoir a tous ,

    J'ai continue a travailler sur la base du fondu entre les fonds dans les sources sdl et j'en suis arrive a ce que je voulait. Je m'explique :

    Je souhaite faire un jeu en 2d qui, au final ressemblera un peu a un jeu d'echec.

    Le nombre de cases sera aleatoire donc je vais scroller mon ecran en fond. Du genre 100x100 pour 1000cases : J'affiche 10x10 cases et je me deplace sur mon terrain avec les fleches du clavier.

    Par contre ce que je ne sais pas faire c'est donner a mon fond un aspect de jeu d'echec, c'est a dire faire un quadrillage de ce type :

    _________
    |_|_|_|_|_|_|
    |_|_|_|_|_|_|
    |_|_|_|_|_|_|
    |_|_|_|_|_|_|

    Si vous pourriez me donner un indice ca serait avec plaisir ^^

    Merci bcp et bonne soiree a vous amis programmeurs

  2. #2
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    je sais pas?

    si tu veux un nombre identiques de rangées et de colonnes, il te faut la fonction racine carrée.

    Admettons que tu l'aies, ou n'importe:

    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
    28
    29
    30
    31
    32
    int nbcolonnes;
    int nbrangees;
     
    nbcolonnes = racinecarree(nbcases);
    nbrangees = nbcolonnes;
     
    /* et maintenant les cases 
       soit Case le type d'une case */
     
    Case cases[nbrangees][nbcolonnes];
     
    /* Le placement des cases */
     
    int largeurcase;
    int hauteurcase;
     
    //x et y, variables au long de la boucle
    int x = 0; 
    int y = 0;
     
    for (int i = 0; i < nbrangees; ++i, y+=hauteurcase)
    {
      for (int j = 0; j < nbcolonnes; ++j, x+=largeurcase)
      {
        /* Case  comporte un SDL_Rect pos */
        cases[i][j].pos.x = x;
        cases[i][j].pos.y = y;
        cases[i][j].pos.w = largeurcase;
        cases[i][j].pos.h = hauteurcase;
      }
    }
    ...

  3. #3
    Expert confirmé

    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 : 45
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Pas besoin de t'embêter comme cela en fait.

    Tu définis la taille d'une case et après tu boucles pour afficher les différentes tuiles. Pour un jeu 2D, en principe, on a un gestionnaire de tuiles qui à partir d'un identifiant retourne la tuile à afficher.

    Cela donnerait donc :

    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
     
    /* Definition de la taille */
    rect.w = wtaillefenetre/(wtailletuile + wseparation);
    rect.h = htaillefenetre/(htailletuile + hseparation);
     
    imin = Fenetre_CalcImin();
    imax = Fenetre_CalcImax();
    jmin = Fenetre_CalcJmin();
    jmax = Fenetre_CalcJmax();
     
    /* Position de depart */
    rect.x = 0;
    rect.y = 0;
     
    for(imin=;i<imax;i++) {
    for(jmin=;j<jmax;j++) {
      SDL_BlitSurface(GestTuile_Get(cartes[i][j].tuile), NULL, screen, rect);
      rect.x += rect.w;
      rect.y += rect.y;
    }
    }
    Bon faudrait définir les autres fonctions...
    Jc

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Par défaut
    Merci pour vos reponses je vais etudier tout ca ce soir je vous tient au courant bien sur ^^

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/05/2005, 15h40
  2. Inserer des elements dans une map sans rangement ?
    Par Muetdhiver dans le forum C++
    Réponses: 3
    Dernier message: 07/09/2004, 11h09
  3. problème de références _ptr dans une map STL
    Par Mr_Tyu dans le forum CORBA
    Réponses: 1
    Dernier message: 10/08/2004, 10h39
  4. [ MAP ] Choix d'une MAP
    Par mawashee dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 09/08/2004, 16h39
  5. Technique pour faire une map en relief
    Par rvzip64 dans le forum OpenGL
    Réponses: 4
    Dernier message: 28/06/2004, 22h44

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