Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <Windows.h>
- #include <conio.h>
- using namespace std;
- const int Esq=27;
- void gotoxy(const int x, const int y)
- {
- COORD tPosition = { x, y };
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), tPosition);
- }
- void informacje(){
- cout << "Witaj w programie!\n";
- cout << "Program umozliwia rysowanie znakiem z tablicy ASCII.\n";
- cout << "Wczytasz poczatkowe wymiary firgury.\n";
- cout << "Przesuniesz firgure za pomoca strzalek.";
- cout << "Powiekszysz i pomniejszysz figure za pomoca '+', '-'.";
- }
- void wczytaj_znak(char &znak, int &roz){
- cout << "\n";
- cout << "Podaj znak ktorym chcesz rysowac: ";
- cin >> znak;
- cout << "Podaj rozmiar firgury: ";
- cin >> roz;
- system("cls");
- }
- void rysowanie(int &x1, int &x, int &y1, int&y, char znak, int &roz){
- x1 = x; y1 = y;
- gotoxy(x1, y1);
- for( int i = x; i>x-roz ; i--)
- {
- gotoxy(x1--,y1--);
- cout<<znak;
- }
- gotoxy(x1, y1);
- for (int i = x; i>x-roz; i--)
- {
- gotoxy(x1,y1);
- cout<<znak;
- x1--;
- }
- gotoxy(x1+roz+1, y1--);
- for (int i = x ; i>x-roz; i--)
- { x1++;
- gotoxy(x1+roz, y1--);
- cout<<znak;
- }
- }
- void granice_figury(int &x,int &y, const int &console_size_x, const int &console_size_y, int &roz) // nadanie krawedzi aby program sie nie wysypal kiedy dojdzie do krawedzi konsoli
- {
- if (x > console_size_x - roz) //prawa krawedz konsoli
- x = console_size_x - roz;
- if (x < 0) // lewa krawedz konsoli
- x = 0 + roz;
- if (y > console_size_y - roz) // dolna krawedz konsoli
- y = console_size_y - roz;
- if (y < 0) // górna krawedz konsoli
- y = 0;
- }
- void przesuwanie(char &znak1, const int &console_size_x, const int &console_size_y, int &roz, int &x, int &y, int &x1, int &y1) // przesuwanie figury za pomoca strzalek
- {
- znak1=_getch();
- switch (znak1)
- {
- case 75: {
- x--;
- if (x < 0) // przesuwanie figury w lewo oraz granica konsoli
- x = 0;
- system("cls");
- break;
- }
- case 77: {
- x++;
- if (x > console_size_x - roz - 10) // przesuwanie figury w prawo oraz granica konsoli
- x = console_size_x - roz - 10;
- system("cls");
- break;
- }
- case 72: {
- y--;
- if (y < 0) // przesuwanie figury w gore oraz granica konsoli
- y = 0;
- system("cls");
- break;
- }
- case 80: {
- y++;
- if (y > console_size_y - roz) // przesuwanie figury w dol oraz granica konsoli
- y = console_size_y - roz;
- system("cls");
- break;
- }
- }
- }
- int main(){
- char znak; int roz; char znak1;
- int const console_size_x = 80;
- int const console_size_y = 25;
- int x = 80, y = 24; // poczatkowe ustawienie kursora
- int x1 = 0, y1 = 0;
- informacje();
- wczytaj_znak(znak,roz);
- system("cls");
- do{
- granice_figury(x,y,console_size_x,console_size_y, roz);
- rysowanie(x1, x, y1,y,znak,roz);
- przesuwanie(znak1,console_size_x, console_size_y,roz,x, y, x1, y1);
- } while (znak1!=Esq);
- _getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement