Witam!
Mam do napisania program, rysowania znakiem ASCII odwróconej litery M. program niby mam, ale nie do końca działa mi opcja Przesuwania za pomocą strzałek i powiekszania / pomniejszania..
Liczę na pomoc z Waszej strony :)
Oto i me "dzieło":
//Środowisko Borland Builder 6 Pro.
//---------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>
const int GORA=72, DOL=80, LEWO=75, PRAWO=77; // stała deklaracja klawiszy do ruszania
void Wstep();
void WczytajDane (float &size, char &znak);
void Rysuj (float size, float x, float y, char znak);
void Przesuwanie (float size, float &x, float &y, char znak);
//---------------------------------------------------------------------------
using namespace std;
int main()
{
float x=1,y=1;
float size;
char znak;
system("cls");
Wstep();
WczytajDane(size, znak);
Rysuj(size, x, y, znak);
getch();
Przesuwanie(size, x, y, znak);
return 0;
}
////////////////////////////////////////////////////////////////////////////////
void Wstep()
{
_setcursortype(_NOCURSOR);
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======== dowolny klawisz rozpocznie prace programu ======== \n"
"\t=========================================================== ";
getch();
}
////////////////////////////////////////////////////////////////////////////////
void WczytajDane (float &size, char &znak)
{
system("cls");
int max=22 , min=5 , rozmiar;
do
{
cout << "Podaj rozmiar figury z zakresu (5-22): ";
cin >> rozmiar;
}
while( rozmiar < min || rozmiar > max);
size = rozmiar;
cout << "Podaj znak kodu ASCII: ";
cin >> znak;
}
////////////////////////////////////////////////////////////////////////////////
void Rysuj(float size, float x, float y, char znak)
{
_setcursortype(_NOCURSOR);
float i,j;
int k;
system("cls");
for(i=x , j=y , k=0 ; k < size ; i++, k++)
{
gotoxy(i,j), cout << znak;
}
for(i=x , j=y , k=0 ; k < (size/2) ; i++,j++,k++)
{
gotoxy(i,j), cout << znak;
}
for(i=x+(size/2) , j=y+(size/2) , k=0 ; k < (size/2) ; i--,j++,k++)
{
gotoxy(i,j), cout << znak;
}
for(i=x , j=(y+size)-1 , k=0 ; k < size ; i++ , k++)
{
gotoxy(i,j), cout << znak;
}
gotoxy(10,25), cout << "strzalki: przesuwanie; +/-: powieksz, zmniejsz; ESC: wyjscie";
}
////////////////////////////////////////////////////////////////////////////////
void Przesuwanie(float size, float &x, float &y, char znak) // przesuwanie figury klawiszami strzałek
{
int zmiana = 0, max=23;
char klawisz;
do
{
klawisz = getch();
switch (klawisz)
{
case GORA:
{
y--; zmiana = 1;
if (y < 1)
{
y++;
zmiana = 0;
}
break;
}
case DOL:
{
y++; zmiana = 1;
if (y > max - (size-2))
{
y--;
zmiana = 0;
}
break;
}
case LEWO:
{
x--; zmiana = 1;
if (x < 1 )
{
x++;
zmiana = 0;
}
break;
}
case PRAWO:
{
x++; zmiana = 1;
if (x > 80 - size)
{
x--;
zmiana = 0;
}
break;
}
case '+':
{
size++; zmiana=1;
if (size < 5 || size > max)
{
size--; y--;
zmiana = 0;
}
break;
}
case '-':
{
size--;
zmiana=1;
if (size < 5 || size > max)
{
size++;
zmiana = 0;
}
break;
}
}
if (zmiana)
{
Rysuj(size, x, y, znak); zmiana = 0;
}
}
while (klawisz != 27);
}
//---------------------------------------------------------------------------