Форум программистов, компьютерный форум CyberForum.ru

Класс который рисует на экране звезду - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не могу понять, как пользоваться методами http://www.cyberforum.ru/cpp-beginners/thread16667.html
:help:Не могу разобраться с классами, помогите кто может! Я понимаю зачем нужен класс, и разницу открытых и закрытых данных, но не могу понять как пользоваться методами. подскажите где можно найти статьи в которых все разложено по полочкам или так объясните. Пожалуйста!
C++ Ввод нескольких длинных чисел в одну строчку Так, люди, вот такой вопросик: Вот написал я такой классик длинного числа: class BigInt { int len; short a; short znak; public: BigInt(long t = 0); http://www.cyberforum.ru/cpp-beginners/thread16662.html
C++ Обработка структуры через функцию
подскажите пожулуйста как реализовать обработку структуры через функцию. Нужно написать функцию поиска ( и вывода на экран ) параметра num. Прогу сделал (а с функциями не получается): #include <iostream> #include <string> using namespace std; void main() { struct medik { int birthyear;
C++ Пусть даны два файла целых чисел
Тут задали следующее, кто знает напишите код программ плиз: 1. Пусть даны два файла целых чисел. Определить, больше ли минимальное значение первого файла, чем максимальное значение второго. 2. Пусть дан текстовый файл. Распечатайте все строки, начинающиеся заданным словом.:)
C++ Подсчёт количества элементов в файле http://www.cyberforum.ru/cpp-beginners/thread16607.html
Как сделать, чтобы программа подсчитала количество элементов в файле? Например, нужно поместить содержимое файла в массив. Если знать количество элементов, можно реализовать так: FILE *fin; if ((fin = fopen("input.txt", "rt")) != NULL) { for (i=0;i<n;i++) fscanf (fin,"%d",&mas); }
C++ обработка строки указателями с++ С клавиатуры вводится стока из нескольних слов, разделёнными пробелами. При помощи указателей удалить все повторяющиеся друг за друго слова. Например: Ввели: mom mom kom tom tom mom Получили: mom kom tom mom Помогите с алгоритмом? Дополнительную строку создавать нельзя. подробнее

Показать сообщение отдельно
Devil_Hell
13 / 13 / 1
Регистрация: 23.09.2008
Сообщений: 33

Класс который рисует на экране звезду - C++

24.11.2008, 20:29. Просмотров 995. Ответов 2
Метки (Все метки)

Помогите исправить ошибку. Нужно создать класс которорый рисует на экране звезду. Класс написал и все работало, но надо сделать наследование. В одной задаче сделал, но тут не получается. Помогите. Может что не правильно пишу.
вот код
Код
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
#include <graphics.h>
#include <string.h>

// Объявление глобальных переменных
 int n,l,Radius,h,w,werh,k;    //объявление переменной
 int koordinat [22];
 int poly[22]= { 196, 1,       //вершины
		224, 68,
		292, 68,
		240, 113,
		264, 180,
		196, 140,
		129, 180,
		156, 112,
		101, 68,
		169, 68,
		196, 1
	      };



//класс фигура
class Figure
{
protected:
  int Color;
  int CenterX;
  int CenterY;

public:
  Figure(int iCenterX, int iCenterY)
  {
    Color = RED;
    CenterX = iCenterX;
    CenterY = iCenterY;
  }
  void SetNewColor(int NewColor)
  {
    Hide();
    Color=NewColor;
    Show();
  }
  virtual void Show() = 0;
  virtual void Hide()
  {
    int prev_col = Color;
    Color=getbkcolor();
    Show();
    Color = prev_col;
  }
  void Move(int DeltaX, int DeltaY)
  {
    Hide();
    CenterX+=DeltaX;
    CenterY+=DeltaY;
    Show();
  }
  virtual ~Figure()
  {};
};


class Mnogoug: public Figure
{
private:
int k;
int iCenterY;
public:
 Mnogoug (int iCenterX, int koor[22]) :
 Figure(iCenterX, iCenterY)
{
 werh = iCenterX;
// for (i=0; i<22; i++);
 koordinat[22] = koor[22];
 }
 void Show();

};

void Mnogoug::Show()
{
 drawpoly (werh,koordinat);
// Show();
}



//класс окружность
class Circle: public Figure
{
private:
public:
  Circle(int iCenterX, int iCenterY, int iRadius) :
    Figure(iCenterX, iCenterY)
  {
     Radius = iRadius;
  }
  void Show();
};

// класс прямоугольник
class Rectangle: public Figure
{
private:
public:
  Rectangle(int iCenterX, int iCenterY, int ih, int iw) :
    Figure(iCenterX, iCenterY)
  {
       h = ih;
       w = iw;
  }
  void Show();
};

// класс сообщение
class Message: public Figure
{
private:
  char* String;
public:
  Message(int iCenterX, int iCenterY, char* Msg) :
    Figure(iCenterX, iCenterY)
  {
     String = new char [strlen(Msg)+1];
     strcpy(String, Msg);
  }
  void Show();
  ~Message()
  {
     delete String;
  }
};

//методы окружности
void Circle::Show()
{
  circle(CenterX, CenterY, Radius);
}

// метеды прямоугольника
void Rectangle::Show()
{
  rectangle(CenterX, CenterY, CenterX+w, CenterY+h);
}

// метод сообщение
void Message::Show()
{
  outtextxy(CenterX, CenterY, String);
}

/*---------------------------------------------------*/



void main()
{
  // инициализация графики
   int gdriver = DETECT, gmode, errorcode;
  initgraph(&gdriver, &gmode,"c:\\work\\tc\\bgi");
  errorcode = graphresult();
  if (errorcode != grOk)
  {
     cerr<<"Graphics error";
     cerr<<grapherrormsg(errorcode);
     exit(1);
  }
 restorecrtmode(); //временный переход в тестовый режим.
 for (int k=0; k<22; k++)
  koordinat [k] = poly[k];

 do{ //цикл для повтора программы
   do {      //начало цикла с постусловием вывода меню
    clrscr(); //очистка экрана
       cout << "Выбирете фигуру\n";      //создание меню
       cout << "1 - Прямоугольник\n";
       cout << "2 - Окружность\n";
       cout << "3 - Текст\n";
       cout << "4 - Звезда \n";
       cout << "5 - Выход\n";
       cin >> n;    //считавание выбранного пункта

  }while (n>5);    //конец цикла для вывода меню
 setgraphmode(gmode); //возврат в гарфический режим
 switch(n)  //опетатор выбора
 {           //открытие операторной скобки
  case 1:  {
	      Rectangle F2(20,20,100,100); //передача параметров в класс
	      F2.Show();		   //вызов метода класса
	   }
	  break;    			   //закрытие первого варанта выбора
  case 2:  {
	      Circle F1(145,100,70);	   //передача параметров в класс
	      F1.Show();		   //вызов метода класса
	   }
	  break;
  case 3:  {
	      Message F3(100,50, "Проект на СИ++ Кащеева Алексея гр. ЗЭВМ - 106");
	      F3.Show();
	   }
	  break;
  case 4: {   Mnogoug F4(11,poly);
	      F4.Show();
	  }break;
  case 5: exit(1); break;
 };                         //закрытие операторы выбора
 getch();   //задержка в программе, что бы видеть изображение на экране
 restorecrtmode(); //временный переход в текстовый режим
 }while (n<5); // Цикл для провтора программы.
 closegraph(); // закрытие графического режима
}              //операторная скобка закрытия программы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru