Compare commits

..

3 Commits

4 changed files with 135 additions and 20 deletions

29
Display.cpp Normal file
View File

@ -0,0 +1,29 @@
// make sure sfml is installed:
// linux - sudo apt-get install libsfml-dev
// windows - manual dl from https://www.sfml-dev.org/download.php
#include <SFML/Graphics.hpp>
#include <iostream>
#include "Display.h"
void Display::show()
{
sf::RenderWindow window(sf::VideoMode(WIDTH, HEIGHT), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
}

13
Display.h Normal file
View File

@ -0,0 +1,13 @@
#pragma once
#define WIDTH 800
#define HEIGHT 600
class Display
{
public:
void show();
// TODO:
// setData for used stuff... current triangle, all points, ladida...
};

20
Point.h Normal file
View File

@ -0,0 +1,20 @@
#pragma once
class Point
{
private:
float m_x, m_y;
public:
Point(float x, float y) : m_x(x), m_y(y) {}
float x()
{
return m_x;
}
float y()
{
return m_y;
}
};

View File

@ -1,29 +1,82 @@
// make sure sfml is installed: #include <iostream> // cin, cout
// linux - sudo apt-get install libsfml-dev #include <fstream> // ifstream
// windows - manual dl from https://www.sfml-dev.org/download.php #include <cstdlib> // srand, rand
#include <SFML/Graphics.hpp> #include <ctime> // time
#include <cstring> // strcmp
#include <vector> // TODO: or use arrays for maximum performance?
#include "Display.h"
#include "Point.h" // TODO: check if there is a usable SFML or c++ class
#include "Timing.h" #include "Timing.h"
int main() int main (int argc, char **argv)
{ {
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!"); // read program arguments
sf::CircleShape shape(100.f); // -v mode with enabled visualization
shape.setFillColor(sf::Color::Green); // -f <filename> read random numbers from file
// TODO: care a little more <3
while (window.isOpen()) std::string fileRnd = "";
bool vis = false;
for (int i = 0; i < argc; ++i)
{ {
sf::Event event; if (strcmp(argv[i], "-v") == 0) vis = true;
while (window.pollEvent(event)) else if (strcmp(argv[i], "-f") == 0) fileRnd = argv[i + 1];
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
} }
int valCount = 10;
std::vector<Point> points;
if (fileRnd.empty()) // generate random numbers
{
std::cout << "generating random numbers..." << std::endl;
//srand(static_cast <unsigned> (time(0)));
srand(static_cast <unsigned> (0)); // fixed seed for testing
for (int i = 0; i < valCount; ++i)
{
float x = static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / WIDTH));
float y = static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / HEIGHT));
points.push_back(Point(x, y));
}
}
else // read random numbers
{
std::cout << "reading random numbers from file: " << fileRnd << "..." << std::endl;
std::ifstream in(fileRnd.c_str());
if (in.is_open())
{
std::string line;
std::getline(in, line); // get first line for explizit valueCount
valCount = std::stoi(line);
for (int i = 0; i < valCount; ++i)
{
getline(in, line);
//getline(in, line, ','); // could also be used slightly different but includes newlines :/
size_t pos = line.find(',');
if (pos != std::string::npos)
{
float x = std::stof(line.substr(0, pos));
float y = std::stof(line.substr(pos + 1));
points.push_back(Point(x, y));
}
else
{
throw "invalid format!";
}
}
}
}
for (Point& pt : points)
{
std::cout << "pt: " << pt.x() << ", " << pt.y() << std::endl;
}
if (vis)
{
Display display;
display.show();
}
std::cout << "any key to exit...";
std::cin.get();
return 0; return 0;
} }