Compare commits
3 Commits
ff12edcdbe
...
e16e3d588e
Author | SHA1 | Date | |
---|---|---|---|
e16e3d588e | |||
34bca9a567 | |||
a0db48c85f |
29
Display.cpp
Normal file
29
Display.cpp
Normal 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
13
Display.h
Normal 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
20
Point.h
Normal 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;
|
||||||
|
}
|
||||||
|
};
|
89
main.cpp
89
main.cpp
@ -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();
|
int valCount = 10;
|
||||||
window.draw(shape);
|
std::vector<Point> points;
|
||||||
window.display();
|
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;
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user