Pomoc z rysowaniem kodem Ascii

0

Witam, mam do narysowania taką figurę. http://scr.hu/1mb7/3317b
Niestety mam problem już na samym początku ponieważ nie wiem w jaki sposób stworzyć przekątną która się zatrzyma w pewnym momencie.
Czy mógłbym prosić o jakieś podpowiedzi lub sugestie?
http://pastebin.com/cVsxiXpg <- tworzy mi przekątną ale ona się nie kończy, a nie wiem w jaki sposób ją "zatrzymać gdzieś na środku".
Z góry dziękuje.

2
#include <iostream>
using namespace std;

void toup(unsigned shift,unsigned size)
  {
   for(unsigned s=size-1;s<=size;--s)
     {
      for(unsigned i=0;i<=shift+s;++i) cout<<' ';
      cout<<'/'<<endl;
     }
  }
  
void todn(unsigned shift,unsigned size)
  {
   for(unsigned s=0;s<size;++s)
     {
      for(unsigned i=0;i<=shift+s;++i) cout<<' ';
      cout<<'\\'<<endl;
     }
  }

void line(unsigned size)
  {
   for(unsigned i=0;i<size;++i) cout<<'-';
   cout<<endl;
  }

int main()
  {
   toup(5,5);
   line(6);
   todn(5,5);
   return 0;
  }
0

no ale to ma rysować znakiem ascii. Dziękuje za odpowiedź ale jesteś w stanie jakoś mnie nakierować na pętlę for? bo wydaje mi się że ona jest źle napisana.

1

@ejdier a niby czym rysuje jak nie znakiem z kodu ascii?
i o co Ci chodzi z ta petla for ;o

0

Przepraszam źle się określiłem, znak ma być wybrany przez użytkownika. W swoim kodzie mam pętlę "for" o którą mi chodzi, mam z nią problem bo chciałbym żeby zatrzymała się w określonym momencie a nie wiem jakie parametry zawrzeć w tym.
http://scr.hu/1mb7/x075m całe polecenie zadania. Nieporozumienia wyszły z tego że nie napisałem wszystkiego co ma być zawarte w programie.
Przepraszam że tak chaotycznie.

1

to zmien kod od @_13th_Dragon
albo go zrozum co sie dzieje w nim dzieje

na jedno wychodzi

2

http://ideone.com/2yWdGX

#include <iostream>
using namespace std;
 
void toup(unsigned shift,unsigned size,char ch)
  {
   for(unsigned s=size-1;s<=size;--s)
     {
      for(unsigned i=0;i<=shift+s;++i) cout<<' ';
      cout<<ch<<endl;
     }
  }
 
void todn(unsigned shift,unsigned size,char ch)
  {
   for(unsigned s=0;s<size;++s)
     {
      for(unsigned i=0;i<=shift+s;++i) cout<<' ';
      cout<<ch<<endl;
     }
  }
 
void line(unsigned size,char ch)
  {
   for(unsigned i=0;i<size;++i) cout<<ch;
   cout<<endl;
  }
 
int main()
  {
   char ch;
   cin>>ch;
   toup(5,5);
   line(6);
   todn(5,5);
   return 0;
  }
0

Mam kolejny problem otóż po wywołaniu funkcji przesuwanie i kliknięciu klawisza konsola się zamyka i _getch(); jej nie utrzymuje. Co może być tego powodem?

    #include <iostream>
    #include <Windows.h>
    #include <conio.h>
    using namespace std;
     
    void gotoxy(const int x, const int y)
    {
            COORD tPosition = { x, y };
            SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), tPosition);
    }
    void informacje(){
            cout << "Witaj w programie!\n";
            cout << "Program umozliwia rysowanie znakiem z tablicy ASCII.\n";
            cout << "Wczytasz poczatkowe wymiary firgury.\n";
            cout << "Przesuniesz firgure za pomoca strzalek.";
            cout << "Powiekszysz i pomniejszysz figure za pomoca '+', '-'.";
    }
    void wczytaj_znak(char &znak, int &roz){
     
            cout << "\n";
            cout << "Podaj znak ktorym chcesz rysowac: ";
            cin >> znak;
            cout << "Podaj rozmiar firgury: ";
            cin >> roz;
            system("cls");
    }
     
     
     
    void rysowanie(int &x1, int &x, int &y1, int&y, char znak, int &roz){
            x1 = x; y1 = y;
            gotoxy(x1, y1);
            for( int i = x;  i>x-roz ; i--)
            {  
				gotoxy(x1--,y1--);
				cout<<znak;
				}
			gotoxy(x1, y1);
			for (int i = x; i>x-roz; i--)
			{	
				gotoxy(x1,y1);
				cout<<znak;
				x1--;
				}
			gotoxy(x1+roz+1, y1--);
			
			for (int i = x ; i>x-roz; i--)
			{	x1++;
			gotoxy(x1+roz, y1--);
				cout<<znak;
			}
	}
	
	void granice_figury(int &x,int &y, const int &console_size_x, const int &console_size_y, int &roz) // nadanie krawedzi aby program sie nie wysypal kiedy dojdzie do krawedzi konsoli
{
	if (x > console_size_x - roz) //prawa krawedz konsoli
		x = console_size_x - roz;

	if (x < 0)						   // lewa krawedz konsoli
		x = 0;

	if (y > console_size_y - roz)	   // dolna krawedz konsoli
		y = console_size_y - roz;

	if (y < 0)					       // górna krawedz konsoli
		y = 0;
}
	void przesuwanie(char &znak, const int &console_size_x, const int &console_size_y, int &bok, int &x, int &y, int &x1, int &y1) // przesuwanie figury za pomoca strzalek
{
	switch (znak)
	{
	case 75: {
				 x--;
				 if (x < 0)							 // przesuwanie figury w lewo oraz granica konsoli
					 x = 0;
				 break;
			 }

	case 77: {
				 x++;
				 if (x > console_size_x - roz - 10)	 // przesuwanie figury w prawo oraz granica konsoli
					 x = console_size_x - roz - 10;
				 break;
			 }

	case 72: {
				 y--;
				 if (y < 0)							 // przesuwanie figury w gore oraz granica konsoli
					 y = 0;
				 break;
			 }

	case 80: {
				 y++;
				 if (y > console_size_y - roz)		 // przesuwanie figury w dol oraz granica konsoli
					 y = console_size_y - roz;
				 break;
			 }
	}
}
           
     
    int main(){
            
			char znak; int roz;
            int const console_size_x = 80;
            int const console_size_y = 25;
            int x = 80, y = 24; // poczatkowe ustawienie kursora
            int x1 = 0, y1 = 0;
            informacje();
            wczytaj_znak(znak,roz);
			cout <<"\n";
			system("cls");
			granice_figury(x,y,console_size_x,console_size_y, roz);
            rysowanie(x1, x, y1,y,znak,roz);
			przesuwanie(znak,console_size_x,console_size_y,roz,x,y, x1,y1);
			
			_getch();
			
 
    } 

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