Initial commit

This commit is contained in:
2026-01-09 13:20:01 +01:00
commit 7a91913b28
24 changed files with 435 additions and 0 deletions

62
sources/CardMaker.cpp Normal file
View File

@@ -0,0 +1,62 @@
#include <CardMaker.hpp>
/// Card
Card::Card(int value, std::shared_ptr<sf::Sprite> face,
std::shared_ptr<sf::Sprite> back)
: value_(value), face_(face), back_(back) {}
Card::~Card() {}
int Card::getValue() { return value_; }
std::shared_ptr<sf::Sprite> Card::getSprite() {
if (flipped_)
return face_;
return back_;
}
void Card::setPosition(sf::Vector2i vec) {
if (grabbed_)
face_->setPosition(vec.x - 15, vec.y - 25);
}
void Card::flip() {
if (!flipped_)
grabbed_ == true;
flipped_ = true;
}
/// CardMaker
CardMaker::CardMaker() {
std::string ext(".png");
std::string folder(ASSET_DIR);
for (int i = -2; i < 13; i++) {
auto tex = std::make_shared<sf::Texture>();
std::string name(std::to_string(i));
if (!tex->loadFromFile(folder + name + ext)) {
std::cerr << "Failed to load " << folder + name + ext << std::endl;
exit(1);
}
textures_[i] = tex;
}
auto tex = std::make_shared<sf::Texture>();
tex->loadFromFile(folder + "back.png");
textures_[CARD_BACK] = tex;
}
CardMaker::~CardMaker() {}
std::shared_ptr<Card> CardMaker::generate(int value) {
if (value < -2 || value > 12) {
std::cerr << "Trying to generate oob card nbr " << value << std::endl;
exit(1);
}
auto spr_face = std::make_shared<sf::Sprite>();
auto spr_back = std::make_shared<sf::Sprite>();
spr_face->setTexture(*textures_[value]);
spr_back->setTexture(*textures_[CARD_BACK]);
auto card = std::make_shared<Card>(value, spr_face, spr_back);
return card;
}

36
sources/main.cpp Normal file
View File

@@ -0,0 +1,36 @@
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <iostream>
#include <vector>
#include <CardMaker.hpp>
int main() {
sf::RenderWindow win(sf::VideoMode(800, 600), "Skyjo", sf::Style::Default);
CardMaker cm;
auto card = cm.generate(5);
card->flip();
win.create(sf::VideoMode(800, 600), "Skyjo");
while (win.isOpen()) {
sf::Event ev;
while (win.pollEvent(ev)) {
if (ev.type == sf::Event::Closed) {
win.close();
}
}
if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
card->flip();
// Clear frame buffer
win.clear(sf::Color::Black);
card->setPosition(sf::Mouse::getPosition(win));
// Draw sprite
win.draw(*card->getSprite());
// Draw frame buffer
win.display();
}
return 0;
}