Advertisement
Necto

15 tiles any name fixed version

Nov 23rd, 2022 (edited)
605
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.09 KB | None | 0 0
  1. #include <SFML/Graphics.hpp>
  2. #include <vector>
  3. #include <cstdlib>
  4. #include <ctime>
  5. #include <windows.h>
  6. int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPreInst, LPSTR lpCmdLine, int nCmdShow)
  7. {
  8.     std::srand(std::time(nullptr));
  9.     sf::RenderWindow gameWindow;
  10.     sf::RenderWindow picWindow;
  11.     gameWindow.create(sf::VideoMode(600, 600), "");
  12.     picWindow.create(sf::VideoMode(600, 600), "");
  13.     gameWindow.setFramerateLimit(60);
  14.     sf::Event event;
  15.  
  16.     sf::Image img;
  17.     img.loadFromFile(lpCmdLine);
  18.     sf::Texture fullimgtext;
  19.     fullimgtext.loadFromImage(img);
  20.     if (img.getSize().x != img.getSize().y) {
  21.         sf::Text text;
  22.         sf::Font font;
  23.         font.loadFromFile("calibri.ttf");
  24.         text.setFont(font);
  25.         text.setString("programm accepts square pictures only");
  26.         while (gameWindow.isOpen() || picWindow.isOpen()) {
  27.             while (gameWindow.pollEvent(event) || picWindow.pollEvent(event)) {
  28.                 if (event.type == sf::Event::Closed) {
  29.                     gameWindow.close();
  30.                     picWindow.close();
  31.                 }
  32.             }
  33.             gameWindow.clear();
  34.             picWindow.clear();
  35.             picWindow.draw(text);
  36.             gameWindow.display();
  37.             picWindow.display();
  38.         }
  39.     }
  40.  
  41.    
  42.     sf::Sprite fullsprite;
  43.     fullsprite.setTexture(fullimgtext);
  44.     int factor = img.getSize().x / 4;
  45.     fullsprite.setScale((600.f / 4) / factor, (600.f / 4) / factor);
  46.  
  47.     std::vector <sf::Sprite> sprite_tiles(16);
  48.     std::vector <sf::Texture> text_tiles(16);
  49.  
  50.     sf::Image small_img;
  51.  
  52.     small_img.create(factor, factor, sf::Color::Green);
  53.  
  54.     for (int m = 0; m < 4; m++) {
  55.         for (int n = 0; n < 4; n++) {
  56.             for (int i = 0; i < factor; ++i) {
  57.                 for (int j = 0; j < factor; ++j) {
  58.                     small_img.setPixel(i, j, img.getPixel(i + n * factor, j + m * factor));
  59.                 }
  60.             }
  61.             text_tiles[n * 4 + m].loadFromImage(small_img);
  62.             sprite_tiles[n * 4 + m].setTexture(text_tiles[n * 4 + m]);
  63.             sprite_tiles[n * 4 + m].setScale((600.f / 4) / factor, (600.f / 4) / factor);
  64.             sf::Vector2f pos;
  65.             pos.x = n * 150.f;
  66.             pos.y = m * 150.f;
  67.             sprite_tiles[n * 4 + m].setPosition(pos);
  68.             sprite_tiles.push_back(sprite_tiles[n * 4 + m]);
  69.         }
  70.     }
  71.  
  72.     sf::Image img_void;
  73.     img_void.create(600, 600, sf::Color::Green);
  74.     sf::Texture tex_void;
  75.     tex_void.loadFromImage(img_void);
  76.     int void_index = 15;
  77.     text_tiles[15].swap(tex_void);
  78.  
  79.     sf::Vector2i winpos;
  80.     winpos.x = 355.f;
  81.     winpos.y = 240.f;
  82.     gameWindow.setPosition(winpos);
  83.     winpos.x = 955.f;
  84.     picWindow.setPosition(winpos);
  85.  
  86.     sf::Text text;
  87.     sf::Font font;
  88.     font.loadFromFile("calibri.ttf");
  89.     text.setFont(font);
  90.     text.setString("press f2 to mix tiles");
  91.  
  92.     while (gameWindow.isOpen() || picWindow.isOpen()) {
  93.         while (gameWindow.pollEvent(event) || picWindow.pollEvent(event)) {
  94.             if (event.type == sf::Event::Closed) {
  95.                 gameWindow.close();
  96.                 picWindow.close();
  97.             }
  98.             if (event.key.code == sf::Keyboard::F2) {
  99.                 for (int i = 0; i < 50; ++i) {
  100.                     int a = std::rand() % 15;
  101.                     int b = std::rand() % 15;
  102.                     text_tiles[a].swap(text_tiles[b]);
  103.                 }
  104.             }
  105.             if (event.type == sf::Event::KeyReleased)
  106.             {
  107.  
  108.  
  109.                 if (event.key.code == sf::Keyboard::Left && void_index / 4 != 3) {
  110.                     if (void_index < 16)
  111.                     {
  112.                         text_tiles[void_index + 4].swap(text_tiles[void_index]);
  113.                         void_index = void_index + 4;
  114.                     }
  115.                 }
  116.                 if (event.key.code == sf::Keyboard::Right && void_index / 4 != 0) {
  117.                     if (void_index >= 0)
  118.                     {
  119.                         text_tiles[void_index - 4].swap(text_tiles[void_index]);
  120.                         void_index = void_index - 4;
  121.                     }
  122.                 }
  123.                 if (event.key.code == sf::Keyboard::Up && void_index % 4 != 3) {
  124.                     if (void_index < 16)
  125.                     {
  126.                         text_tiles[void_index + 1].swap(text_tiles[void_index]);
  127.                         void_index = void_index + 1;
  128.                     }
  129.                 }
  130.                 if (event.key.code == sf::Keyboard::Down && void_index % 4 != 0) {
  131.                     if (void_index >= 0)
  132.                     {
  133.                         text_tiles[void_index - 1].swap(text_tiles[void_index]);
  134.                         void_index = void_index - 1;
  135.                     }
  136.                 }
  137.  
  138.             }
  139.  
  140.         }
  141.  
  142.         gameWindow.clear();
  143.         picWindow.clear();
  144.  
  145.         for (int i = 0; i < 16; ++i)
  146.             gameWindow.draw(sprite_tiles[i]);
  147.         picWindow.draw(fullsprite);
  148.         picWindow.draw(text);
  149.  
  150.         gameWindow.display();
  151.         picWindow.display();
  152.     }
  153.  
  154.     return 0;
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement