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.
#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;
}
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.
@ejdier a niby czym rysuje jak nie znakiem z kodu ascii?
i o co Ci chodzi z ta petla for ;o
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.
to zmien kod od @_13th_Dragon
albo go zrozum co sie dzieje w nim dzieje
na jedno wychodzi
#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;
}
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();
}