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

[SFML] matching function for call to sf::RenderWindow::Draw

Ostatnio zmodyfikowano 2012-10-14 20:53
Autor Wiadomość
Jurek
Temat założony przez niniejszego użytkownika
[SFML] matching function for call to sf::RenderWindow::Draw
» 2012-10-13 18:27:56
Mam dwa pliki
jeden glowny

C/C++
#include<sfml/system.hpp>
#include<sfml/window.hpp>
#include<sfml/graphics.hpp>
#include "CreateHero.cpp"
#include <iostream>
using namespace std;
int main()
{
    sf::Vector2f Point, Point1, PositionHero( 0, 0 );
    sf::Vector2f PHero;
    sf::Vector2f Zaznaczanie, Position;
    int Myszx, Myszy;
    sf::Event Koniec, Ruch;
    sf::RenderWindow Okno( sf::VideoMode( 800, 600, 32 ), "", sf::Style::Fullscreen );
   
    Hero( Okno );
    Okno.SetFramerateLimit( 60 );
    while( Okno.IsOpened() )
    {
        while( Okno.GetEvent( Koniec ) )
        {
            if( Koniec.Type == sf::Event::KeyPressed && Koniec.Key.Code == sf::Key::F1 )
                 Okno.Close();
           
        }
       
        Okno.Clear();
        Rysuj( Okno )
        Okno.Display();
    }
    return 0;
}
w drugim umiescilem funkcje do tworzenia bohatera
C/C++
#include<sfml/system.hpp>
#include<sfml/window.hpp>
#include<sfml/graphics.hpp>

void CreateHero( sf::Image & Hero1, sf::Sprite & Hero, sf::RenderWindow & Okno, sf::Vector2f & Position )
{
    Hero.SetImage( Hero1 );
    Hero.SetPosition( Hero1.GetWidth() / 2, Hero1.GetHeight() / 2 );
    Hero.SetCenter( Hero1.GetWidth() / 2, Hero1.GetHeight() / 2 );
    Hero.SetPosition( Position );
}

void Hero( sf::RenderWindow & Okno )
{
    sf::Image Hero1;
    Kajko1.LoadFromFile( "Hero1.png" );
    sf::Sprite Hero;
    sf::Vector2f PHero( 20, 20 );
    CreateHero( Hero1, Hero, Okno, PHero );
}

void Rysuj( sf::RenderWindow & Okno )
{
    Okno.Draw( Hero );
}
wyskakuje mi:
no matching function for call to sf::RenderWindow::Draw
Jak to naprawic?
Chce wykorzystac te same funkcje do tworzenia kilku bohaterow chce je trzymac w oddzielnym pliku
P-66769
DejaVu
» 2012-10-13 18:42:14
1. Czytaj log kompilacji ze zrozumieniem...
2. Przemyśl sens linijki:
C/C++
Okno.Draw( Hero );
P-66771
Jurek
Temat założony przez niniejszego użytkownika
» 2012-10-13 19:32:37
Jakas podpowiedz?
P-66776
ridic14
» 2012-10-13 20:34:27
nie możesz narysować klasy na ekranie tylko obraz lub prymityw z tej klasy(coś co dziedziczy po klasie drawable)
P-66778
Jurek
Temat założony przez niniejszego użytkownika
» 2012-10-13 21:20:12
jak to naprawic, co zrobic abym mogl narysowac sprite?

jak robie w ten sposob wszystko dziala
pierwszy plik
C/C++
#include<sfml/system.hpp>
#include<sfml/window.hpp>
#include<sfml/graphics.hpp>
#include "CreateHero.cpp"
#include <iostream>
using namespace std;
int main()
{
   
   
    sf::Image Hero1;
    Hero1.LoadFromFile( "Hero1.png" );
    sf::Sprite Hero;
    sf::Event Koniec, Ruch;
    sf::RenderWindow Okno( sf::VideoMode( 800, 600, 32 ), "", sf::Style::Fullscreen );
    sf::Vector2f PHero( 20, 20 );
    CreateHero( Hero1, Hero, Okno, PHero );
   
    Okno.SetFramerateLimit( 60 );
    while( Okno.IsOpened() )
    {
       
        while( Okno.GetEvent( Koniec ) )
        {
            if( Koniec.Type == sf::Event::KeyPressed && Koniec.Key.Code == sf::Key::F1 )
                 Okno.Close();
           
        }
       
        Okno.Clear();
        Okno.Draw( Hero );
        Okno.Display();
    }
    return 0;
}

drugi plik
C/C++
#include<sfml/system.hpp>
#include<sfml/window.hpp>
#include<sfml/graphics.hpp>



void CreateHero( sf::Image & Hero1, sf::Sprite & Hero, sf::RenderWindow & Okno, sf::Vector2f & Position )
{
    Hero.SetImage( Hero1 );
    Hero.SetPosition( Hero1.GetWidth() / 2, Hero1.GetHeight() / 2 );
    Hero.SetCenter( Hero1.GetWidth() / 2, Hero1.GetHeight() / 2 );
    Hero.SetPosition( Position );
}
Chodzi mi o to ze chcialbym wszystkich bohaterow wyrzucic z pliku main, w main chcialbym ich wywolac dodajac inne pliki, oraz uzyc  funkcji zeby kod nie byl dlugi
P-66781
ridic14
» 2012-10-14 00:22:04
Teraz masz: Okno.Draw(Hero); a Hero to sf::Sprite Hero.

wcześniej Okno.Draw(Hero); Hero to void Hero czyli funkcja a funkcji raczej nie narysujesz...
P-66794
Jurek
Temat założony przez niniejszego użytkownika
» 2012-10-14 17:36:10
A jak stworzyc plik aby umiescic w nim tylko dane typu
C/C++
sf::Image Hero1, Hero2,....id
Hero1.LoadFromFile( "Hero1" );
sf::Sprite Hero1, Hero2...itd
Hero1.SetImage( Heo1 );
i abym mogl dolaczyc go do pliku main i wswitlic wszystkie sprite w main?
P-66831
ridic14
» 2012-10-14 20:53:59
Ten kod wyżej jest dobrze tylko z funkcji void nie wyciągniesz co ma być narysowane... może jakaś klasa ci pomoże...


C/C++
class Hero
{
public:
    sf::Sprite Hero;
};

// w funkcji main
Hero hero;
App.draw( hero.Hero );

PAMIĘTAJ Rysujesz sprite'a a nie klasę!!!
P-66839
« 1 »
  Strona 1 z 1