Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <SFML\Graphics.hpp>
- bool isInSquare(float min_x, float max_x, float min_y, float max_y, float x, float y);
- int main()
- {
- sf::RenderWindow window(sf::VideoMode(800, 800), "SFML Works!");
- sf::RectangleShape rect(sf::Vector2f(49, 49));
- sf::RectangleShape color_1(sf::Vector2f(50, 50));
- sf::RectangleShape color_2(sf::Vector2f(50, 50));
- sf::RectangleShape color_3(sf::Vector2f(50, 50));
- rect.setFillColor(sf::Color::Black);
- rect.setPosition(sf::Vector2f(0, 0));
- color_1.setFillColor(sf::Color::Red);
- color_1.setPosition(sf::Vector2f(100, 25));
- color_2.setFillColor(sf::Color::Green);
- color_2.setPosition(sf::Vector2f(175, 25));
- color_3.setFillColor(sf::Color::Blue);
- color_3.setPosition(sf::Vector2f(250, 25));
- std::vector < sf::Vertex> pixels;
- sf::Vertex _line[] = {
- sf::Vertex(sf::Vector2f(100,100)),
- sf::Vertex(sf::Vector2f(700, 100)),
- sf::Vertex(sf::Vector2f(700, 700)),
- sf::Vertex(sf::Vector2f(100, 700)),
- sf::Vertex(sf::Vector2f(100,700)),
- sf::Vertex(sf::Vector2f(100, 100))
- };
- std::vector < sf::Vertex> vertices;
- float squares[144][4][2];
- sf::Vector2f square[12][12][2];
- //grid generator..
- for (int i = 1; i <= 12; i++)
- {
- //visual part
- //draw horizontal line
- float y = 100 + (50 * i);
- vertices.push_back(sf::Vertex(sf::Vector2f(100,y)));
- vertices.push_back(sf::Vertex(sf::Vector2f(700,y)));
- //draw vertical line
- float x = 100 + (50 * i);
- vertices.push_back(sf::Vertex(sf::Vector2f(x, 100)));
- vertices.push_back(sf::Vertex(sf::Vector2f(x, 700)));
- //end of visual part
- //array part
- ////////////////////////
- squares[i][0][0] = x - 50; //A
- squares[i][0][1] = y - 50;
- /////////////////////////
- squares[i][1][0] = x; //B
- squares[i][1][1] = y - 50;
- ////////////////////////
- squares[i][2][0] = x; // C
- squares[i][2][1] = y;
- ////////////////////////
- squares[i][3][0] = x - 50; // D
- squares[i][3][1] = y;
- }
- for (int i = 0; i < 12; i++) //row
- {
- for (int z = 0; z < 12; z++) //column
- {
- float y = 100 + (50 * (float)i);
- float x = 100 + (50 * (float)z);
- square[i][z][0] = sf::Vector2f(x,y); //min
- square[i][z][1] = sf::Vector2f(x+50,y+50); //max
- /*std::cout << "min (" << square[i][z][0].x << "," << square[i][z][0].y << ")" << std::endl;
- std::cout << "max (" << square[i][z][1].x << "," << square[i][z][1].y << ")" << std::endl;*/
- }
- }
- std::cout << "min (" << square[0][0][0].x << "," << square[0][0][0].y << ")" << std::endl;
- std::cout << "max (" << square[0][0][1].x << "," << square[0][0][1].y << ")" << std::endl;
- std::cout << "min (" << square[11][11][0].x << "," << square[11][11][0].y << ")" << std::endl;
- std::cout << "max (" << square[11][11][1].x << "," << square[11][11][1].y << ")" << std::endl;
- //finish
- while (window.isOpen())
- {
- sf::Event event;
- while (window.pollEvent(event))
- {
- if (event.type == sf::Event::Closed)
- window.close();
- switch (event.type)
- {
- case sf::Event::Closed:
- window.close();
- break;
- case sf::Event::MouseButtonPressed:
- if (event.mouseButton.button == sf::Mouse::Left)
- {
- std::cout << "You pressed left mouse at x: " << event.mouseButton.x << " y: " << event.mouseButton.y << std::endl;
- if(isInSquare(100,150,25,75,event.mouseButton.x,event.mouseButton.y)){
- rect.setFillColor(sf::Color::Red);
- } else if (isInSquare(175, 225, 25, 75, event.mouseButton.x, event.mouseButton.y)) {
- rect.setFillColor(sf::Color::Green);
- } else if (isInSquare(250, 300, 25, 75, event.mouseButton.x, event.mouseButton.y)) {
- rect.setFillColor(sf::Color::Blue);
- }
- for (int i = 0; i < 12; i++)
- {
- for (int z = 0; z < 12; z++)
- {
- if (isInSquare(square[i][z][0].x, square[i][z][1].x, square[i][z][0].y, square[i][z][1].y, event.mouseButton.x, event.mouseButton.y)) {
- std::cout << "sucess" << std::endl;
- pixels.push_back(sf::Vertex(sf::Vector2f(square[i][z][0].x, square[i][z][0].y), rect.getFillColor()));
- pixels.push_back(sf::Vertex(sf::Vector2f(square[i][z][1].x-1, square[i][z][0].y), rect.getFillColor()));
- pixels.push_back(sf::Vertex(sf::Vector2f(square[i][z][1].x-1, square[i][z][1].y-1), rect.getFillColor()));
- pixels.push_back(sf::Vertex(sf::Vector2f(square[i][z][0].x, square[i][z][1].y-1), rect.getFillColor()));
- //create a pixel
- }
- }
- }
- }
- else if (event.mouseButton.button == sf::Mouse::Right)
- {
- for (int i = 0; i < 12; i++)
- {
- for (int z = 0; z < 12; z++)
- {
- if (isInSquare(square[i][z][0].x, square[i][z][1].x, square[i][z][0].y, square[i][z][1].y, event.mouseButton.x, event.mouseButton.y)) {
- std::cout << "sucess" << std::endl;
- pixels.push_back(sf::Vertex(sf::Vector2f(square[i][z][0].x, square[i][z][0].y), sf::Color::Black));
- pixels.push_back(sf::Vertex(sf::Vector2f(square[i][z][1].x - 1, square[i][z][0].y), sf::Color::Black));
- pixels.push_back(sf::Vertex(sf::Vector2f(square[i][z][1].x - 1, square[i][z][1].y - 1), sf::Color::Black));
- pixels.push_back(sf::Vertex(sf::Vector2f(square[i][z][0].x, square[i][z][1].y - 1), sf::Color::Black));
- //create a pixel
- }
- }
- }
- }
- break;
- case sf::Event::MouseMoved:
- if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
- {
- for (int i = 0; i < 12; i++)
- {
- for (int z = 0; z < 12; z++)
- {
- if (isInSquare(square[i][z][0].x, square[i][z][1].x, square[i][z][0].y, square[i][z][1].y, event.mouseMove.x, event.mouseMove.y)) {
- std::cout << "sucess" << std::endl;
- pixels.push_back(sf::Vertex(sf::Vector2f(square[i][z][0].x, square[i][z][0].y), rect.getFillColor()));
- pixels.push_back(sf::Vertex(sf::Vector2f(square[i][z][1].x - 1, square[i][z][0].y), rect.getFillColor()));
- pixels.push_back(sf::Vertex(sf::Vector2f(square[i][z][1].x - 1, square[i][z][1].y - 1), rect.getFillColor()));
- pixels.push_back(sf::Vertex(sf::Vector2f(square[i][z][0].x, square[i][z][1].y - 1), rect.getFillColor()));
- //create a pixel
- }
- }
- }
- }
- for (int i = 0; i < 12; i++)
- {
- for (int z = 0; z < 12; z++)
- {
- if (isInSquare(square[i][z][0].x, square[i][z][1].x, square[i][z][0].y, square[i][z][1].y, event.mouseMove.x, event.mouseMove.y)) {
- //std::cout << "sucess" << std::endl;
- rect.setPosition(square[i][z][0].x, square[i][z][0].y);
- }
- }
- }
- break;
- default:
- break;
- }
- }
- window.clear();
- window.draw(_line, 6, sf::LinesStrip);
- //draw the grid
- window.draw(&vertices[0], vertices.size(), sf::Lines);
- window.draw(&pixels[0], pixels.size(), sf::Quads);
- window.draw(rect);
- window.draw(color_1);
- window.draw(color_2);
- window.draw(color_3);
- window.display();
- }
- return 0;
- }
- bool isInSquare(float min_x, float max_x, float min_y, float max_y, float x, float y)
- {
- /*std::cout << "IF " << x << " >= " << min_x << " && " << x << " <= " << max_x << std::endl;
- std::cout << "IF " << y << " >= " << min_y << " && " << y << " <= " << max_y << std::endl;*/
- if (x >= min_x && x <= max_x)
- {
- if (y >= min_y && y <= max_y)
- {
- return true;
- }
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement