Compare commits

..

No commits in common. "e16e3d588e1795c8ceb701cf3e6aabcfb2f22f0f" and "ff12edcdbe371f7364eedbf51025bfdbcfbc2923" have entirely different histories.

4 changed files with 17 additions and 132 deletions

View File

@ -1,29 +0,0 @@
// 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();
}
}

View File

@ -1,13 +0,0 @@
#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
View File

@ -1,20 +0,0 @@
#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,82 +1,29 @@
#include <iostream> // cin, cout
#include <fstream> // ifstream
#include <cstdlib> // srand, rand
#include <ctime> // time
#include <cstring> // strcmp
#include <vector> // TODO: or use arrays for maximum performance?
// 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 "Display.h"
#include "Point.h" // TODO: check if there is a usable SFML or c++ class
#include "Timing.h"
int main (int argc, char **argv)
int main()
{
// read program arguments
// -v mode with enabled visualization
// -f <filename> read random numbers from file
// TODO: care a little more <3
std::string fileRnd = "";
bool vis = false;
for (int i = 0; i < argc; ++i)
{
if (strcmp(argv[i], "-v") == 0) vis = true;
else if (strcmp(argv[i], "-f") == 0) fileRnd = argv[i + 1];
}
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
int valCount = 10;
std::vector<Point> points;
if (fileRnd.empty()) // generate random numbers
while (window.isOpen())
{
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)
sf::Event event;
while (window.pollEvent(event))
{
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!";
}
}
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
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;
}