Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- #include "windows.h"
- #include <time.h>
- #include <iomanip>
- using namespace std;
- void wyczyscEkran()
- {
- system( "cls" );
- }
- enum klawisz
- {
- klawiszGora=72,
- klawiszDol=80,
- klawiszLewo=75,
- klawiszPrawo=77,
- enter=13,
- klawiszEsc=27
- };
- int wczytajKlawisz (void)
- {
- int klawisz = getch();
- return klawisz;
- }
- void gotoxy(int x, int y)
- {
- COORD c;
- c.X = x - 1;
- c.Y = y - 1;
- SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
- }
- struct Obszar
- {
- int minX , maxX ,
- minY , maxY ;
- };
- class Runner
- {
- private: //atrybuty
- int x; //pozycja w poziomie
- int y; //pozycja w pionie
- char kodZnaku; //znak runnera
- Obszar terytorium ;
- public://metody
- Runner(int jakieX=40 , int jakieY=12 , char jakiZnak= '*');
- void ustawX (int jakieX);
- void ustawY (int jakieY);
- void ustawPozycje (int jakieX, int jakieY);
- void ustawZnak (char jakiZnak);
- int podajX() {return x; };
- int podajY() {return y; };
- void podajPozycje (int& jakieX, int& jakieY) {jakieX = x; jakieY = y;};
- char podajZnak() {return kodZnaku; };
- void przesunY(int oIle);
- void przesunX(int oIle);
- void przesun (int oIleX, int oIleY);
- void narysujSie (void);
- void zmazSie (void) ;
- void ustawTerytorium (int , int , int, int);
- void podajTerytorium (int& jakieMinX, int& jakieMaxX, int& jakieMinY, int& jakieMaxY);
- };
- Runner::Runner(int jakieX,int jakieY, char jakiZnak)
- {
- ustawTerytorium ( 1 , 80 , 1 , 24 );
- ustawX (jakieX);
- ustawY (jakieY);
- ustawZnak(jakiZnak);
- }
- void Runner::narysujSie(void)
- {
- gotoxy(x,y);
- putch (kodZnaku);
- }
- void Runner::zmazSie(void)
- {
- gotoxy (x,y);
- putch(' ');
- }
- /*int Runner::podajX()
- {
- return x;
- }*/
- void Runner::ustawX (int jakieX)
- {
- if (jakieX < terytorium.minX ) x = terytorium.minX ;
- else if (jakieX > terytorium.maxX ) x = terytorium.maxX ;
- else x=jakieX ;
- if ( jakieX > 100 )
- x = terytorium.maxX / 2 ;
- }
- void Runner::ustawY (int jakieY)
- {
- if (jakieY < terytorium.minY ) x = terytorium.minY ;
- else if (jakieY > terytorium.maxY ) x = terytorium.maxY ;
- else y=jakieY ;
- if ( jakieY > 100 )
- y = terytorium.maxY / 2 ;
- }
- void Runner::ustawPozycje (int jakieX, int jakieY )
- {
- ustawX ( jakieX ) ;
- ustawY ( jakieY ) ;
- }
- void Runner::ustawTerytorium ( int jakieMinX , int jakieMaxX ,
- int jakieMinY , int jakieMaxY)
- {
- if (jakieMinX<1) terytorium.minX = 1 ;
- else if (jakieMinX>75) terytorium.minX = 75 ;
- else terytorium.minX = jakieMinX;
- if (jakieMaxX<terytorium.minX+5) terytorium.maxX = terytorium.minX+5 ;
- else if (jakieMaxX>80) terytorium.maxX = 80 ;
- else terytorium.maxX = jakieMaxX;
- if (jakieMinY<1) terytorium.minY = 1 ;
- else if (jakieMinY>20) terytorium.minY = 20 ;
- else terytorium.minY = jakieMinY;
- if (jakieMaxY<terytorium.minY+4) terytorium.maxY = terytorium.minY+4 ;
- else if (jakieMaxY>24) terytorium.maxY = 24 ;
- else terytorium.maxY = jakieMaxY;
- }
- void Runner::podajTerytorium ( int& jakieMinX , int& jakieMaxX ,
- int& jakieMinY , int& jakieMaxY )
- {
- jakieMinX = terytorium.minX ;
- jakieMaxX = terytorium.maxX ;
- jakieMinY = terytorium.minY ;
- jakieMaxY = terytorium.maxY ;
- }
- void Runner::ustawZnak(char jakiZnak)
- {
- if ( (jakiZnak > 33 && jakiZnak<47)
- || (jakiZnak > 58 && jakiZnak<64)
- || (jakiZnak > 91 && jakiZnak<96)
- || (jakiZnak > 123 && jakiZnak<126) )
- kodZnaku=jakiZnak;
- else kodZnaku='*';
- }
- void Runner::przesunY(int oIle)
- {
- zmazSie();
- y+=oIle;
- if (y<1) y=25;
- else if (y>25) y=1;
- narysujSie();
- }
- void Runner::przesunX(int oIle)
- {
- zmazSie();
- x+=oIle;
- if (x<1) x=80;
- else if (x>80) x=1;
- narysujSie();
- }
- void Runner::przesun(int oIleX, int oIleY)
- {
- przesunX(oIleX);
- przesunY(oIleY);
- }
- int main(int argc , char** argv)
- {
- int klawisz; //wcisniety klawisz
- srand(time(NULL));
- Runner R(rand()%150,rand()%150,rand()%126);
- wyczyscEkran();
- R.narysujSie();
- gotoxy(1,26);
- cout<<"Jestem tu: "<<setw(2)<<R.podajX()<<":"<<setw(2)<<R.podajY()<<" \nRusz mnie!";
- do
- {
- R.narysujSie();
- switch (klawisz = wczytajKlawisz() )
- {
- case klawiszGora : R.przesunY (-1); //przeskocz wyzej
- break;
- case klawiszDol : R.przesunY (1); //przeskocz nizej
- break;
- case klawiszLewo : R.przesunX (-1); //przeskocz w lewo
- break;
- case klawiszPrawo : R.przesunX (1); //przeskocz w prawo
- break;
- case '8' : R.przesunY (-1); //przeskocz wyzej
- break;
- case '2' : R.przesunY (1); //przeskocz nizej
- break;
- case '4' : R.przesunX (-1); //przeskocz w lewo
- break;
- case '6' : R.przesunX (1); //przeskocz w prawo
- break;
- case '1' : R.przesun(-1,1);
- break;
- case '3' : R.przesun(1,1);
- break;
- case '7' : R.przesun(-1,-1);
- break;
- case '9' : R.przesun(1,-1);
- break;
- case enter : do R.ustawZnak(rand()%126);
- while (R.podajZnak() == '*');
- R.narysujSie();
- }
- gotoxy(12,26);
- cout<<setw(2)<<R.podajX()<<":"<<setw(2)<<R.podajY();
- // R.zmazSie();
- }
- while ( klawisz != klawiszEsc);
- return 0;
- }
Add Comment
Please, Sign In to add comment