Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Mapa kafelkowa

Ostatnio zmodyfikowano 2016-01-10 17:06
Autor Wiadomość
Japonio
Temat założony przez niniejszego użytkownika
Mapa kafelkowa
» 2016-01-10 15:12:48
Wie ktoś gdzie mogę znaleźć informacje na jej temat ? Przeszukiwałem szerokie pasma internetowe w celu znalezienia informacji , jak napisać mapę kafelkową , jednak nie znajdywałem jej na C++. Czy mógłby ktoś mi podać linka , albo chociaż naprowadzić mnie na właściwą drogę , żeby tą mapę napisać ?
P-143283
Gibas11
» 2016-01-10 15:54:07
Czego od tej mapy kafelkowej oczekujesz? Tego typu twory mogą się bardzo różnić funkcjonalnością, więc nie dziw się, że trudno coś konkretnego znaleźć w internecie. :\
P-143293
Japonio
Temat założony przez niniejszego użytkownika
» 2016-01-10 15:58:00
Ale chciałbym , zobaczyć jakiś przykład , albo parę przykładów map kafelkowej a nie. Nie wiem od której strony mam się za to brać ;/
P-143294
Gibas11
» 2016-01-10 16:09:29
Jak chcesz mogę ci wrzucić kod konsolowej mapy kafelkowej (ładowanie z pliku itd.) jak tylko to znajdę, o teorii możesz poczytać tu: http:/​/gamedevelopment.tutsplus.com​/tutorials​/an-introduction-to-creating-a-tile-map-engine--gamedev-10900, wprawdzie to chyba Java, ale cóż - teoria.
P-143295
Japonio
Temat założony przez niniejszego użytkownika
» 2016-01-10 16:29:50
bardzo bym poprosił :) , a na razie bd posiłkował się teorią z javy
P-143299
Gibas11
» 2016-01-10 17:06:10
Ok, mam. całość jest bardzo prosta a kafelki są dodane poniekąd na siłę (jedyna rzecz w strukturze kafelka to znak wyświetlany później na ekranie), ale praktycznie tak samo działa to w prostych grach 2D. W miarę łatwo to rozbudować i mam nadzieję, że się połapiesz.

--main.cpp--
C/C++
#include <iostream>
#include <fstream>
#include <map>
using namespace std;

struct Tile //Struktura kafelka
{
    char c; //Wyświetlany znak
    Tile( char _c );
};
Tile::Tile( char _c = ' ' ) //Konstruktor kafelka
{
    c = _c;
}

class mapEngine //Silnik gry
{
private:
    map < unsigned char, Tile > _tileSet; //Mapa dostępnych pól
    Tile ** _map; //Właściwa, później wyświetlana mapa
    int _sizeX, _sizeY; //Rozmiary mapy
public:
    void registerTile( unsigned char ID, char c );
    void loadFromFile( const char * file );
   
    friend ostream & operator <<( ostream & out, mapEngine & En );
};

void mapEngine::registerTile( unsigned char ID, char c ) //Dodawanie nowego pola, 'ID' to numer w pliku mapy a 'c' - wyświetlany znak
{
    Tile tmp( c );
    _tileSet[ ID ] = tmp;
}

void mapEngine::loadFromFile( const char * file ) //Ładowanie mapy z pliku
{
    ifstream in( file ); //Otworzenie pliku
    in >> _sizeY; //Wczytanie szerokości mapy
    in.get(); //Pominięcie znaku 'x'
    in >> _sizeX; //Wczytanie wysokości mapy
   
    //Dynamiczne alokowanie dwuwymierowej tablicy pól
    _map = new Tile *[ _sizeX ];
    for( int i = 0; i < _sizeX; i++ )
         _map[ i ] = new Tile[ _sizeY ];
    //-----------------------------------------------
   
    //Wypełnienie mapy
    for( int x = 0; x < _sizeX; x++ )
    {
        for( int y = 0; y < _sizeY; y++ )
        {
            unsigned int ID;
            in >> ID;
            _map[ x ][ y ] = _tileSet[ ID ];
        }
    }
    //----------------
   
    in.close(); //Zamknięcie pliku
}

//Przeciążenie operatora << w m. in. 'cout', więcej znajdziesz w internecie
ostream & operator <<( ostream & out, mapEngine & En )
{
    for( int x = 0; x < En._sizeX; x++ )
    {
        for( int y = 0; y < En._sizeY; y++ )
             out << En._map[ x ][ y ].c;
       
        out << endl;
    }
}
//-------------------------------------------------

int main()
{
    mapEngine engine; //Utworzenie silnika
   
    engine.registerTile( 0, ' ' ); //Puste pole
    engine.registerTile( 1, '#' ); //Ściana
   
    engine.loadFromFile( "mapa.map" ); //Wczytanie z pliku
   
    cout << engine; //Jednorazowe wyświetlenie mapy
   
    return 0;
}

--mapa.map--

12x15
1 1 1 1 1 0 0 1 1 1 1 1
1 0 0 0 1 1 1 1 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 1 1 1 1 0 0 0 1
1 1 1 1 1 1 1 1 1 0 1 1
1 1 1 1 1 1 1 1 1 0 1 1
1 0 0 0 1 1 1 1 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 1 1 1 1 0 0 0 1
1 1 0 1 1 1 1 1 1 1 1 1
1 1 0 1 1 1 1 1 1 1 1 1
1 0 0 0 1 1 1 1 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 1 1 1 1 0 0 0 1
1 1 1 1 1 0 0 1 1 1 1 1

--wyjście programu--

#####  #####
#   ####   #
#          #
#   ####   #
######### ##
######### ##
#   ####   #
#          #
#   ####   #
## #########
## #########
#   ####   #
#          #
#   ####   #
#####  #####
P-143302
« 1 »
  Strona 1 z 1