Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "graphics.hpp"
- #include <iostream>
- #include <vector>
- #include <fstream>
- #include <cstdlib>
- #include <cmath>
- using namespace genv;
- using namespace std;
- void beolvas(vector<vector<int>> &v)
- {
- ifstream fin("terkep.txt");
- if(!fin.good())
- {
- cerr << "Could not open input file. Check if it is in the right folder!" << endl;
- exit(1);
- }
- unsigned X, Y;
- fin >> X >> Y;
- v.resize(X);
- for(size_t i = 0; i < X; ++i)
- {
- v[i].resize(Y);
- for(size_t j = 0; j < Y; ++j)
- {
- fin >> v[i][j];
- }
- }
- }
- void kirajzol(const vector<vector<int> > &v, canvas &c)
- {
- for(size_t i = 0; i < v.size(); ++i)
- {
- for(size_t j = 0; j < v[i].size(); ++j)
- {
- int b;
- int g = 127+v[i][j];
- if(v[i][j] < 0)
- {
- b = 255;
- }
- else
- {
- b = 0;
- }
- c << move_to(i,j) << color(0,g,b) << dot;
- }
- }
- c << refresh;
- }
- void sziget(size_t current_x, size_t current_y, int high, vector<vector<int> > &terkep, vector<vector<bool> > &checked)
- {
- if(current_x < 0 || current_x > terkep.size()-1 || current_y < 0 || current_y > terkep[current_x].size()-1 || checked[current_x][current_y])
- {
- return;
- }
- if(terkep[current_x][current_y] < high)
- {
- gout << move_to(current_x, current_y) << color(255, 0, 0) << dot << refresh;
- return;
- }
- checked[current_x][current_y] = true;
- sziget(current_x-1, current_y, high, terkep, checked);
- sziget(current_x+1, current_y, high, terkep, checked);
- sziget(current_x, current_y-1, high, terkep, checked);
- sziget(current_x, current_y+1, high, terkep, checked);
- }
- void tr(canvas &out, canvas &background)
- {
- out << stamp(background, 0, 0) << refresh;
- }
- int main()
- {
- vector<vector<int> > terkep;
- vector<vector<bool>> checked;
- beolvas(terkep);
- unsigned X = terkep.size();
- unsigned Y = terkep[0].size();
- gout.open(X,Y);
- canvas hatter(X,Y);
- kirajzol(terkep,hatter);
- gout << refresh;
- tr(gout, hatter);
- event ev;
- while(gin >> ev && ev.keycode!=key_escape)
- {
- if(ev.type == ev_mouse && ev.button == btn_left)
- {
- vector<vector<bool> > checked(terkep.size(), vector<bool>(terkep[0].size(), false));
- if(terkep[ev.pos_x][ev.pos_y] >= 0)
- {
- sziget(ev.pos_x, ev.pos_y, 0, terkep, checked);
- }
- gout << refresh;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement