Obwód planszy

0
void Map::MapStart()
{
    for(int i = 0; i < SIZE_X; i++)
        for(int j = 0; j < SIZE_Y; j++)
            Map[i][j] = 1;
    for(int i = 1; i < (SIZE_X - 1); i++)
        for(int j = 1; j < (SIZE_Y - 1); j++)
            Map[i][j] = 0;

}

void Map::MapDraw()
{
    for(int i = 0; i < SIZE_X; i++)
    {
        for(int j = 0; j < SIZE_Y; j++)
        {
            if(Map[i][j]==1)
                cout << "#";
        }
        cout << endl;
    }
}
void Map::MapClear()
{
   for(int i = 0; i < SIZE_Y; i++)
        for(int j = 0; j < SIZE_X; j++)
        {
            Map[i][j]==0;
        }
}

Nie bierze mi prawej krawędzi w ogóle, nie wiem co jest grane.
Dzieki za odp.

1
  1. zła kolejność iteracji, powinno być najpierw po y a wewnątrz po x (chyba, że masz obrócony układ współrzędnych)
  2. nie wypisujesz nic jeśli komórka jest pusta, efekt jest taki, że kursor nie przesuwa się na nową pozycję powinno być:
void Map::MapDraw() {
    for(int j = 0; j < SIZE_Y; j++) {
        for(int i = 0; i < SIZE_X; i++) {
            switch(Map[i][j]) {
                case 0:
                   cout << ' ';
                   break;
                case 1:
                   cout << '#';
                   break;
                default:
                   cout << '?';
             }
        }
        cout << endl;
    }
}
1
void Map::MapClear()
  {
   for(int y=0;y<SIZE_Y;++y) for(int x=0;x<SIZE_X;++x) Map[y][x]=0;
  }
void Map::MapDraw()
  {
   const char Tb[]=" #?";
   for(int y=0;y<SIZE_Y;++y,cout<<endl) for(int x=0;x<SIZE_X;++x) cout<<Tb[Map[y][x]];
  }
void Map::MapStart()
  {
   for(int y=0;y<SIZE_Y;++y) for(int x=0;x<SIZE_X;++x) Map[y][x]=(!y)||(!x)||(y==SIZE_Y-1)||(x==SIZE_X-1);
  }
0

wielkie dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1