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

[SFML/C++] redefinition of class, dzielene kodu

Ostatnio zmodyfikowano 2021-04-22 10:09
Autor Wiadomość
R0ut4
Temat założony przez niniejszego użytkownika
» 2021-04-22 00:07:24
Kod wzięty prawie żywcem z oficjala... Próbowałem zmienić m_tileset na tileset (tak jak jest w nawiasach) ale wywala inne błędy xd
P-178474
DejaVu
» 2021-04-22 00:09:20
Zapewne źle kod przepisałeś - innymi słowy: aktualne problemy nie wynikają z dzielenia kodu na osobne pliki źródłowe tylko z tego, że nie masz zdefiniowanych zmiennych do których się odwołujesz.
P-178475
R0ut4
Temat założony przez niniejszego użytkownika
» 2021-04-22 00:11:18
Kopiowałem XD część poszła do main.cpp, reszta do tilemap.cpp (nie liczę "pierdół" w tilemap.hpp)
pozmieniam to na to co w nawiasach jest i wyślę tobie logi i kod :)
P-178476
R0ut4
Temat założony przez niniejszego użytkownika
» 2021-04-22 00:23:44
udało mi się coś takiego zrobić: (nie mam juz na to pomysłu)
C/C++
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include "tilemap.hpp"

bool TileMap::load( const std::string & tileset, sf::Vector2u tileSize, const int * tiles, unsigned int width, unsigned int height )
{
   
sf::Texture m_tileset;
   
//Wczytywanie tekstur tileset
   
if( !m_tileset.loadFromFile( tileset ) )
   
{
       
return false;
   
}
   
//Level size
   
sf::VertexArray m_vertices;
   
m_vertices.setPrimitiveType( sf::Quads );
   
m_vertices.resize( width * height * 4 );
   
   
for( unsigned int i = 0; i < width; i++ )
   
{
       
for( unsigned int j = 0; j < height; j++ )
       
{
           
//pobieranie obecnego numeru tile
           
int tileNumber = tiles[ i + j * width ];
           
           
// find its position in the tileset texture
           
int tu = tileNumber %( m_tileset.getSize().x / tileSize.x );
           
int tv = tileNumber /( m_tileset.getSize().x / tileSize.x );
           
           
// get a pointer to the current tile's quad
           
sf::Vertex * quad = & m_vertices[( i + j * width ) * 4 ];
           
           
// define its 4 corners
           
quad[ 0 ].position = sf::Vector2f( i * tileSize.x, j * tileSize.y );
           
quad[ 1 ].position = sf::Vector2f(( i + 1 ) * tileSize.x, j * tileSize.y );
           
quad[ 2 ].position = sf::Vector2f(( i + 1 ) * tileSize.x,( j + 1 ) * tileSize.y );
           
quad[ 3 ].position = sf::Vector2f( i * tileSize.x,( j + 1 ) * tileSize.y );
           
           
// define its 4 texture coordinates
           
quad[ 0 ].texCoords = sf::Vector2f( tu * tileSize.x, tv * tileSize.y );
           
quad[ 1 ].texCoords = sf::Vector2f(( tu + 1 ) * tileSize.x, tv * tileSize.y );
           
quad[ 2 ].texCoords = sf::Vector2f(( tu + 1 ) * tileSize.x,( tv + 1 ) * tileSize.y );
           
quad[ 3 ].texCoords = sf::Vector2f( tu * tileSize.x,( tv + 1 ) * tileSize.y );
           
       
}
    }
   
return true;
}

void TileMap::draw( sf::RenderTarget & target, sf::RenderStates states ) const
{
   
// apply the transform
   
states.transform *= getTransform();
   
   
// apply the tileset texture
   
states.texture = & m_tileset;
   
   
// draw the vertex array
   
target.draw( m_vertices, states );
}


||=== Build: Debug in game (compiler: GNU GCC Compiler) ===|
C:\Users\routa\Desktop\Prpogramy c++\game\tilemap.cpp||In member function 'virtual void TileMap::draw(sf::RenderTarget&, sf::RenderStates) const':|
C:\Users\routa\Desktop\Prpogramy c++\game\tilemap.cpp|55|error: 'm_tileset' was not declared in this scope|
C:\Users\routa\Desktop\Prpogramy c++\game\tilemap.cpp|55|note: suggested alternative: '_tzset'|
C:\Users\routa\Desktop\Prpogramy c++\game\tilemap.cpp|58|error: 'm_vertices' was not declared in this scope|
C:\Users\routa\Desktop\Prpogramy c++\game\tilemap.cpp|58|note: suggested alternative: '_strtime_s'|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

P-178477
nanoant20
» 2021-04-22 09:28:41
'm_tileset' was not declared in this scope
'm_vertices' was not declared in this scope
te dwie zmienne powinny byc w tilemap.hpp
C/C++
bool load( const std::string & tileset, sf::Vector2u tileSize, const int * tiles, unsigned int width, unsigned int height );
sf::Texture m_tileset;
sf::VertexArray m_vertices;
P-178478
R0ut4
Temat założony przez niniejszego użytkownika
» 2021-04-22 10:09:41
Ok, działa. Podziękował wam za pomoc :D
Oby w razie co kolejnych problemów nie było :)
P-178479
1 « 2 »
Poprzednia strona Strona 2 z 2