Projekt SFML
Posiadam w projekcie 2 klasy. Klasę Gra oraz klasę Menu. W klasie Gra posiadam metodę, która będzie obsługiwać całą gre(wyświetlanie okna, rysowanie sprajtów, obsługa zdarzeń itp). W klasie Menu mam stworzoną metodę, która jako argument przyjmuje referencje do obiektu klasy RenderWindow, który jest moim oknem a następnie wypisuje poszczególne opcje mojego menu. Chcę aby metoda wypisująca moje menu(klasa Menu), została wywołana metodzie odpowiedzialnej za całą grę (klasa Gra). Czy jest w ogóle możliwe by metodę jednej klasy, której argumentem jest obiekt klasy dostępnej w bibliotece SFML, wywołać w innej metodzie? Zachęcam do wspólnej dyskusji.
#include <SFML/Graphics.hpp>
#include "gra.h"
#include <iostream>
#include "menu.h"
using namespace std;
using namespace sf;
Gra :: Gra()
{
stan_gry stan=men;
tlo_gry.loadFromFile("2.png");
tlo_gry_sprite.setTexture(tlo_gry);
tlo_gry_sprite.setPosition(-100,0);
}
void Gra::rysuj()
{
RenderWindow okno(VideoMode(800,600), "Audi <3");
Event zdarzenie;
while( okno.isOpen())
{
while( okno.pollEvent( zdarzenie ) )
{
if( zdarzenie.type == Event::Closed )
okno.close();
}
okno.clear();
okno.draw(tlo_gry_sprite);
// Tutaj w metodzie klasy Gra chce wywolac metode klasy Menu, ktora wypisuje menu
okno.display();
}
}
#include <SFML/Graphics.hpp>
#include <iostream>
using namespace std;
using namespace sf;
class Menu;
class Gra
{
Texture tlo_gry;
Sprite tlo_gry_sprite;
enum stan_gry{rozgrywka, zamknij, men};
public:
void rysuj();
Gra();
};
#include <SFML/Graphics.hpp>
#include "menu.h"
#include <iostream>
#include "gra.h"
#define ROZMIAR_MENU 3
using namespace std;
using namespace sf;
void Menu :: rysujmenu(RenderWindow& okno)
{
for(int i=0; i<=2; i++)
{
okno.draw(opcje[i]);
}
}
Menu :: Menu()
{
string wypelnienie[]={"Graj", "Statystyki", "Zakoncz"};
Font czcionka;
if(!czcionka.loadFromFile("Comfortaa Regular.ttf"))
{
//Blad
}
opcje[0].setPosition(610,80);
opcje[1].setPosition(610,130);
opcje[2].setPosition(610,180);
for(int i=0; i<ROZMIAR_MENU; i++)
{
opcje[i].setFont(czcionka);
opcje[i].setCharacterSize(42);
opcje[i].setColor(Color::Cyan);
opcje[i].setString(wypelnienie[i]);
}
}
#include <SFML/Graphics.hpp>
#include <iostream>
#define ROZMIAR_MENU 3
using namespace std;
using namespace sf;
class Gra;
class Menu
{
string wypelnienie[];
Text opcje[ROZMIAR_MENU];
public:
void rysujmenu(RenderWindow& okno);
Menu();
};