Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // projekt.cpp : Defines the entry point for the console application.
- //Napisz program rysowania znakiem ASCII figury o kształcie "Z"
- //Program powinien umożliwić:
- //-wybór znaku kodu ASCII
- //-wczytanie początkowych danych figury
- //-przesuwanie figury oraz jej pomniejszanie
- //-ograniczenie przesuwania i rozmiarów figury do obszaru ekranu
- #include "stdafx.h"
- #include <cstdlib>
- #include <iostream>
- #include <conio.h>
- #include <cstdlib>
- #include <Windows.h>
- using namespace std;
- //deklaracje funkcji
- void gotoxy(int, int); //funkcja badajaca polozenie kursora
- int wherex();
- int wherey();
- void Intro(); //Wstep
- void WysSzerKonsoli(int, int); //Funkcja ustawiajaca poczatkowy rozmiar okna konsoli
- void PobierzDane(int &, char &, int &); //Funkcja pobierajaca rozmiar figury, kod znaku ASCII w jakim bedzie rysowana
- void Rysuj(int &, char &, int, int);
- void przesun();
- void rozmiar(int &, int &, int &, int);
- int _tmain(int argc, _TCHAR* argv[])
- {
- WysSzerKonsoli(100, 50);
- Intro();
- int wysokoscfigury = 50;
- int szerokoscfigury = 25;
- int szerokosc_okna = 100;
- int wysokosc_okna = 50;
- const int Esq = 27;
- int ascii, size=50, x = size, y = size;
- char znak, wybor;
- PobierzDane(ascii, znak, size);
- Rysuj(size, znak, wysokoscfigury, szerokoscfigury);
- rozmiar(x, y, size, wybor);
- _getch();
- return 0;
- }
- void gotoxy(int x, int y)
- {
- COORD c;
- c.X = x;
- c.Y = y;
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
- }
- int wherex()
- {
- CONSOLE_SCREEN_BUFFER_INFO csbi;
- GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
- return csbi.dwCursorPosition.X;
- }
- int wherey()
- {
- CONSOLE_SCREEN_BUFFER_INFO csbi;
- GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
- return csbi.dwCursorPosition.Y;
- }
- void Intro()
- {
- cout << "Program umozliwia rysowanie figury 'Z' przy pomocy podanego znaku ASCII\no wybranym rozmiarze." << endl << endl;
- cout << "Dodatkowo figura moze byc przesuwana za pomoca strzalek na klawiaturze\noraz zmniejszana i powiekszana znakami - i +." << endl << endl;
- cout << "Klawisz ESC konczy dzialanie programu." << endl << endl;
- }
- void WysSzerKonsoli(int szerokosc_okna, int wysokosc_okna) //funkcja ustawiajaca poczatkowa szerokosc i wysokosc okna konsoli
- {
- _COORD coord;
- coord.X = szerokosc_okna;
- coord.Y = wysokosc_okna;
- _SMALL_RECT Rect;
- Rect.Top = 0;
- Rect.Left = 0;
- Rect.Bottom = wysokosc_okna - 1;
- Rect.Right = szerokosc_okna - 1;
- HANDLE Handle = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleScreenBufferSize(Handle, coord);
- SetConsoleWindowInfo(Handle, TRUE, &Rect);
- }
- void PobierzDane(int &ascii, char &znak, int &size)
- {
- do
- {
- cout << "Podaj kod znaku ASCII (33-127): ";
- cin >> ascii;
- if (ascii<33 || ascii>127)
- {
- cout << "Liczba nie znajduje sie w zadanym zakresie.\nNacisnij dowolny klawisz aby wpisac ponownie";
- _getch();
- }
- } while (ascii<33 || ascii>127);
- znak = (char)ascii;//petla odpowiedzialna za ustawienie rozmiaru poczatkowego z ograniczeniem do wielkosci ekranu
- do
- {
- cout << "Podaj rozmiar poczatkowy z zakresu 2-20: ";
- cin >> size;
- if (size<2 || size>20)
- {
- cout << "Liczba nie znajduje sie w zadanym zakresie.\nNacisnij dowolny klawisz aby wpisac ponownie";
- _getch();
- system("cls");
- }
- } while (size<2 || size>20);
- system("cls");
- }
- void Rysuj(int & size, char & znakascii, int wysokoscfigury, int szerokoscfigury)
- {
- system("cls");
- int i, x, y;
- int skos = size;
- for (i = 0, x = wysokoscfigury - skos / 2, y = szerokoscfigury + skos / 2; i <= size; i++, x++)//rysowanie poziomego ramienia
- {
- gotoxy(x, y);
- cout << znakascii;
- }
- for (i = 0, x = wysokoscfigury, y = szerokoscfigury; i <= skos/2; i++, x++, y--)//rysowanie skosnego ramienia
- {
- gotoxy(x, y);
- cout << znakascii;
- }
- for (i = 0, x = wysokoscfigury, y = szerokoscfigury; i <= skos/2; i++, x--, y++)//rysowanie skosnego ramienia
- {
- gotoxy(x, y);
- cout << znakascii;
- }
- for (i = 0, x = wysokoscfigury + skos/2, y = szerokoscfigury - skos/2; i<=size; i++, x--)//rysowanie poziomego ramienia
- {
- gotoxy(x, y);
- cout << znakascii;
- }
- }/*void przesun()
- {
- int wysokoscfigury = 50;
- int szerokoscfigury = 25;
- int size = 50;
- int szerokosc=size, wiersz=25, kolumna=100;
- char znak;
- Rysuj(size, znak, wysokoscfigury, szerokoscfigury);
- while ((znak = _getch()) != 27) //do momentu wcisniecia ESC (27 w ASCII) dziala petla, ESC konczy program
- {
- switch (znak)
- {
- /*case 77: //przesuwanie w prawo
- wysokoscfigury++;
- if (wysokoscfigury >wiersz)
- {
- wysokoscfigury = wiersz;
- }
- break;
- case 75: // przesuwanie w lewo
- wysokoscfigury--;
- if (wysokoscfigury <szerokosc / 2)
- {
- wysokoscfigury = szerokosc / 2;
- }
- break;
- case 72: //przesuwa w gore
- szerokoscfigury--;
- if (szerokoscfigury < szerokosc + szerokosc / 2)
- {
- szerokoscfigury = szerokosc + szerokosc / 2;
- }
- break;
- case 80: //przesuwanie w dol
- szerokoscfigury++;
- if (szerokoscfigury > kolumna)
- {
- szerokoscfigury = kolumna;
- }
- break;
- case 43:szerokosc++; //powoduje powiekszenie figury za pomoca +
- if (wysokoscfigury - (szerokosc + szerokosc / 2) <= 0 || wysokoscfigury - (szerokosc + szerokosc / 2) >= wiersze)//ograniczenie powiekszania figury
- {
- szerokosc--;
- }
- break;
- case 45:szerokosc--; //powoduje zmniejszenie figury za pomoca -
- if (szerokosc <= 1)
- {
- szerokosc = 1; //do wielkosci szerokosc =1
- }
- break;
- }
- Rysuj(size, znak, wysokoscfigury, szerokoscfigury);
- }
- system("pause");
- }*/
- void rozmiar(int &x, int &y, int &size, int wybor)
- {
- int wybor = 0;
- if (wybor == 43 && size<20) // ASCII 43 = znak "+"
- size++; // Zwiekszamy rozmiar o 1
- else if (wybor == 45 && size>2) // ASCII 45 = znak "-"
- size--; // Zmniejszamy rozmiar o 1
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement