Witam, niestety nie potrafię poradzić sobie z problemem w linijce 26 undefined reference to `rysowanie(char, int, int, int) po przejrzeniu paru podobnych projektów nie mogłem niestety tego naprawić :/
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <stdio.h>
/*------------------------------------------------------------------------------------
------------------------------------------------------------------------------------*/
using namespace std;
void pulpit();
int wherex();
int wherey();
void gotoxy(int x, int y);
void clreol();
int dane(int rozmiar);
void rysowanie(char znak, int x, int y, int rozmiar);
void przesuwanie(char znak, int x, int y, int rozmiar);
char znak;
int rozmiar=0;
int x=0;
int y=25;
int main()
{
char x=znak;
int rozmiar=0; //przypisanie zmiennej size wartosci od uzytkownika
rysowanie(znak, x, y, rozmiar); //wywolanie funkcji rysowanie, ktora rysuje nasza figure
pulpit();
std::cout << "" << std::endl;
std::cout << "Podaj znak z jakiego ma sie skladac figura: " << std::endl;
std::cin >> znak;
std::cout << "Podaj rozmiar figury (3-20): " << std::endl;
std::cin >> rozmiar;
dane(rozmiar);
do{
auto rysowanie(char znak, int x, int y, int rozmiar)->void;
_getch();
}while(_getch()!=25);
return 0;
}
/*------------------------------------------------------------------------------------
------------------------------------------------------------------------------------*/
void pulpit()
{
std::cout << std::endl;
std::cout << "_______________________________" << std::endl;
std::cout << "| |" << std::endl;
std::cout << "| * * |" << std::endl;
std::cout << "| * * |" << std::endl;
std::cout << "| * * * |" << std::endl;
std::cout << "| * * * * |" << std::endl;
std::cout << "| ** ** |" << std::endl;
std::cout << "|_____________________________|" << std::endl;
std::cout << " Napisz program rysowania znakiem ASCII ponizszej figury." << std::endl;
std::cout << " Program powinien umozliwic : " << std::endl;
std::cout << std::endl;
std::cout << " - wybor znaku ASCII;" << std::endl;
std::cout << " - Wszytanie poczatkowych rozmiarow figury;" << std::endl;
std::cout << " - przesuwanie figury klawiszami strzalek;" << std::endl;
std::cout << " - powiekszanie oraz zmniejszanie rozmiaru figury za pomoca klawiszy + i -;" << std::endl;
std::cout << " - ograniczenie przesuwania i rozmiarow figury do obszaru ekranu;" << std::endl;
_getch();
}
/*------------------------------------------------------------------------------------
------------------------------------------------------------------------------------*/
int wherex()
{
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
return csbi.dwCursorPosition.X;
}
/*------------------------------------------------------------------------------------
------------------------------------------------------------------------------------*/
int wherey()
{
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
return csbi.dwCursorPosition.Y;
}
/*------------------------------------------------------------------------------------
------------------------------------------------------------------------------------*/
void gotoxy(int x, int y)
{
COORD c;
c.X = x - 1;
c.Y = y - 1;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}
/*------------------------------------------------------------------------------------
------------------------------------------------------------------------------------*/
void clreol()
{
int x, y;
x = wherex();
y = wherey();
gotoxy(x,y);
for (int i =x; i<=79; i++)
cout << " ";
gotoxy(x, y);}
/*------------------------------------------------------------------------------------
------------------------------------------------------------------------------------*/
int dane(int rozmiar)
{
char znak;
system("cls");
label:
if(rozmiar < 3 || rozmiar > 20 ){
std::cout << "podales zle dane, podaj jeszcze raz" << std::endl;
getch();
goto label;
}
return rozmiar;
}
/*------------------------------------------------------------------------------------
------------------------------------------------------------------------------------*/
void rysunek(char znak, int rozmiar){
system("cls"); //wyczyszczenie konsoli
char ch; //zainicjowanie zmiennej ch - znak, ktory potem bedzie sluzyl od sterowania
for(int i=0;i<120;i++){ // zadeklarowanie szerokosci terminala na 120
std::cout << " ";
}
int x=60,y=15; // ustawienie "poczatku" na srodku
label: //punkt kontrolny label
system("cls"); //wyczyszczenie konsoli
gotoxy(x,y); //ustawienie kursora na pozycji
std::cout << znak; //narysowanie znaku na srodku
for(int i=1;i<rozmiar;i++)
{ //rysowanie znakow w trzy pozostale strony
/*gotoxy(x-i,y+i); //przejscie do wspolrzednych "w lewo i w dol"
std::cout << znak; //narysowanie znaku
gotoxy(x-i,y-i); //przejscie do wspolrzednych "w lewo i w gore"
std::cout << znak; //narysowanie znaku
gotoxy(x+i,y-i); //przejscie do wspolrzednych "w prawo i w gore"
std::cout << znak; //narysowanie znaku*/
gotoxy(x-i,y+i);
std::cout << znak;
gotoxy(x+i,y+i);
std::cout << znak;
gotoxy(x-rozmiar,y-rozmiar+i);
std::cout << znak;
gotoxy(x+rozmiar,y-rozmiar+i);
std::cout << znak;
gotoxy(x-rozmiar,y+rozmiar-i);
std::cout << znak;
gotoxy(x+rozmiar,y+rozmiar-i);
std::cout << znak;
gotoxy(x-rozmiar,y);
std::cout << znak;
gotoxy(x+rozmiar,y);
std::cout << znak;
}
ch=getch(); //pobranie "kierunku" w ktory ma sie przesunac rysunek
switch(ch)
{
case 43: rozmiar++;
break;
case 61: rozmiar--;
break; //
case 72: y--; // strzalka w dol
break;
case 80: y++; //strzalka w gore
break;
case 77: x++; //strzalka w prawo
break;
case 75: x--; //strzalka w lewo
break;
case 'q': exit(0); //zakonczenie programu
break;
}
goto label; //przeskoczenie do punktu label
getch();
}
/*------------------------------------------------------------------------------------
------------------------------------------------------------------------------------*/