Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #define WIN32_LEAN_AND_MEAN
- #include <windows.h>
- #include <ctime>
- #include <SFML/Graphics.hpp>
- #include <SFML/Audio.hpp>
- #include <SFML/Audio/SoundBuffer.hpp>
- #include <string>
- #include "Button.hpp"
- #include "Core.hpp"
- #include <fstream>
- using namespace std;
- int showMessage(int wigth, int high, string title, string text)
- {
- bool running = true;
- sf::RenderWindow messageBox(sf::VideoMode(wigth, high, 32), title, sf::Style::Close);
- sf::Text messageText;
- sf::Font font;
- font.loadFromFile("E:/C labs/MyBlackJack/font/SuperMario256.ttf");
- messageText.setFont(font);
- messageText.setFillColor(sf::Color::White);
- messageText.setPosition(sf::Vector2f(0, 0));
- messageText.setCharacterSize(24);
- sf::Texture bgTex;
- sf::Sprite bgSprite;
- bgTex.loadFromFile("E:/C labs/MyBlackJack/resource/bg.png");
- bgSprite.setTexture(bgTex);
- sf::Image icon;
- if (!icon.loadFromFile("E:/C labs/MyBlackJack/resource/icon.png"))
- {
- return 1;
- }
- messageBox.setIcon(32, 32, icon.getPixelsPtr());
- messageText.setString(text);
- sf::Event event{};
- while(running)
- {
- while(messageBox.pollEvent(event))
- { if(event.type == sf::Event::KeyPressed) {
- if (event.key.code == sf::Keyboard::Escape) {
- messageBox.close();
- return 0;
- }
- }
- if(event.type == sf::Event::Closed){
- messageBox.close();
- return 0;
- } }
- messageBox.clear(sf::Color::White);
- messageBox.draw(bgSprite);
- messageBox.draw(messageText);
- messageBox.display();
- }
- }
- string const FIRST_PAGE_STR = "THE GOAL OF THE GAME:\n\tCollect a combination that gives more points than the dealer, but does not exceed 21\nOPTIONS:\n\t1.Get the card(be careful, so you can exceed 21 and automatically lose)\n\t2.Stop(Stay with the number of points you have and pass the move to the dealer)";
- string const FIRST_PAGE_TITLE = "VALUE OF EACH CARD";
- string const FIRST_PAGE_IMAGE = "E:/C labs/MyBlackJack/resource/points.jpg";
- string const SEACOND_PAGE_STR = "CARDS PART:\n\tYou can see your cards, number of points and yellow turn identifier\nBUTTONS:\n\t1.Get the card(the yellow one on left)\n\t2.Stop(the one in the middle)";
- string const SEACOND_PAGE_TITLE = "USERS GUIDE";
- string const SEACOND_PAGE_IMAGE = "E:/C labs/MyBlackJack/resource/guide2.jpg";
- string const THIRD_PAGE_STR = "BETTING:\n\tYou can bet your chips, if you are confident about your hand\nCAREFUL:\n\tIf you lose all your chips you lose";
- string const THIRD_PAGE_TITLE = "BETTING PART";
- string const THIRD_PAGE_IMAGE = "E:/C labs/MyBlackJack/resource/guide3.jpg";
- string const FOURTH_PAGE_STR = "SAVES:\n\tYou can save your game and continue it later\nATTENTION:\n\tThere are can be only 3 saved games";
- string const FOURTH_PAGE_TITLE = "SAVES PART";
- string const FOURTH_PAGE_IMAGE = "E:/C labs/MyBlackJack/resource/guide4.jpg";
- int main() {
- setlocale(LC_ALL,"Rus");
- srand(time(NULL));
- sf::RenderWindow menu(sf::VideoMode(500, 600), "Blackjack - By Egor Vakar 151002", sf::Style::Close);
- menu.setFramerateLimit(60);
- sf::Event event;
- // # System Variables
- sf::Clock clock;
- float dt;
- sf::Image icon;
- if (!icon.loadFromFile("E:/C labs/MyBlackJack/resource/icon.png"))
- {
- return 1;
- }
- menu.setIcon(32, 32, icon.getPixelsPtr());
- sf::Texture bgTex;
- sf::Sprite bgSprite;
- bgTex.loadFromFile("E:/C labs/MyBlackJack/resource/bg.png");
- bgSprite.setTexture(bgTex);
- // # Load Buttons Sprites
- sf::Texture playBtn;
- playBtn.loadFromFile("E:/C labs/MyBlackJack/resource/playBtn.png");
- sf::Texture developerBtn;
- developerBtn.loadFromFile("E:/C labs/MyBlackJack/resource/dev.png");
- sf::Texture guideBtn;
- guideBtn.loadFromFile("E:/C labs/MyBlackJack/resource/guide.png");
- // # Load Buttons Textures
- sf::Texture btn_ask_tex;
- btn_ask_tex.loadFromFile("E:/C labs/MyBlackJack/resource/btn_1.png");
- sf::Texture btn_stop_tex;
- btn_stop_tex.loadFromFile("E:/C labs/MyBlackJack/resource/btn_2.png");
- sf::Texture btn_quit_tex;
- btn_quit_tex.loadFromFile("E:/C labs/MyBlackJack/resource/btn_3.png");
- sf::Texture btn_bet_tex;
- btn_bet_tex.loadFromFile("E:/C labs/MyBlackJack/resource/btn_4.png");
- sf::Texture saveBtn;
- saveBtn.loadFromFile("E:/C labs/MyBlackJack/resource/save.png");
- // # Table sprite
- sf::Texture tableTex;
- sf::Sprite tableSprite;
- tableTex.loadFromFile("E:/C labs/MyBlackJack/resource/table.jpg");
- tableSprite.setTexture(tableTex);
- // # Load Cards Sprite
- sf::Texture CardsSprite;
- CardsSprite.loadFromFile("E:/C labs/MyBlackJack/resource/cards.png");
- // # Instances
- TableHandle* table = new TableHandle(CardsSprite, dt);
- // # Buttons instances
- Button* btn_hit = new Button(table);
- btn_hit->setLocation(sf::Vector2f(340, 600));
- btn_hit->setImage(btn_ask_tex);
- btn_hit->setEvent(TableHandle::Actions::Hit);
- Button* btn_stop = new Button(table);
- btn_stop->setLocation(sf::Vector2f(460, 600));
- btn_stop->setImage(btn_stop_tex);
- btn_stop->setEvent(TableHandle::Actions::AskStop);
- Button* btn_quit = new Button(table);
- btn_quit->setLocation(sf::Vector2f(580, 600));
- btn_quit->setImage(btn_quit_tex);
- btn_quit->setEvent(TableHandle::Actions::AskQuit);
- Button* btn_bet = new Button(table);
- btn_bet->setLocation(sf::Vector2f(250, 480));
- btn_bet->setImage(btn_bet_tex);
- btn_bet->setEvent(TableHandle::Actions::MakeBet);
- Button* btn_play = new Button(table);
- btn_play->setLocation(sf::Vector2f(70, 70));
- btn_play->setImage(playBtn);
- btn_play->setEvent(TableHandle::Actions::Play);
- Button* btn_dev = new Button(table);
- btn_dev->setLocation(sf::Vector2f(100, 220));
- btn_dev->setImage(developerBtn);
- btn_dev->setEvent(TableHandle::Actions::DevInfo);
- Button* btn_guide = new Button(table);
- btn_guide->setLocation(sf::Vector2f(230, 225));
- btn_guide->setImage(guideBtn);
- btn_guide->setEvent(TableHandle::Actions::ShowGuide);
- Button* btn_guide1 = new Button(table);
- btn_guide1->setLocation(sf::Vector2f(50, 120));
- btn_guide1->setImage(guideBtn);
- btn_guide1->setEvent(TableHandle::Actions::ShowGuide);
- Button* btn_save = new Button(table);
- btn_save->setLocation(sf::Vector2f(50, 230));
- btn_save->setImage(saveBtn);
- btn_save->setEvent(TableHandle::Actions::SaveGame);
- Button* btn_save1 = new Button(table);
- btn_save1->setLocation(sf::Vector2f(340, 230));
- btn_save1->setImage(saveBtn);
- btn_save1->setEvent(TableHandle::Actions::UpdGame);
- while(menu.isOpen()){
- dt = clock.restart().asSeconds();
- while(menu.pollEvent(event)){
- if(event.type == sf::Event::KeyPressed) {
- if (event.key.code == sf::Keyboard::Escape) {
- menu.close();
- return 0;
- }
- }
- if(event.type == sf::Event::Closed){
- menu.close();
- return 0;
- }
- }
- // # Update Methods
- btn_play->EventHandle(menu, dt);
- btn_dev->EventHandle(menu, dt);
- btn_guide->EventHandle(menu, dt);
- btn_save1->EventHandle(menu, dt);
- if (table->newGame){
- menu.close();
- }
- if (table->showDevInfo){
- table->showDevInfo = false;
- showMessage(570, 80, "Developer info", "Program was created by Egor Vakar.\nBSUIR group 151002\nMinsk 2022");
- }
- if (table->showGuide){
- table->showGuide = false;
- bool running = true;
- sf::RenderWindow messageBox(sf::VideoMode(860, 550, 32), "Guide", sf::Style::Close);
- sf::Font font;
- font.loadFromFile("E:/C labs/MyBlackJack/font/SuperMario256.ttf");
- sf::Text guideText;
- guideText.setFont(font);
- guideText.setFillColor(sf::Color::White);
- guideText.setPosition(sf::Vector2f(0, 0));
- guideText.setCharacterSize(14);
- sf::Text pageNum;
- pageNum.setFont(font);
- pageNum.setFillColor(sf::Color::White);
- pageNum.setPosition(sf::Vector2f(20, 500));
- pageNum.setCharacterSize(30);
- sf::Text guideTitle;
- guideTitle.setFont(font);
- guideTitle.setFillColor(sf::Color::White);
- guideTitle.setPosition(sf::Vector2f(330, 100));
- guideTitle.setCharacterSize(20);
- sf::Texture guidePic;
- sf::Sprite guideSprite;
- guideSprite.setPosition(sf::Vector2f(10, 130));
- sf::Texture leftBtn;
- leftBtn.loadFromFile("E:/C labs/MyBlackJack/resource/left.png");
- sf::Texture rightBtn;
- rightBtn.loadFromFile("E:/C labs/MyBlackJack/resource/right.png");
- Button* btn_left = new Button(table);
- btn_left->setLocation(sf::Vector2f(350, 480));
- btn_left->setImage(leftBtn);
- btn_left->setEvent(TableHandle::Actions::SwipeLeft);
- Button* btn_right = new Button(table);
- btn_right->setLocation(sf::Vector2f(450, 480));
- btn_right->setImage(rightBtn);
- btn_right->setEvent(TableHandle::Actions::SwipeRight);
- float dt;
- btn_left->EventHandle(messageBox, dt);
- btn_right->EventHandle(messageBox, dt);
- sf::Image icon;
- if (!icon.loadFromFile("E:/C labs/MyBlackJack/resource/icon.png"))
- {
- return 1;
- }
- messageBox.setIcon(32, 32, icon.getPixelsPtr());
- sf::Texture bgTex;
- sf::Sprite bgSprite;
- bgTex.loadFromFile("E:/C labs/MyBlackJack/resource/bg.png");
- bgSprite.setTexture(bgTex);
- guideText.setString(FIRST_PAGE_STR);
- guideTitle.setString(FIRST_PAGE_TITLE);
- guidePic.loadFromFile(FIRST_PAGE_IMAGE);
- sf::Event event{};
- while(running)
- {
- while(messageBox.pollEvent(event))
- { if(event.type == sf::Event::KeyPressed) {
- if (event.key.code == sf::Keyboard::Escape) {
- messageBox.close();
- goto a1;
- }
- }
- if(event.type == sf::Event::Closed){
- messageBox.close();
- goto a1;
- }
- if(event.type == sf::Event::KeyPressed) {
- if (event.key.code == sf::Keyboard::Right) {
- if (table->guidePage < 4) {
- table->guidePage++;
- }
- }
- }
- if(event.type == sf::Event::KeyPressed) {
- if (event.key.code == sf::Keyboard::Left) {
- if (table->guidePage > 1) {
- table->guidePage--;
- }
- }
- }
- }
- btn_left->EventHandle(messageBox, dt);
- btn_right->EventHandle(messageBox, dt);
- switch (table->guidePage) {
- case 1:
- guideText.setString(FIRST_PAGE_STR);
- guideTitle.setString(FIRST_PAGE_TITLE);
- guidePic.loadFromFile(FIRST_PAGE_IMAGE);
- guideSprite.setTexture(guidePic);
- btn_left->Draw(messageBox);
- btn_right->Draw(messageBox);
- break;
- case 2:
- guideText.setString(SEACOND_PAGE_STR);
- guideTitle.setString(SEACOND_PAGE_TITLE);
- guidePic.loadFromFile(SEACOND_PAGE_IMAGE);
- guideSprite.setTexture(guidePic);
- btn_left->Draw(messageBox);
- btn_right->Draw(messageBox);
- break;
- case 3:
- guideText.setString(THIRD_PAGE_STR);
- guideTitle.setString(THIRD_PAGE_TITLE);
- guidePic.loadFromFile(THIRD_PAGE_IMAGE);
- guideSprite.setTexture(guidePic);
- btn_left->Draw(messageBox);
- btn_right->Draw(messageBox);
- break;
- case 4:
- guideText.setString(FOURTH_PAGE_STR);
- guideTitle.setString(FOURTH_PAGE_TITLE);
- guidePic.loadFromFile(FOURTH_PAGE_IMAGE);
- guideSprite.setTexture(guidePic);
- btn_left->Draw(messageBox);
- btn_right->Draw(messageBox);
- break;
- }
- pageNum.setString(std::to_string(table->guidePage));
- messageBox.clear(sf::Color::White);
- messageBox.draw(bgSprite);
- messageBox.draw(guideText);
- messageBox.draw(guideTitle);
- messageBox.draw(guideSprite);
- messageBox.draw(pageNum);
- btn_left->Draw(messageBox);
- btn_right->Draw(messageBox);
- messageBox.display();
- }
- }
- a1:
- menu.clear();
- // # Draw Object
- menu.draw(bgSprite);
- btn_play->Draw(menu);
- btn_dev->Draw(menu);
- btn_guide->Draw(menu);
- btn_save1->Draw(menu);
- menu.display();
- }
- sf::RenderWindow app(sf::VideoMode(1024, 768), "Blackjack - By Egor Vakar 151002", sf::Style::Close);
- app.setFramerateLimit(60);
- app.setIcon(32, 32, icon.getPixelsPtr());
- while(app.isOpen()){
- dt = clock.restart().asSeconds();
- while(app.pollEvent(event)){
- if(event.type == sf::Event::KeyPressed) {
- if (event.key.code == sf::Keyboard::Escape) {
- app.close();
- }
- if (event.key.code == sf::Keyboard::Down) {
- if (table->bet > 0) {
- table->bet -= 20;
- table->chips += 20;
- }
- }
- if (event.key.code == sf::Keyboard::Up) {
- if (table->chips > 0) {
- table->bet += 20;
- table->chips -= 20;
- }
- }
- }
- if(event.type == sf::Event::Closed){
- app.close();
- }
- }
- // # Update Methods
- btn_hit->EventHandle(app, dt);
- btn_stop->EventHandle(app, dt);
- btn_quit->EventHandle(app, dt);
- btn_bet->EventHandle(app, dt);
- btn_guide1->EventHandle(app,dt);
- btn_save->EventHandle(app,dt);
- table->GameRun(dt);
- if (table->showGuide){
- table->showGuide = false;
- bool running = true;
- sf::RenderWindow messageBox(sf::VideoMode(860, 550, 32), "Guide", sf::Style::Close);
- sf::Font font;
- font.loadFromFile("E:/C labs/MyBlackJack/font/SuperMario256.ttf");
- sf::Text guideText;
- guideText.setFont(font);
- guideText.setFillColor(sf::Color::White);
- guideText.setPosition(sf::Vector2f(0, 0));
- guideText.setCharacterSize(14);
- sf::Text pageNum;
- pageNum.setFont(font);
- pageNum.setFillColor(sf::Color::White);
- pageNum.setPosition(sf::Vector2f(20, 500));
- pageNum.setCharacterSize(30);
- sf::Text guideTitle;
- guideTitle.setFont(font);
- guideTitle.setFillColor(sf::Color::White);
- guideTitle.setPosition(sf::Vector2f(330, 100));
- guideTitle.setCharacterSize(20);
- sf::Texture guidePic;
- sf::Sprite guideSprite;
- guideSprite.setPosition(sf::Vector2f(10, 130));
- sf::Texture leftBtn;
- leftBtn.loadFromFile("E:/C labs/MyBlackJack/resource/left.png");
- sf::Texture rightBtn;
- rightBtn.loadFromFile("E:/C labs/MyBlackJack/resource/right.png");
- Button* btn_left = new Button(table);
- btn_left->setLocation(sf::Vector2f(350, 480));
- btn_left->setImage(leftBtn);
- btn_left->setEvent(TableHandle::Actions::SwipeLeft);
- Button* btn_right = new Button(table);
- btn_right->setLocation(sf::Vector2f(450, 480));
- btn_right->setImage(rightBtn);
- btn_right->setEvent(TableHandle::Actions::SwipeRight);
- float dt;
- btn_left->EventHandle(messageBox, dt);
- btn_right->EventHandle(messageBox, dt);
- sf::Image icon;
- if (!icon.loadFromFile("E:/C labs/MyBlackJack/resource/icon.png"))
- {
- return 1;
- }
- messageBox.setIcon(32, 32, icon.getPixelsPtr());
- sf::Texture bgTex;
- sf::Sprite bgSprite;
- bgTex.loadFromFile("E:/C labs/MyBlackJack/resource/bg.png");
- bgSprite.setTexture(bgTex);
- guideText.setString(FIRST_PAGE_STR);
- guideTitle.setString(FIRST_PAGE_TITLE);
- guidePic.loadFromFile(FIRST_PAGE_IMAGE);
- sf::Event event{};
- while(running)
- {
- while(messageBox.pollEvent(event))
- { if(event.type == sf::Event::KeyPressed) {
- if (event.key.code == sf::Keyboard::Escape) {
- messageBox.close();
- goto a1;
- }
- }
- if(event.type == sf::Event::Closed){
- messageBox.close();
- goto a1;
- }
- if(event.type == sf::Event::KeyPressed) {
- if (event.key.code == sf::Keyboard::Right) {
- if (table->guidePage < 4) {
- table->guidePage++;
- }
- }
- }
- if(event.type == sf::Event::KeyPressed) {
- if (event.key.code == sf::Keyboard::Left) {
- if (table->guidePage > 1) {
- table->guidePage--;
- }
- }
- }
- }
- btn_left->EventHandle(messageBox, dt);
- btn_right->EventHandle(messageBox, dt);
- switch (table->guidePage) {
- case 1:
- guideText.setString(FIRST_PAGE_STR);
- guideTitle.setString(FIRST_PAGE_TITLE);
- guidePic.loadFromFile(FIRST_PAGE_IMAGE);
- guideSprite.setTexture(guidePic);
- btn_left->Draw(messageBox);
- btn_right->Draw(messageBox);
- break;
- case 2:
- guideText.setString(SEACOND_PAGE_STR);
- guideTitle.setString(SEACOND_PAGE_TITLE);
- guidePic.loadFromFile(SEACOND_PAGE_IMAGE);
- guideSprite.setTexture(guidePic);
- btn_left->Draw(messageBox);
- btn_right->Draw(messageBox);
- break;
- case 3:
- guideText.setString(THIRD_PAGE_STR);
- guideTitle.setString(THIRD_PAGE_TITLE);
- guidePic.loadFromFile(THIRD_PAGE_IMAGE);
- guideSprite.setTexture(guidePic);
- btn_left->Draw(messageBox);
- btn_right->Draw(messageBox);
- break;
- case 4:
- guideText.setString(FOURTH_PAGE_STR);
- guideTitle.setString(FOURTH_PAGE_TITLE);
- guidePic.loadFromFile(FOURTH_PAGE_IMAGE);
- guideSprite.setTexture(guidePic);
- btn_left->Draw(messageBox);
- btn_right->Draw(messageBox);
- break;
- }
- pageNum.setString(std::to_string(table->guidePage));
- messageBox.clear(sf::Color::White);
- messageBox.draw(bgSprite);
- messageBox.draw(guideText);
- messageBox.draw(guideTitle);
- messageBox.draw(guideSprite);
- messageBox.draw(pageNum);
- btn_left->Draw(messageBox);
- btn_right->Draw(messageBox);
- messageBox.display();
- }
- }
- if( !table->gamerun )
- app.close();
- if (table->saveGame){
- table->saveGame = false;
- fstream out;
- out.open("E:/C labs/MyBlackJack/save.txt", fstream::out);
- out << table->chips << endl;
- out << table->wins << endl;
- out << table->lose << endl;
- out << table->tie << endl;
- out.close();
- }
- if (table->updGame) {
- table->updGame = false;
- fstream in;
- in.open("E:/C labs/MyBlackJack/save.txt", fstream::in);
- in >> table->chips;
- in >> table->wins;
- in >> table->lose;
- in >> table->tie;
- in.close();
- }
- app.clear();
- // # Draw Object
- app.draw(tableSprite);
- btn_hit->Draw(app);
- btn_stop->Draw(app);
- btn_quit->Draw(app);
- btn_bet->Draw(app);
- btn_save->Draw(app);
- btn_guide1->Draw(app);
- table->DrawTable(app, dt);
- app.display();
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment