Przesuwanie, powiekszanie i zmniejszanie kodu ASCII

0

Witam, dopiero zaczynam zabawę z programowaniem napisałem taki oto program i niestety zatrzymałem się w miejscu ponieważ muszę jeszcze zrobić tak żeby dana figura poruszała się za pomocą strzałek oraz za pomocą + i - powiększała się jak i pomniejszała i oczywiście to wszystko do rozmiarów ekranu. Czy znajdzie się tutaj ktoś kto by mi mógł z tym pomóc :? Bym był bardzo wdzięczny, pozdrawiam i z góry dziękuje za pomoc :D

#include "stdafx.h"				// dyrektyrwy
#include <iostream>
#include <cstdlib>
#include <conio.h>

void Wstep();
void Wczytaj(size_t &wysokosc, size_t &szerokosc, char &x);
void Rysuj(int i, int j, size_t &wysokosc, size_t &szerokosc, char &x, float value);

int main()
{
	int i=1, j=1;
	size_t wysokosc, szerokosc;
	char x;
	float value = 0.0f;

	Wstep();
	Wczytaj(wysokosc, szerokosc, x);
	Rysuj(i, j, wysokosc, szerokosc, x, value);
	_getch();

	return 0;
}
/////////////////////////////////////////////////////////////////////////////////////
void Wstep()
{
	std::cout << "\t=========================================================== \n"
		"\t========== Program rysowania figury znakiem ASCII ========= \n"
		"\t=========================================================== \n"
		"\t========================  FIGURA  ========================= \n"
		"\t=========================================================== \n"
		"\t=========================  +++++  ========================= \n"
		"\t=========================   +     ========================= \n"
		"\t=========================    +    ========================= \n"
		"\t=========================     +   ========================= \n"
		"\t=========================  +++++  ========================= \n"
		"\t=========================================================== \n"
		"\t==================== Program umozliwia: =================== \n"
		"\t== wybor znaku kodu ASCII ================================= \n"
		"\t== wczytanie poczatkowych rozmiarow figury ================ \n"
		"\t== przesuwanie firury klawiszami strzalek ================= \n"
		"\t== powiekszanie oraz zmianiszanie figury za pomoca + i - == \n"
		"\t== ograniczenie przesuwania figury do rozmiaru ekranu ===== \n"
		"\t=========================================================== \n"
		"\t=========================================================== \n";
	_getch();
}
/////////////////////////////////////////////////////////////////////////////////////
//////////////////////////		WPROWADZANIE DANYCH		/////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////

void Wczytaj(size_t &wysokosc, size_t &szerokosc, char &x)
{
	std::cout << "ZNAK : ";
	std::cin >> x;

	std::cout << "SZEROKOSC = ";
	std::cin >> szerokosc;

	std::cout << "WYSOKOSC = ";
	std::cin >> wysokosc;

	std::cout << std::endl;
}

/////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////		RYSOWANIE		/////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////

void Rysuj(int i, int j, size_t &wysokosc, size_t &szerokosc, char &x, float value)
{

	float scale = (float)szerokosc / (float)wysokosc;
	value += scale;

	for (int i = 0; i < szerokosc; i++)
		std::cout << x;
	std::cout << std::endl;

	for (int i = 1; i < wysokosc; i++)
	{
		for (int j = 0; j < value - 1; j++)
			std::cout << " ";
		std::cout << x << std::endl;

		value += scale;
	}

	for (int i = 0; i < szerokosc; i++)
		std::cout << x;
	std::cout << std::endl;


	system("PAUSE");
}
0

Widzę że nie rwiecie się za bardzo do pomocy to troszkę więcej dopisałem i zaobserwowałem że chyba w jakiś sposób muszę dodać gotoxy w void Rysuj i w teorii powinno już wszystko działać a w praktyce to nie jestem pewien. Ktoś podpowie jak napisać te gotoxy? (załączam małe zmiany w mojej pracy)

 void Wczytaj(size_t &wysokosc, size_t &szerokosc, char &x)
{
	system("cls");
	int max = 20, min = 5;
	do
	{
		std::cout << "Podaj szerokosc figury (od 5 do 20): ";
		std::cin >> szerokosc;

		std::cout << "Podaj wysokosc figury (od 5 do 20): ";
		std::cin >> wysokosc;
	} while (wysokosc + szerokosc < min || wysokosc + szerokosc > max);

	std::cout << "Podaj znak kodu ASCII: ";
	std::cin >> x;

	std::cout << std::endl;
}

/////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////        RYSOWANIE       /////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////

void Rysuj(int i, int j, size_t &wysokosc, size_t &szerokosc, char &x, float value)
{

	float scale = (float)szerokosc / (float)wysokosc;
	value += scale;

	for (int i = 0; i < szerokosc; i++)
		std::cout << x;
	std::cout << std::endl;

	for (int i = 1; i < wysokosc; i++)
	{
		for (int j = 0; j < value - 1; j++)
			std::cout << " ";
		std::cout << x << std::endl;

		value += scale;
	}

	for (int i = 0; i < szerokosc; i++)
		std::cout << x;
	std::cout << std::endl;

	system("PAUSE");
}
//---------------------------------
void Przesuwanie(int i, int j, size_t &wysokosc, size_t &szerokosc, char &x, float value) 
{
	int zmiana = 0, max = 23;
	char klawisz;

	do
	{
		klawisz = _getch();

		switch (klawisz)
		{
		case GORA:
		{
			j--; zmiana = 1;
			if (j < 1)
			{
				j++;
				zmiana = 0;
			}
			break;
		}

		case DOL:
		{
			j++; zmiana = 1;
			if (j > max - (wysokosc + szerokosc - 2))
			{
				j--;
				zmiana = 0;
			}
			break;
		}
		case LEWO:
		{
			i--; zmiana = 1;
			if (i < 1)
			{
				i++;
				zmiana = 0;
			}
			break;
		}
		case PRAWO:
		{
			i++; zmiana = 1;
			if (i > 80 - wysokosc + szerokosc)
			{
				i--;
				zmiana = 0;
			}
			break;
		}
		case '+':
		{
			wysokosc + szerokosc++; zmiana = 1;
			if (wysokosc + szerokosc < 5 || wysokosc + szerokosc > max)
			{
				wysokosc + szerokosc--; j--;
				zmiana = 0;
			}
			break;
		}

		case '-':
		{
			wysokosc + szerokosc--;
			zmiana = 1;
			if (wysokosc + szerokosc < 5 || wysokosc + szerokosc > max)
			{
				wysokosc + szerokosc++;
				zmiana = 0;
			}
			break;
		}

		}

		if (zmiana)
		{
			Rysuj(i, j, wysokosc, szerokosc, x, value); zmiana = 0;
		}

	} while (klawisz != 27);

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1