c++ rysowanie w konsoli

0

Witam mam problem odnośnie rysowania w konsoli. Czy mógłby mi ktoś pomóc ponieważ nie rysuję tak jak powinno i nie wiem już co mam robić a pracę muszę oddać w piątek.
ta kropka to punkt zaczepienia który jest w dolnym lewym rogu ekranu

http://imageshack.us/photo/my-images/546/vmau.png/

no i mój kod

 
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;

void gotoxy( int kolumna, int linia )
  {
  COORD coord;
  coord.X = kolumna;
  coord.Y = linia;
  SetConsoleCursorPosition(GetStdHandle( STD_OUTPUT_HANDLE ),coord );
  }
 


int main ()
{

char znak= '*';

int w,s,x,y,x1,y1;
x=0;
y=25;
s=6;
// rysowanie wideł dolnych
for (int i=s; i>0; i--)
{
	gotoxy(x,y);
	x1=x+i;
	y1=y-25;
	gotoxy(x1,y1);
	cout<<znak;

}

getch();
    return 0;

}
0

kod nie przenosny. Wiec napisz czy chodzi Ci tylko o platforme windwosa?
druga kwestia to z czym masz problem, bo tu nie ma rysowania wszystkiego tylko jest tutaj jakis zalazek calego programu.

wiecej konkretow mniej domyslow

0

głownie chodzi o to że nie mogę narysować tej figury. Zacząłem najpierw od dolnych wideł ale i tak klapa i ja już nie wiem jak mam takie coś narysować.

0

Nic dziwnego skoro zmienna y1 ma tę samą wartość w każdym kroku pętli.

0
 
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;

void gotoxy( int kolumna, int linia )
  {
  COORD coord;
  coord.X = kolumna;
  coord.Y = linia;
  SetConsoleCursorPosition(GetStdHandle( STD_OUTPUT_HANDLE ),coord );
  }
 


int main ()
{

char znak= '*';
int wielkosc =5;
int x;
int y;


        // rysowanie widel dolnych 
        for (int i=wielkosc; i>0; i--) 
        { 
				
                gotoxy(i, 25-i); 
                cout << char(znak); 
				
        } 

for (int i=1; i<wielkosc; i++) 
        {		
                gotoxy(i + wielkosc, 25 - wielkosc); 
                cout << char(znak); 
        } 


        // rysowanie widel gornych 
        for (int i=1; i<wielkosc; i++) 
        { 
			

                gotoxy(i, 25-(wielkosc+i)); 
                cout << char(znak); 
        } 
getch();
    return 0;

}

teraz mniej poprawiłem ale i tak jest problem z górnymi widłami bo one rysują się w złą stronę tzn zamiast z prawej do lewej to z lewej do prawej

2

znasz punkt na ktorym skonczyles rysowac z dolu do gory. Wiec z tamtego punktu robisz DOKLADNIE TO SAMO (czyli powinines uzyc funkcji) tylko ze x idzie w lewo nie w prawo.
Pozniej znasz znowu ten sam punkt co na poczatku to robisz DOKLADNIE TO SAMO tylko ze y jest = 0 a x idzie w prawo.

Powinienes miec jedna funkcje ktora zwraca Ci koncowe punkty (gdzie skonczyla) i jej uzyc trzy razy (odpowiednio) nic wiecej.

0

a czy byś mi napisał tą funkcję zwracająca bo ja już nie wiem co ja mam robić

1

Raczej sensem zadania było umiejętność myślenia i lekkiego przekształcenia zadania tak aby łatwiej go było zrealizować:

#include <iomanip>
#include <iostream>
using namespace std;

int main()
  {
   const char sign='*';
   const unsigned Y=25,X=1;
   unsigned H=Y>>1;
   for(unsigned y=0;y<Y;++y)
     {
      if(y>H) cout<<setfill(' ')<<setw(X+Y-y-1)<<sign<<endl;
      else if(y<H) cout<<setfill(' ')<<setw(X+y)<<sign<<endl;
      else cout<<setfill(' ')<<setw(X+y-1)<<""<<setfill(sign)<<setw(Y)<<""<<endl;
     }
  }

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