Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include "windows.h"
- #include <conio.h>
- #include <stdio.h>
- using namespace std;
- // ================================================================================================
- struct Obszar
- {
- int minX, maxX,
- minY,maxY;
- };
- // -------------------------------------------------------------------------------
- class runner
- {
- private:
- int x,
- y;
- char kodZnaku;
- Obszar terytorium;
- public:
- void ustawX(int jX);
- void ustawY(int jY);
- void ustawZnak(char jZnak);
- void ustawPoz(int jX, int jY);
- int podajX();
- int podajY();
- void podajPoz(int& jX, int& jY);
- char podajZnak();
- void przesunY(int oIle);
- void przesunX(int oIle);
- void przesun(int oIleX, int oIleY);
- void narysujSie();
- void zmazSie();
- runner(int jX, int jY, char jZnak);
- void ustawTerytorium(int jminX, int jmaxX, int jminY, int jmaxY);
- void gotoxy(int x, int y)
- {
- COORD c;
- c.X = x-1;
- c.Y = y-1;
- SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
- };
- runner();
- };
- runner::runner(int jX, int jY, char jZnak)
- {
- ustawTerytorium( 1, 80, 1, 24);
- ustawX(jX);
- ustawY(jY);
- ustawZnak(jZnak);
- }
- void ustawTerytorium(int jminX, int jmaxX, int jminY, int jmaxY)
- {
- if(jminX<1) jminX=1;
- else if (jmaxX>80) jmaxX=80;
- if(jminY<1) jminY=1;
- else if (jmaxY>24) jmaxY=24;
- };
- void runner::ustawX(int jX)
- {
- if(jX<terytorium.minX) x=terytorium.maxX;
- else if(jX>terytorium.maxX) x=terytorium.minX;
- else x=jX;
- if(x>100)
- x=terytorium.minX + (terytorium.maxX - terytorium.minX) /2 ;
- };
- void runner::przesunX(int oIle)
- {
- zmazSie();
- x+=oIle;
- if(x<terytorium.minX) x=terytorium.maxX;
- else if(x>terytorium.maxX) x=terytorium.minX;
- narysujSie();
- };
- void runner::przesunY(int oIle)
- {
- zmazSie();
- y+=oIle;
- if(y<terytorium.minY) y=terytorium.maxY;
- else if(y>terytorium.maxY) y=terytorium.minY;
- narysujSie();
- };
- char runner::podajZnak()
- {
- return kodZnaku;
- };
- void runner::podajPoz(int& jX, int& jY)
- {
- jX=x;
- jY=y;
- };
- void runner::ustawY(int jY)
- {
- if(jY<terytorium.minY) y=terytorium.maxY;
- else if(jY>terytorium.maxY) y=terytorium.minY;
- else y=jY;
- if(y>100)
- y=terytorium.minY + (terytorium.maxY - terytorium.minY) /2;
- };
- int runner::podajX()
- {
- return x;
- };
- int runner::podajY()
- {
- return y;
- };
- void runner::ustawPoz(int jX, int jY)
- {
- ustawX(jX);
- ustawY(jY);
- };
- void runner::ustawZnak(char jZnak)
- {
- int znaczek;
- jZnak=getchar();
- if (( jZnak>=33 && jZnak<=47) || (jZnak>=58 && jZnak<=64) || (jZnak>=91 && jZnak<=94) || (jZnak>=123 && jZnak<=126))
- jZnak=jZnak;
- else
- jZnak='*';
- };
- void runner::narysujSie()
- {
- if(x<terytorium.minX) x=terytorium.maxX;
- else if(x>terytorium.maxX) x=terytorium.minX;
- if(y<terytorium.minY) y=terytorium.maxY;
- else if(y>terytorium.maxY) y=terytorium.minY;
- runner::gotoxy( x , y );
- putch(kodZnaku);
- };
- void runner::zmazSie()
- {
- runner::gotoxy( x , y );
- putch(' ');
- };
- // -------------------------------------------------------------------------------
- // -------------------------------------------------------------------------------
- enum kodyKlawiszy
- {
- gora = 72,
- dol = 80,
- lewo = 75,
- prawo = 77,
- enter = 13,
- escape = 27
- };
- // -------------------------------------------------------------------------------
- int wczytajKlawisz(void)
- {
- int klawisz1 = getch();
- return klawisz1;
- }
- // -------------------------------------------------------------------------------
- void wyczyscEkran()
- {
- system("CLS");
- }
- // -------------------------------------------------------------------------------
- // -------------------------------------------------------------------------------
- int main(int argc, char** argv) {
- int klawisz ; // wcisniety klawisz
- runner R;
- R.ustawX(40), // poczatek X
- R.ustawY(12), //poczatek Y
- R.ustawZnak ('*'); // wyswietlany znak
- runner A;
- A.ustawX(10), // poczatek X
- A.ustawY (10), //poczatek Y
- A.ustawZnak ('*'); // wyswietlany znak
- wyczyscEkran();
- do
- {
- R.narysujSie();
- //A.narysujSie();
- R.gotoxy(1, 25);
- cout<<"x: "<<R.podajX()<<" y: "<<R.podajY();
- klawisz = wczytajKlawisz();
- R.zmazSie();
- //A.zmazSie();
- switch(klawisz)
- {
- case escape: break;
- case gora: R.przesunY(-1); break;
- case lewo: R.przesunX(-1); break;
- case prawo: R.przesunX(1); break;
- case dol: R.przesunY(1); break;
- // case 'w':
- // case 'W': A.przesunY(-1); break;
- // case 'a':
- // case 'A': A.przesunX(-1); break;
- // case 'd':
- // case 'D': A.przesunX(1); break;
- // case 's':
- // case 'S': A.przesunY(1); break;
- }
- }while(klawisz!=27);
- return 0;
- }
Add Comment
Please, Sign In to add comment