[SDL]Lecture d'une Map 2D .txt:besoin d'aide

Itachi_93 Messages postés 21 Statut Membre -  
Itachi_93 Messages postés 21 Statut Membre -
Bonjour,je suis en train de créer un jeu 2D,mais pour cela j'avais de besoin de me pratiquer en créant un 2eme projet pour quelque test.Donc j'essaie de faire remplir un fenêtre avec seulement deux image différente.
J'ai créer un fichier text ou il y a 36 caractère,tous des zero et des un.
On dirait qu'il lit seulement le premier chiffre.Alors toute l'écran est pareil.
Si vous pouvez m'aider???
voici mon code C++.

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <SDL.h>
#include <SDL_image.h>

#define BLOCK_LARGEUR 107
#define BLOCK_HAUTEUR 80

#define NB_BLOCS_LARGEUR    6
#define NB_BLOCS_HAUTEUR    6
#define LARGEUR_FENETRE     BLOCK_LARGEUR * NB_BLOCS_LARGEUR
#define HAUTEUR_FENETRE     BLOCK_HAUTEUR* NB_BLOCS_HAUTEUR


using namespace std;

int main(int argc,char** argv)
{

SDL_Surface *ecran = NULL, *Terre = NULL, *Vide =NULL;
    SDL_Rect position;
    SDL_Event event;
    int Map[6][6], x=0, y=0;
    bool continuer = true;
    char caractere;

   SDL_Init(SDL_INIT_VIDEO);

    ecran = SDL_SetVideoMode(LARGEUR_FENETRE, HAUTEUR_FENETRE, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
    SDL_WM_SetCaption("Map binaire", NULL);

    SDL_EnableKeyRepeat(10, 10);

Terre = IMG_Load("Terre.bmp");
Vide = IMG_Load("Vide.bmp");


 ifstream FichierMap("Map1.txt", ios::in);
  while (FichierMap.get(caractere))
{
switch (caractere)
                {
                case '0':
                    Map[x][y] = 0;
                    break;

                case '1':
                    Map[x][y] = 1;
                    break;

                }
        }


    while (continuer)
    {

for (int i = 0 ; i < NB_BLOCS_LARGEUR ; i++)
        {
            for (int j = 0 ; j < NB_BLOCS_HAUTEUR ; j++)
            {
position.x = i * BLOCK_LARGEUR;
position.y = j * BLOCK_HAUTEUR;

   switch(Map[x][y])
                {
                    case 1:
                        SDL_BlitSurface(Terre, NULL, ecran, &position);
                        break;
                    case 0:
                        SDL_BlitSurface(Vide, NULL, ecran, &position);
                        break;
                }
    }
        }


SDL_Flip(ecran);
            SDL_PollEvent(&event);
    switch (event.type)
    {
    case SDL_QUIT:
        SDL_Quit();
        exit(0);
        break;
    }



        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));



    }
FichierMap.close();
     SDL_FreeSurface(ecran);
    SDL_Quit();

    return 0;
}
A voir également:

1 réponse

Itachi_93 Messages postés 21 Statut Membre 3
 
UP
0