Advertisement
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>
- void gotoxy(int x, int y)
- {
- COORD c;
- c.X = x -1;
- c.Y = y -1;
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
- }
- //k - klawisz
- enum kodyKlawiszy{kgora=72, kdol=80, klewo=75, kprawo=77, kenter=13, kesc=27};
- int wczytajKlawisz(void)
- {
- int Klawisz = getch();
- return Klawisz;
- }
- void czyscEkran()
- {
- system("cls");
- }
- void napiszZnak (int x, int y, char c)
- {
- gotoxy (x,y);
- putch(c);
- }
- class Runner
- {
- private: //atrybuty
- int x;
- int y;
- char kodZnaku; //znak Runnera
- public: //metody dostepowe
- Runner (int jakieX = 40, int jakieY=12, char jakiZnak = '*'); //konstruktor
- void ustawX (int jakieX); //ustawiająca
- void ustawY (int jakieY);
- void ustawPozycie(int jakieX, int jakieY);
- void ustawZnak (char jakiZnak);
- int podajX() {return x;} //odczytująca
- int podajY() {return y;}
- void podajPozycje(int& jakieX, int& jakieY) {jakieX=x; jakieY=y;}
- char podajZnak() {return kodZnaku;}
- void przesunX(int oIle); //zmieniające
- void przesunY(int oIle);
- void przesun (int oIleX, int oIleY);//jednoczesnie wszystko
- void rysujsie(void);
- void zmazsie(void);
- };
- //***********************treść konstruktora**************************
- Runner::Runner (int jakieX, int jakieY, char jakiZnak)
- {
- ustawX (jakieY);
- ustawY (jakieX);
- ustawZnak (jakiZnak);
- break;
- }
- void Runner::ustawX(int jakieX)
- {
- if (jakieX < 1)
- x = 1;
- else
- if (jakieX>80)
- x = 80;
- else x = jakieX;
- if (jakieX > 100)
- x = 40;
- }
- void Runner::ustawY(int jakieY)
- {
- if (jakieY < 1)
- y = 1;
- else
- if (jakieY>25)
- y = 25;
- else y = jakieY;
- if (jakieY > 100)
- y = 12;
- }
- void Runner::ustawPozycie(int jakieX, int jakieY)
- {
- ustawX(jakieX);
- ustawY(jakieY);
- }
- void Runner::ustawZnak(char jakiZnak)
- {
- jakiZnak = getch();
- if ((33<=jakiZnak&&jakiZnak<=47) ||
- (58<=jakiZnak&&jakiZnak<=64) ||
- (91<=jakiZnak&&jakiZnak<=96) ||
- (123<=jakiZnak&&jakiZnak<=126))
- kodZnaku=jakiZnak;
- else kodZnaku = '*';
- }
- void Runner:: przesunX (int oIle)
- {
- zmazsie();
- x+= oIle;
- if(x<1) x=80;
- else if (x>80) x=1;
- rysujsie();
- }
- void Runner:: przesunY(int oIle)
- {
- zmazsie();
- y+= oIle;
- if(y<1) y=25;
- else if (y>25) y=1;
- rysujsie();
- }
- void Runner::przesun(int oIleX, int oIleY)
- {
- przesunX(oIleX);
- przesunY(oIleY);
- }
- void Runner::rysujsie(void)
- {
- gotoxy (x,y);
- putch(kodZnaku);
- }
- void Runner::zmazsie (void)
- {
- gotoxy (x,y);
- putch(' ');
- }
- int main ( int argc, char** argv)
- {
- int klawisz;
- srand(time(NULL));
- Runner R(rand()%150, rand()%150, rand()%126);
- czyscEkran();
- R.rysujsie();
- gotoxy ( 1, 25); //na dole podajemy pozycje
- cout <<"Jestem tu" <<setw(2) << R.podajX()
- << ":" <<setw(2) << R.podajY();
- cout << " Rusz mnie!";
- do
- {
- klawisz = wczytajKlawisz();
- switch(klawisz){
- case kgora: R.przesunY(-1);
- break;
- case kdol: R.przesunY(1);
- break;
- case klewo: R.przesunX(-1);
- break;
- case kprawo: R.przesunX(1);
- break;
- case '7' : R.przesun (-1, -1); break;//lewo gora
- case '9' : R.przesun ( 1, -1); break;//
- case '1' : R.przesun (-1, 1); break;//lewo gora
- case '3' : R.przesun ( 1, 1); break;//lewo gora
- // ruch lewo prawo na klaw numerycznej
- case '4' : R.przesun (-1, 0); break;//
- case '6' : R.przesun ( 1, 0); break;//lewo gora
- case '8' : R.przesun ( 0, -1); break;
- case '2' : R.przesun ( 0, 1); break;
- case kenter: do
- R.ustawZnak (rand()%126);
- while (R.podajZnak()=='*');
- R.rysujsie();//
- }
- gotoxy ( 12, 25); //uaktualnieie
- cout << setw (2) << R.podajX()
- <<":"<<setw(2) <<R.podajY();
- }while(klawisz != kesc);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement