"Как ни крути, у каждого человека есть в жизни своя вершина. И после того, как он на
нее взобрался, остается только спускаться вниз. Ужасно, но с этим ничего не
поделаешь. Никто ведь не знает заранее, где будет его вершина."
Харуки Мураками Дэнс, дэнс, дэнс
"
Эти животные настолько медлительны, что очень часто застают человека врасплох.
"
"Армия ума не прибавляет, но дурь вышибает."
Армейский фольклор
|
Приветствую вас, уважаемые читатели!
Пришло время немного объясниться :))) Дело в том, что этот затянувшийся перерыв в выпуске рассылки произошёл по банальной причине - я был в армии, если точнее - проходил службу по призыву в ВС РФ. Ну а если быть совсем точным, то я служил на дважды краснознамённом Балтийском Флоте ;-)
Я служил в береговой части, поэтому мы относились к морской пехоте %)
Что сказать - служить весело и интересно 8) Впрочем это конечно зависит от части и командиров. Конечно за время службы было всякое... но это была полезная школа жизни.
"Я не забуду эти годы
И цвет казарменной стены.
Кто в жизни не терял свободы,
Тот не поймёт её цены."
Армейский фольклор
|
Исходники файлов nutrient.h и nutrient.cpp .
//////////////////////////////////////////////////////////////////////
//
// nutrient.h
//
// nutrient class
//
//
// XIII
//////////////////////////////////////////////////////////////////////
#ifndef _NUTRIENT_H_
#define _NUTRIENT_H_
#include "../definitions.h"
#include "organic.h"
class NUTRIENT : virtual public ORGANIC
{
public:
NUTRIENT();
NUTRIENT(Energy);
virtual ~NUTRIENT();
virtual bool read(CFG_FILE);
virtual bool write(CFG_FILE);
void init();
virtual uchar Evolution();
void reset();
Energy get_energy() const;
virtual Energy* get_CellEnergy();
Energy CellEnergy; // energy of cell
};
#endif // #ifndef _NUTRIENT_H_
//////////////////////////////////////////////////////////////////////
//
// nutrient.cpp
//
// nutrient class
//
//
// XIII
//////////////////////////////////////////////////////////////////////
#ifndef _NUTRIENT_CPP_
#define _NUTRIENT_CPP_
#include "nutrient.h"
NUTRIENT::NUTRIENT()
{
init();
CellEnergy=DEFAULT_CELL_ENERGY;
}
NUTRIENT::NUTRIENT(Energy _Energy)
{
init();
CellEnergy=_Energy;
}
NUTRIENT::~NUTRIENT()
{
}
bool NUTRIENT::read(CFG_FILE file)
{
int bytes;
bytes=fread(&CellEnergy,sizeof(Energy),1,file);
if(bytes!=sizeof(Energy))
return false;
return true;
}
bool NUTRIENT::write(CFG_FILE file)
{
int bytes;
bytes=fwrite(&CellEnergy,sizeof(Energy),1,file);
if(bytes!=sizeof(Energy))
return false;
return true;
}
void NUTRIENT::init()
{
id=NUTRIENT_ID;
}
uchar NUTRIENT::Evolution()
{
return 0;
}
void NUTRIENT::reset()
{
CellEnergy=0;
}
Energy NUTRIENT::get_energy() const
{
return CellEnergy;
}
Energy* NUTRIENT::get_CellEnergy()
{
return &CellEnergy;
}
#endif //#ifndef _NUTRIENT_CPP_
|
Итак, после конструкторов идут две виртуальные функции для чтения и записи в конфигурационный файл определение CFG_FILE смотрим в 23-ем выпуске, где приводится definitions.h и там находим следующую строчку:
typedef FILE* CFG_FILE;
там же находим определение типа Energy :
typedef float Energy;
Остальные функции - инициализации, эволюции(пока пустая), сброса, возвращения значения CellEnergy достаточно просты ;)
Таким образом продолжаем знакомиться с построением нашего мира $)
Честь имею!
|