Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "graphics.hpp"
- #include <vector>
- #include <time.h>
- #include <iostream>
- #include <cstdlib>
- #include <math.h>
- #include <sstream>
- using namespace genv;
- using namespace std;
- void torles()
- {
- gout << move_to(0,0) << color(255,255,255) << box(600,600) << move_to(5,5) <<
- color(0,0,0) << box(589,589) << color(255,255,255) << move_to(150,295) << box(300,10);
- }
- struct fal
- {
- private:
- int fx1;
- int fy1;
- int fx2;
- int fy2;
- public:
- fal():
- fx1(150),
- fy1(295),
- fx2(450),
- fy2(305)
- {}
- bool nekimegy(int x, int y)
- {
- bool neki = false;
- if(x >= fx1 && x <= fx2 && y >= fy1 && y <= fy2)
- {
- neki = true;
- }
- return neki;
- }
- };
- void vege(int a)
- {
- string b;
- stringstream ss;
- ss << a;
- ss >> b;
- gout.load_font("LiberationSans-Regular.ttf", 25, 15);
- gout << move_to(245,175) << color(255,255,255) << text("GAME OVER");
- gout << move_to(270, 220) << text("Score: ") << text(b);
- gout.load_font("LiberationSans-Regular.ttf", 14, 10);
- gout << move_to(200, 260) << text("(press ESC to quit, ENTER to play again)");
- }
- struct pont
- {
- int px;
- int py;
- public:
- pont():
- px((rand()%582)+7),
- py((rand()%582)+7)
- {}
- void kiir(pont p)
- {
- for (int i=-4; i<=4; i++)
- {
- for (int j=-4; j<=4; j++)
- {
- if (i*i + j*j < 16)
- {
- gout << move_to(p.px+i, p.py+j) << color(255,0,0) << box(1,1);
- }
- }
- }
- }
- bool bennevan(int x, int y, pont p)
- {
- bool benne = false;
- if((x-p.px)*(x-p.px) + (y-p.py)*(y-p.py) <= 16 || (x+10-p.px)*(x+10-p.px) + (y+10-p.py)*(y+10-p.py) <= 16 ||
- (x+5-p.px)*(x+5-p.px) + (y+5-p.py)*(y+5-p.py) <= 16 || (x-p.px)*(x-p.px) + (y+10-p.py)*(y+10-p.py) <= 16 ||
- (x+10-p.px)*(x+10-p.px) + (y-p.py)*(y-p.py) <= 16)
- {
- benne = true;
- }
- return benne;
- }
- int random(pont p)
- {
- p.px = (rand()%582)+7;
- p.py = (rand()%582)+7;
- }
- };
- struct kigyo
- {
- int x;
- int y;
- public:
- kigyo():
- x(100),
- y(100)
- {}
- void mozgat(int a, int b)
- {
- gout << color(255,255,255) << move_to(x+a,y+b) << box(10,10);
- }
- void rajzol(int v1, int v2)
- {
- gout << color(255,255,255) << move_to(v1, v2) << box(10,10);
- }
- void kovet(kigyo k)
- {
- double dx = k.x-x;
- double dy = k.y-y;
- double norma = sqrt(dx*dx+dy*dy);
- x+=dx/norma;
- y+=dy/norma;
- }
- kigyo(double _x, double _y): x(_x), y(_y){}
- };
- int main()
- {
- gout.open(600,600);
- event ev;
- int menu=1;
- gout << color(255,0,0) << move_to(200,150) << box(200,50);
- gout << move_to(280,175) << color(0,0,0) << text("PLAY");
- gout << color(0,0,0) << move_to(200,250) << box(200,50);
- gout << move_to(280,275) << color(255,255,255) << text("EXIT");
- while(gin >> ev)
- {
- if(ev.keycode == key_escape)
- {
- return 0;
- }
- if(ev.keycode == key_down)
- {
- menu=2;
- if(ev.keycode == key_enter && menu == 2)
- {
- return 0;
- }
- gout << color(0,0,0) << move_to(0,0) << box(600,600);
- gout << color(0,0,0) << move_to(200,150) << box(200,50);
- gout << move_to(280,175) << color(255,255,255) << text("PLAY");
- gout << color(255,0,0) << move_to(200,250) << box(200,50);
- gout << move_to(280,275) << color(0,0,0) << text("EXIT");
- }
- if(ev.keycode == key_up)
- {
- menu=1;
- if(ev.keycode == key_enter && menu == 1)
- {
- }
- gout << color(0,0,0) << move_to(0,0) << box(600,600);
- gout << color(255,0,0) << move_to(200,150) << box(200,50);
- gout << move_to(280,175) << color(0,0,0) << text("PLAY");
- gout << color(0,0,0) << move_to(200,250) << box(200,50);
- gout << move_to(280,275) << color(255,255,255) << text("EXIT");
- }
- if(ev.keycode == key_enter && menu == 1)
- {
- gin.timer(10);
- srand(time(0));
- int score = 0;
- vector<kigyo> v;
- kigyo k;
- v.push_back(k);
- int a = 0;
- int b = 1;
- pont p;
- fal f;
- while(gin >> ev)
- {
- if(ev.keycode == key_escape)
- {
- return 0;
- }
- if(ev.keycode == key_right)
- {
- a=1;
- b=0;
- }
- if(ev.keycode == key_left)
- {
- a=-1;
- b=0;
- }
- if(ev.keycode == key_down)
- {
- a=0;
- b=1;
- }
- if(ev.keycode == key_up)
- {
- a=0;
- b=-1;
- }
- for(int i = 0; i < v.size(); i++)
- {
- kigyo[i].kovet(v[(i+1)%v.size()]);
- kigyo[i].rajzol();
- }
- if(p.bennevan(v[0].x, v[0].y, p))
- {
- score = score+100;
- torles();
- p.px = (rand()%582)+7;
- p.py = (rand()%582)+7;
- v.push_back(k);
- }
- if(ev.type == ev_timer)
- {
- torles();
- v[0].x=v[0].x+a;
- v[0].y=v[0].y+b;
- v[0].mozgat(a,b);
- for(int o=1; o<=v.size(); o++)
- {
- v[o].x=v[o-1].x-10*a;
- v[o].y=v[o-1].y-10*b;
- v[o].rajzol(v[o-1].x, v[o-1].y);
- }
- if(v[0].x >= 586 || v[0].y >= 586 || v[0].x <= 4 || v[0].y <= 4)
- {
- gout << color(0,0,0) << move_to(0,0) << box(600,600);
- vege(score);
- break;
- }
- if(f.nekimegy(v[0].x, v[0].y))
- {
- gout << color(0,0,0) << move_to(0,0) << box(600,600);
- vege(score);
- break;
- }
- p.kiir(p);
- }
- gout << refresh;
- }
- }
- if(ev.keycode == key_enter && menu == 2)
- {
- return 0;
- }
- gout << refresh;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement