[SFML/C++] redefinition of class, dzielene kodu
Ostatnio zmodyfikowano 2021-04-22 10:09
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 |
|
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. |
|
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 :) |
|
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) #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; if( !m_tileset.loadFromFile( tileset ) ) { return false; } 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++ ) { int tileNumber = tiles[ i + j * width ]; int tu = tileNumber %( m_tileset.getSize().x / tileSize.x ); int tv = tileNumber /( m_tileset.getSize().x / tileSize.x ); sf::Vertex * quad = & m_vertices[( i + j * width ) * 4 ]; 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 ); 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 { states.transform *= getTransform(); states.texture = & m_tileset; 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)) ===|
|
|
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 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;
|
|
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 :) |
|
1 « 2 » |