Witam.
Musze napisać program rysowania znakiem ASCII (" >- " ). Problem mój polega na tym,że :
- jeśli wybiorę minimalne wartości rozmiaru figury to ta nie narysuje się tak jak powinna;
- nie mogę sprawdzić czy poruszanie figurą jest możliwe ( po naciśnięciu dowolnego klawisza program się zamyka )
- czy w ogóle kod do przesuwania jest właściwy ?
- no i mój ostatni problem to powiększanie i zmniejszanie figury za pomocą " + " i " - " , kompletnie nie mam pojęcia jak to ma być zrobione.
Bardzo proszę o pomoc, dzięki temu programowi będę mógł przystąpić do sesji :)
#include <conio.h>
#include<iostream.h>
#include <windows.h>
using namespace std;
void wstep ();
void pobierz_znak(char &znak);
void pobierz_wymiary (int &s, int &w, char znak);
void rysowanie (int s, int w, int x, char znak);
int main()
{
int w,s,x;
char znak;
_setcursortype (_NORMALCURSOR);
wstep ();
pobierz_znak(znak);
pobierz_wymiary(w, s, znak);
_setcursortype (_NOCURSOR);
rysowanie ( w, s, x, znak);
getch();
return 0;
}
// funkcje
void wstep ()
{
cout<<"Napisz program rysowania znakiem ASCII ponizszej figury:\n";
cout<<" *\n";
cout<<" * \n";
cout<<" * \n";
cout<<" * * * * * * \n";
cout<<" *\n";
cout<<" *\n";
cout<<" *\n\n";
cout<<"Program powinien umozliwiac:\n";
cout<<"- wybor znaku ASCII\n- wczytanie poczatkowych rozmiarow figury\n";
cout<<"- przesuwanie figury klawiszami lewo, prawo, gora, dol\n " ;
cout<<"- ograniczenie przesuwania do obszaru ekranu\n";
cout<<"- powiekszanie oraz zmnijszanie rozmiaru figury za pomoca klawiszy + i -\n\n\n";
cout<<" Autor : ****\n" ;
cout<<" Grupa: ****\n" ;
cout<<" Data : 13.01.2011\n\n\n" ;
cout<<" ...::: Wcisnij dowolny klawisz aby kontynuowac :::... ";
getch();
}
//*****
void pobierz_znak(char &znak)
{
int x,y;
clrscr ();
cout<<" Wybierz na klawiaturze znak ASCII,\n";
cout<<"za pomoca ktorego zostanie narysowana figura\n";
cin>>znak;
}
//********
void pobierz_wymiary (int &w, int &s, char znak)
{
int min_szer=6, max_szer=30, min_wys = 3, max_wys, er, x, y ;
clrscr();
cout<<"Podaj szerokosc figury od 6 do 30: ";
x = wherex(); y = wherey();
do
{
gotoxy(x,y);
clreol();
er = 0;
cin >> s;
if (cin.fail()) // kontorola wprowadzanych danych
{
er = 1;
cin.clear();
cin.ignore(0xff, (int)'\n');
}
}
while ((s < min_szer)||(s > max_szer) || er );
clrscr();
if(s>=23) max_wys = 23;
else max_wys = s;
cout<<"Podaj wysokosc figury (liczba nieparzysta) z przedzialu od 3 do "<<max_wys<<": ";
x = wherex(); y = wherey();
do
{
gotoxy(x,y);
clreol();
er = 0;
cin >> w;
if (cin.fail()) //kontorola danych
{
er = 1;
cin.clear();
cin.ignore(0xff, (int)'\n');
}
}
while ((w < min_wys)||(w > max_wys) || er || w%2==0 );
}
void rysowanie (int s, int w, int x, char znak)
{
gotoxy(1,24);
for(x=1;x<=80;x++)cout<<"=";
{ cout<<" Figure przesuwamy za pomoca kursorow || Esc = wyjscie";
}
// rysowanie poziomej lini
for (int i=1; i<s; i++)
{
gotoxy(i + s/2, 24 - s/2);
cout << char(znak);
}
// rysowanie widel dolnych
for (int i=s/2; i>0; i--)
{
gotoxy(i, 24-i);
cout << char(znak);
}
// rysowanie widel gornych
for (int i=1; i<s/2; i++)
{
gotoxy(i, 24-(s)+i);
cout << char(znak);
}
getch();
void przesuwanie(int &poziom,int &pion, int &g, int aa, int bb, int s, int w) ;
{
int aa=40;
int bb=11;
int poziom=0, g, pion=0;
g=getch();
if (g==0)
{
g=getch();
if(g==75) // przesunięcie w lewo
{
if(aa-s+poziom > 0) poziom = --poziom ;
}
if(g==77) // przesunięcie w prawo
{
if (aa-s+poziom < aa+aa - s ) poziom = ++poziom;
}
if(g==72) //przesunięcie w góre
{
if ( (bb-(w/2)+pion) > 0) pion=--pion;
}
if(g==80) //przesunięcie w dół
{
if ( (bb-(w/2)+pion-1) < bb+bb -w) pion = ++pion;
}
}
}
}