Problem związany z rysowaniem znakiem kodu ASCII !!

0

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;
          }
       }

}

} 
0

nie rozumie :(

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