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

[SFML/C++] Podawanie argumentów dla funkcji w innego pliku

Ostatnio zmodyfikowano 2021-04-25 18:35
Autor Wiadomość
R0ut4
Temat założony przez niniejszego użytkownika
» 2021-04-25 12:37:43
Dobra... Poddaje się... Moglibyście podrzucić jakieś linki do kursu C++? (Zelenta widziałem, a na tej stronie nie bardzo mi się podoba [jak będzie trzeba to zajrze])
Dzięki za chęć pomocy :)
P-178495
DejaVu
» 2021-04-25 12:39:48
Kup po prostu książkę do C++. Kursy online to dobre wprowadzenie, aby stwierdzić czy chcesz iść w to dalej czy nie. Dobrej książki nie zastąpi Ci żaden kurs online. Co najwyżej pomoże zrozumieć jakieś zagadnienie, opisując to samo z innej perspektywy lub po prostu innymi słowami.
P-178496
R0ut4
Temat założony przez niniejszego użytkownika
» 2021-04-25 12:59:23
Chętnie bym kupił, ale rachunki i podatki szybko wykańczaja moją wypłatę xD
Co myślisz o Symfonii C++? (tej w trzech tomach)
A kurs na tym forum jest warty uwagi? liczę na obiektywizm XD :D
P-178497
DejaVu
» 2021-04-25 13:02:56
Im grubsza książka tym gorsza (przynajmniej dla początkującego). Książki liczące 350-400 stron powinny być wystarczające, aby wiedzieć czy iść dalej czy nie.

» Kurs C++» Poziom 5Przeczytałem kurs C++ - co dalej? lekcja
P-178498
R0ut4
Temat założony przez niniejszego użytkownika
» 2021-04-25 13:06:55
Dzięki za rady i pomoc. Poszukam w pdfie XD
Temat zamykam koło 14:00 (jakby ktoś jeszcze chciał coś dopisać)
P-178499
pekfos
» 2021-04-25 13:17:12
Każdy plik cpp się kompiluje niezależnie. Jeśli jesteś w stanie napisać poprawny kod w jednym pliku, to powinieneś być w stanie napisać dwa poprawne pliki, choćby miałoby to polegać na kopiowaniu kodu. Musisz tylko zapewnić żeby niektóre rzeczy nie miały więcej niż jednej definicji, co na ten moment dotyczy tylko funkcji i zmiennych globalnych.
P-178500
R0ut4
Temat założony przez niniejszego użytkownika
» 2021-04-25 16:03:17
OK. UDAŁO SIĘ! Tak jakby :/
Tzn: kompiluje się i wszystko jest tak jak powinno poza dwoma frzeczami:
1. Mam dwa Sprity gracza, jeden statyczny, a drugim się mogę ruszać
2. Kamera nie podąża za graczem ruchomym :/
player.cpp
C/C++
#include "player.hpp"
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
void Gracz::draw( sf::RenderTarget & target, sf::RenderStates states ) const
{
   
sf::VertexArray P( sf::Quads, 4 );
   
P[ 0 ].position = sf::Vector2f( 0, 0 );
   
P[ 1 ].position = sf::Vector2f( 100, 0 );
   
P[ 2 ].position = sf::Vector2f( 100, 100 );
   
P[ 3 ].position = sf::Vector2f( 0, 100 );
   
   
sf::Texture textura;
   
textura.loadFromFile( "player.png" );
   
   
P[ 0 ].texCoords = sf::Vector2f( 0, 0 );
   
P[ 1 ].texCoords = sf::Vector2f( 50, 0 );
   
P[ 2 ].texCoords = sf::Vector2f( 50, 50 );
   
P[ 3 ].texCoords = sf::Vector2f( 0, 50 );
   
   
states.texture = & textura;
   
target.draw( P, states );
   
states.transform *= getTransform(); /// !!!!!
   
target.draw( P, states );
}
playermove.cpp
C/C++
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include "playermove.hpp"
#include "player.hpp"

void playerMove( Gracz & hero, sf::View cam, int HM, int WM, Stan G, Stan G1, Stan ST )
{
   
if( sf::Keyboard::isKeyPressed( sf::Keyboard::W ) )
   
{
       
hero.move( 0, - 2 );
       
cam.move( 0, - 2 );
   
}
   
if( sf::Keyboard::isKeyPressed( sf::Keyboard::S ) )
   
{
       
hero.move( 0, 2 );
       
cam.move( 0, 2 );
   
}
   
if( sf::Keyboard::isKeyPressed( sf::Keyboard::A ) )
   
{
       
hero.move( - 2, 0 );
       
cam.move( - 2, 0 );
   
}
   
if( sf::Keyboard::isKeyPressed( sf::Keyboard::D ) )
   
{
       
hero.move( 2, 0 );
       
cam.move( 2, 0 );
   
}
   
/*if (hero.getPosition().x == WM)
    {
        ST = G1;
    }*/
}
main.cpp
C/C++
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include "tilemap.hpp"
#include "playermove.hpp"
#include "player.hpp"

/*enum Stan
{
    Menu, Game, Game1, Eq
};*/

int main()
{
   
sf::RenderWindow window( sf::VideoMode( 1280, 720 ), "Game" );
   
window.setFramerateLimit( 60 );
   
   
const int level[ ] =
   
{
       
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       
0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0,
       
1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3,
       
0, 1, 0, 0, 2, 0, 3, 3, 3, 0, 1, 1, 1, 0, 0, 0,
       
0, 1, 1, 0, 3, 3, 3, 0, 0, 0, 1, 1, 1, 2, 0, 0,
       
0, 0, 1, 0, 3, 0, 2, 2, 0, 0, 1, 1, 1, 1, 2, 0,
       
2, 0, 1, 0, 3, 0, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1,
       
0, 0, 1, 0, 3, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1,
   
};
   
const int level1[ ] =
   
{
       
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       
1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 0,
       
1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       
3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1,
       
1, 1, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 2, 2, 3,
       
0, 0, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 3,
       
0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
       
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   
};
   
TileMap map1;
   
if( !map1.load(( "tileset.png" ), sf::Vector2u( 100, 100 ), level, 16, 8 ) )
   
{
       
return - 1;
   
}
   
TileMap map2;
   
if( !map2.load(( "tileset.png" ), sf::Vector2u( 100, 100 ), level1, 16, 8 ) )
   
{
       
return - 1;
   
}
   
   
Gracz spPlayer;
   
spPlayer.setOrigin( 25.f, 25.f );
   
spPlayer.setPosition( 640, 360 );
   
sf::View kamera;
   
kamera.setCenter( spPlayer.getPosition() );
   
kamera.setSize( 1280.f, 720.f ); //(640.f, 360.f);
    //kamera.setRotation (90.f);
   
   
Stan start;
   
int widthmap = 1280, heightmap = 720;
   
sf::Event e;
   
while( window.isOpen() )
   
{
       
while( window.pollEvent( e ) )
       
{
           
if( e.type == sf::Event::Closed )
           
{
               
window.close();
           
}
        }
       
//WYDARZENIA
       
switch( start )
       
{
       
case Menu:
           
{
               
if( sf::Keyboard::isKeyPressed( sf::Keyboard::Enter ) )
               
{
                   
start = Game;
               
}
            }
           
break;
       
case Game:
           
{
               
playerMove( spPlayer, kamera, heightmap, widthmap, Game, Game1, start );
           
} //game wydarzenia
           
break;
       
case Game1:
           
           
break;
       
case Eq:
           
           
break;
       
} //switch wydarzenia
        //WYŒWIETLANIE
       
window.clear();
       
switch( start )
       
{
       
case Menu:
           
           
break;
       
case Game:
           
{
               
window.draw( map1 );
               
window.draw( spPlayer );
               
window.setView( kamera );
           
} //case Game wyswietlanie
           
break;
       
case Game1:
           
{
               
window.draw( map1 );
               
window.draw( spPlayer );
               
window.setView( kamera );
           
} //case Game1 wyswietlanie
           
break;
       
case Eq:
           
           
break;
       
} //switch wyswietalnie
       
window.display();
   
}
}
P-178501
pekfos
» 2021-04-25 16:55:38
sf::View kamery powinno być przekazane przez referencję.
P-178502
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona