Zdravim,
mám za úkol vytvořit program pro kreslení kružnice. V programu definovat třídu Circle která bude mít konstruktor (bez parametrů), a následující veřejné metody:
● setCentre() nastavující souřadnice kružnice
● setRadius() nastavující poloměr kružnice
● setColor() nastavující číslo barvy kružnice
● printValues() vypisující hodnoty datových členů (souřadnice středu, poloměr, číslo barvy)
● draw() vykreslující kružnici na obrazovku (pomocí knihovny g2)
Ve funkci main() definovat objektovou proměnnou pro kružnici. Potom si program má vyžádat od uživatele souřadnice středu kružnice (v pixelech), poloměr kružnice (v pixelech) a číslo barvy (1, 3, 7, 19 nebo 25). Hodnoty se mají načíst do lokálních proměnných a potom nastavit příslušné hodnoty v objektové proměnné kružnice. Nakonec se zavolá metoda printValues(), která vypíše hodnoty a pak metoda draw(), která vykreslí kružnici.
O něco jsem se pokusila, ale příjde mi, že v tom totálně plavu.. nechápu kontruktory, nechápu jejich význam a vlastně ani to jejich volání funkcí apod.
#include <iostream>
#include <g2.h>
#include <g2_X11.h>
using namespace std;
class Circle
{
public: // Verejne cleny tridy
void setCentre(int ax, int ay);
void setRadius(int r);
void setColor(int c);
int getCentreX();
int getCentreY();
int getRadius();
int getColor();
void printValues();
void draw();
private: // Soukrome cleny tridy
int x, y;
int radius;
int color;
// void printValues();
};
void Circle::printValues()
{
cout << "X:";
cin >> x;
cout << "Y:";
cin >> y;
cout << "R:";
cin >> radius;
cout << "C:";
cin >> color;
cout << "Zadane hodnoty jsou:" << x << " " << y << " " << radius << " " << color;
}
void Circle::draw()
{
int dev = 0;
dev = g2_open_X11(500, 500); // Otevreni okna
g2_set_line_width(dev, 5); // Tloustka cary bude 5 pixelu
g2_pen(dev, color);
g2_circle(dev, x, y, radius);
}
void Circle::setCentre(int ax, int ay) { x = ax; y = ay; }
void Circle::setRadius(int r) { radius = r; }
void Circle::setColor(int c) { color = c; }
int Circle::getCentreX() { return x; }
int Circle::getCentreY() { return y; }
int Circle::getRadius() { return radius; }
int Circle::getColor() {return color;}
void Circle::printValues() { x = ax; y = ay; radius = r; color = c; }
int main()
{
Circle circ;
circ.printValues();
circ.setCentre(ax, ay); // setCentre() je verejna metoda
circ.setRadius(r);
circ.setColor(c);
circ.draw(); // draw() je verejna metoda
cin.get();
cin.get();
return 0;
}
chyby hozené kompilátorem, které nejsem schopna odstranit:
kontbp.cpp:55:6: error: redefinition of ‘void Circle::printValues()’
kontbp.cpp:25:6: error: ‘void Circle::printValues()’ previously defined here
kontbp.cpp: In function ‘int main()’:
kontbp.cpp:62:18: error: ‘ax’ was not declared in this scope
kontbp.cpp:62:22: error: ‘ay’ was not declared in this scope
kontbp.cpp:63:18: error: ‘r’ was not declared in this scope
kontbp.cpp:64:17: error: ‘c’ was not declared in this scope