123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #include "Collisions.h"
- Collisions::Collisions(SDL_Surface *screen, int const xBlocSize, int const yBlocSize)
- : m_screen(screen), m_xSize(xBlocSize), m_ySize(yBlocSize)
- {
-
- m_tableau = new int*[yBlocSize];
- for (int i(0); i<yBlocSize; i++)
- m_tableau[i] = new int[xBlocSize];
-
- m_carreStd = SDL_LoadBMP("Textures/Mur.bmp");
- for (int i(0); i<12; i++)
- m_carre[i] = colorMightyObjet(m_carreStd, i);
-
- m_sol = SDL_LoadBMP("Textures/Sol.bmp");
- m_terrain = SDL_CreateRGBSurface(SDL_HWSURFACE, m_screen->w, m_screen->h, 32, 0, 0, 0, 0);
- m_position.x = m_position.y = 0;
-
- reinitialiser();
- }
- Collisions::~Collisions()
- {
-
- for (int i(0); i < m_ySize; i++)
- delete[] m_tableau[i];
- delete[] m_tableau;
- m_tableau = 0;
-
- for (int i(0); i<4; i++)
- SDL_FreeSurface(m_carre[i]);
- SDL_FreeSurface(m_sol);
- SDL_FreeSurface(m_terrain);
- SDL_FreeSurface(m_carreStd);
- }
- void Collisions::ajouter(int x, int y, int ID)
- {
-
- coorectPos(x, y);
-
- m_position.y=y*20;
- m_position.x=x*20;
- if (0<=ID && ID<=4 && (m_tableau[y][x]==VIDE || m_tableau[y][x] == ID))
- {
- m_tableau[y][x] = ID;
- SDL_BlitSurface(m_carre[ID], 0, m_terrain, &m_position);
- }
- else
- {
- m_tableau[y][x] = NEUTRE;
- SDL_BlitSurface(m_carreStd, 0, m_terrain, &m_position);
- }
-
- }
- void Collisions::enlever(int x, int y)
- {
-
- coorectPos(x, y);
-
- m_position.y=y*20;
- m_position.x=x*20;
- SDL_BlitSurface(m_sol, 0, m_terrain, &m_position);
-
- m_tableau[y][x] = VIDE;
- }
- int Collisions::tester(int x,int y) const
- {
- coorectPos(x,y);
- return m_tableau[y][x];
- }
- void Collisions::afficher()
- {
- SDL_BlitSurface(m_terrain, 0, m_screen, 0);
- }
- void Collisions::reinitialiser()
- {
- for (int i(0); i < m_ySize; i++)
- {
- for (int j(0); j < m_xSize; j++)
- {
- m_tableau[i][j] = VIDE;
- m_position.y = i*20;
- m_position.x = j*20;
- SDL_BlitSurface(m_sol, 0, m_terrain, &m_position);
- }
- }
- }
- void Collisions::coorectPos(int &x, int &y) const
- {
- while ( x >= m_xSize )
- x -= m_xSize;
- while ( x < 0 )
- x += m_xSize;
- while ( y >= m_ySize )
- y -= m_ySize;
- while ( y < 0 )
- y += m_ySize;
- }
- int Collisions::getSize(int idCoord)
- {
- if (idCoord)
- return m_ySize;
- else
- return m_xSize;
- }
|