Welcome, Guest. Please login or register. Did you miss your activation email?

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - jbar98

Pages: [1]
1
Hi, so I created a class called "Card" which holds a struct containing a sf::Sprite and a sf::Texture and also two variables which contain enum values.
The way I loaded the texture to the sf::Sprite is as follows:
First I made two enums to give each Card object a Typ and a Rank:
enum CardTyp
        {
                ZÖLD,
                TÖCK,
                MOCK,
                PIROS,
                MAX_TYPES
        };
        enum CardRank
        {
                DAME,
                KÖNIG,
                BUBE,
                SIEBEN,
                ACHT,
                NEUN,
                ZEHN,
                ASS,
                MAX_RANKS
        };


Then I made a switch on the m_typ variable to pick the correct texture:
switch (m_typ)
        {
        case ZÖLD:
        {
                switch (m_rank)
                {
                case CardRank::DAME:    m_texture.loadFromFile("kartenspiel/zöld/zöldBauer.jpg"); break;
                case CardRank::KÖNIG:  m_texture.loadFromFile("kartenspiel/zöld/zöldKönig.jpg"); break;
                case CardRank::BUBE:    m_texture.loadFromFile("kartenspiel/zöld/zöld2.jpg"); break;
                case CardRank::SIEBEN:  m_texture.loadFromFile("kartenspiel/zöld/zöld7.jpg"); break;
                case CardRank::ACHT:    m_texture.loadFromFile("kartenspiel/zöld/zöld8.jpg"); break;
                case CardRank::NEUN:    m_texture.loadFromFile("kartenspiel/zöld/zöld9.jpg"); break;
                case CardRank::ZEHN:    m_texture.loadFromFile("kartenspiel/zöld/zöld10.jpg"); break;
                case CardRank::ASS:             m_texture.loadFromFile("kartenspiel/zöld/zöldSpringer.jpg"); break;
                default:                                std::cout << "error in setTexture case zöld switch"; break;
                }
                break;
        }
}
(There are cases for the three other Card types but they basically are the same.)
And then I used this texture as a parameter for the setTexture Function:
m_graphicalCard.setTexture(m_texture); //where as m_graphicalCard is the sf::Sprite variable

That code seems to work because when I create a single Card object as follows:
Card card{ Card::TÖCK, Card::SIEBEN };
and then calling a member function from the card class, which returns the sprite variable and use it as a parameter for the
window.draw(card.getGraphicalCard());
function, im getting expected results.
But in my next class, the deck class which contains a std::vector out of Card objects, when calling the same memberfunction:
window.draw(deck.getLastCard().getGraphicalCard()); // getLastCard() is basically my own function for std::vector::back()
, the texture doesnt seem to get passed over properly, resulting in a blank rectangle. One of my first thoughts was that something went wrong when initializing the vector so that the elements didn't get the rights parameters for the card class constructor.
Here is the code of the class construtor:
Card::Card(const CardTyp &typ, const CardRank &rank)
        :m_typ{typ}, m_rank{rank}
{
        setTexture(); // my own function which initializes the object's typ&rank with the code above and initializes m_texture accordingly
        m_graphicalCard.setTexture(m_texture); //
}

Here the code of how I initialized the std::vector variable in my deck class:
for (int typ{ 0 }; typ < Card::MAX_TYPES; ++typ)
                for (int rank{ 0 }; rank < Card::MAX_RANKS; ++rank)
                {
                        m_deck.push_back(Card(static_cast<Card::CardTyp>(typ),static_cast<Card::CardRank>(rank)));
                        std::cout << temp << m_deck[temp++] << "\n";
                }
This code also seems to give the elements the correct types and ranks which i could tell by printing out all the elements. Now I really don't know what could be causing the error and i hope some of you guys can help me somehow :D. I hope that you can understand my code, im still really new to all of this and also im not writing in english that often so if you didn't understand something please ask and i will try to answer as fast as possible.

Pages: [1]
anything