Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "graphics.hpp"
- #include <vector>
- #include <fstream>
- #include <iostream>
- #include <cstdlib>
- #include <set>
- using namespace genv;
- using namespace std;
- typedef vector<vector<int> > mat_t;
- int XX;
- int YY;
- int kindX=-1;
- int kindY;
- int celX;
- int celY;
- void beolvas(mat_t &v, string fnev="terkep.txt")
- {
- ifstream fin(fnev);
- if(!fin.good()){
- cerr << fnev << " nem talalhato\n";
- exit(1);
- }
- fin >> XX >> YY;
- v.resize(XX);
- for(size_t i = 0; i < XX; ++i)
- {
- v[i].resize(YY);
- for(size_t j = 0; j < YY; ++j)
- {
- fin >> v[i][j];
- }
- }
- }
- void kirajzol(const mat_t &v, canvas& c)
- {
- for(size_t i = 0; i < v.size(); ++i)
- {
- for(size_t j = 0; j < v[i].size(); ++j)
- {
- int g,b;
- int norm_h = 127+v[i][j];
- g = norm_h;
- if(v[i][j] < 0) b = 255+v[i][j];
- else b = 0;
- c << move_to(i,j) << color(0,g,b) << dot;
- }
- }
- c << refresh;
- }
- void tr(canvas& out, canvas& background){
- out<<stamp(background,0,0);
- }
- struct koord {
- int x,y;
- };
- void iranyvektor_haladas(mat_t &terki, int &kindX, int &kindY, int &celX, int &celY) { ///mat_t & vekti // & kell???
- koord V;
- V.x=celX-kindX;
- V.y=celY-kindY;
- cout << V.x << ',' << V.y << " lali" << endl;
- if(V.x==0 && V.y==0 && terki[kindX][kindY]>0) { ///ha ugyanaz a kiindulási és a célállomás--> tegyen egy pontot
- gout << move_to(kindX,kindY) << color(255,0,0) << dot<< refresh;
- }
- while(V.x!=0 || V.y!=0) { ///
- //cout << "nemar" << endl;
- //cout << V.y << " ez kell" << endl;
- if(V.x>0 && terki[celX-1][celY]>0 && celX-1>0 && celX-1<XX && celY>0 && celY<YY) { ///ha az irányvektor elsõ koordinátája + --> balra kell menni a célhoz
- gout << move_to(celX-1,celY) << color(255,0,0) << dot << refresh; ///
- celX-=1; /// kell?
- V.x-=1; ///
- }
- else if(V.x>0 && terki[celX][celY+1]>0 && celX>0 && celX<XX && celY+1>0 && celY+1<YY) { ///ha az irányvektor elsõ koordinátája + --> balra kell menni a célhoz
- gout << move_to(celX,celY+1) << color(255,0,0) << dot << refresh; ///
- celY+=1; /// kell?
- V.y+=1; ///
- }
- else if(V.x>0 && terki[celX-1][celY]>0 && celX-1>0 && celX-1<XX && celY>0 && celY<YY) { ///ha az irányvektor elsõ koordinátája + --> balra kell menni a célhoz
- gout << move_to(celX,celY-1) << color(255,0,0) << dot << refresh; ///
- celY-=1; /// kell?
- V.y-=1; ///
- }
- else if(V.x>0 && terki[celX+1][celY]>0 && celX+1>0 && celX+1<XX && celY>0 && celY<YY) { ///ha az irányvektor elsõ koordinátája + --> balra kell menni a célhoz
- gout << move_to(celX+1,celY) << color(255,0,0) << dot << refresh; ///
- celX+=1; /// kell?
- V.x+=1; ///
- }
- if(V.x<0 && terki[celX+1][celY]>0 && celX+1>0 && celX+1<XX && celY>0 && celY<YY) {
- gout << move_to(celX+1,celY) << color(255,0,0) << dot<< refresh; ///színezés még lehet nem kell
- celX+=1;
- V.x+=1;
- }
- else if(V.x<0 && terki[celX][celY+1]>0 && celX>0 && celX<XX && celY+1>0 && celY+1<YY) {
- gout << move_to(celX,celY+1) << color(255,0,0) << dot<< refresh; ///színezés még lehet nem kell
- celY+=1;
- V.y+=1;
- }
- else if(V.x<0 && terki[celX][celY-1]>0 && celX>0 && celX<XX && celY-1>0 && celY-1<YY) {
- gout << move_to(celX,celY-1) << color(255,0,0) << dot<< refresh; ///színezés még lehet nem kell
- celY-=1;
- V.y-=1;
- }
- else if(V.x<0 && terki[celX-1][celY]>0 && celX-1>0 && celX-1<XX && celY>0 && celY<YY) {
- gout << move_to(celX-1,celY) << color(255,0,0) << dot<< refresh; ///színezés még lehet nem kell
- celX-=1;
- V.x-=1;
- }
- if(V.y>0 && terki[celX][celY-1]>0 && celX>0 && celX<XX && celY-1>0 && celY-1<YY) {
- gout << move_to(celX,celY-1) << color(255,0,0) << dot<< refresh; ///színezés még lehet nem kell
- celY-=1;
- V.y-=1;
- }
- else if(V.y>0 && terki[celX+1][celY]>0 && celX+1>0 && celX+1<XX && celY>0 && celY<YY) {
- gout << move_to(celX+1,celY) << color(255,0,0) << dot<< refresh; ///színezés még lehet nem kell
- celX+=1;
- V.x+=1;
- }
- else if(V.y>0 && terki[celX-1][celY]>0 && celX-1>0 && celX-1<XX && celY>0 && celY<YY) {
- gout << move_to(celX-1,celY) << color(255,0,0) << dot<< refresh; ///színezés még lehet nem kell
- celX-=1;
- V.x-=1;
- }
- else if(V.y>0 && terki[celX][celY+1]>0 && celX>0 && celX<XX && celY+1>0 && celY+1<YY) {
- gout << move_to(celX,celY+1) << color(255,0,0) << dot<< refresh; ///színezés még lehet nem kell
- celY+=1;
- V.y+=1;
- }
- if(V.y<0 && terki[celX][celY+1]>0 && celX>0 && celX<XX && celY+1>0 && celY+1<YY) {
- gout << move_to(celX,celY+1) << color(255,0,0) << dot<< refresh; ///színezés még lehet nem kell
- celY+=1;
- V.y+=1;
- }
- else if(V.y<0 && terki[celX+1][celY]>0 && celX+1>0 && celX+1<XX && celY>0 && celY<YY) {
- gout << move_to(celX+1,celY) << color(255,0,0) << dot<< refresh; ///színezés még lehet nem kell
- celX+=1;
- V.x+=1;
- }
- else if(V.y<0 && terki[celX-1][celY]>0 && celX-1>0 && celX-1<XX && celY>0 && celY<YY) {
- gout << move_to(celX-1,celY) << color(255,0,0) << dot<< refresh; ///színezés még lehet nem kell
- celX-=1;
- V.x-=1;
- }
- else if(V.y<0 && terki[celX][celY-1]>0 && celX>0 && celX<XX && celY-1>0 && celY-1<YY) {
- gout << move_to(celX,celY-1) << color(255,0,0) << dot<< refresh; ///színezés még lehet nem kell
- celY-=1;
- V.y-=1;
- }
- /*if(terki[celX][celY]<0 && terki[celX+1][celY]<0 && terki[celX-1][celY]<0 && terki[celX][celY+1]<0 && terki[celX][celY-1]<0 && terki[celX-1][celY-1]<0) {
- cout << "NEM LETEZIK SZARAZFOLDI UT A KET PONT KOZOTT!" << endl; ///
- }*/
- ///cout << "maki" <<endl;
- ///cout << V.x << ' ' << V.y << endl;
- gout << refresh;
- }
- }
- int main() {
- mat_t terkep;
- beolvas(terkep);
- gout.open(XX, YY);
- canvas hatter(XX,YY);
- kirajzol(terkep,hatter);
- tr(gout, hatter);
- gout << refresh;
- event ev;
- int szam=0;
- while (genv::gin >> ev && ev.keycode != key_escape) {
- ///tr(gout, hatter); /// ez kell ?
- if(ev.type == ev_mouse && ev.button == btn_left){
- if(terkep[ev.pos_x][ev.pos_y]>0){
- kindX=ev.pos_x;
- kindY=ev.pos_y;
- gout << move_to(ev.pos_x,ev.pos_y) << color(255,0,0) << dot <<refresh;
- }
- }
- if(kindX!=-1 && ev.type == ev_mouse && ev.button == btn_right) {
- if(terkep[ev.pos_x][ev.pos_y]>0){
- celX=ev.pos_x;
- celY=ev.pos_y;
- gout << move_to(ev.pos_x,ev.pos_y) << color(255,0,0) << dot <<refresh;
- cout << "kiind:" << kindX << ',' << kindY << endl;
- cout << "cel:" << celX << ',' << celY << endl;
- iranyvektor_haladas(terkep, kindX, kindY, celX, celY);
- gout << refresh;
- szam=szam+1;
- }
- }
- }
- gout << refresh;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement