<div align="center">СВЯЗЬ СДК И ПИТОНА.</div>
<div align="center">(Вызов функций, описанных в СДК, через Питон)</div>
Для того, чтобы вызывать функции, описанные в СДК, через Питон необходимо убедиться, что эти функции описаны в СДК для Питона. Все эти функции лежат во второй части СДК в файлах, начинающихся на Cy. Например (Для класса CvPlayer):
CyPlayer.cpp, CyPlayer.h.
Если эти функции не описаны в этих файлах, то их надо прописать самому.
Для примера попробуем описать функцию AI_getAttitudeVal для Питона, находящуюся в классе CvPlayerAI. Но при этом попробуем создать свою функцию в классе CvPlayer (т.к. класс CvPlayerAI в Питон не передается). Если бы мы сразу хотели передать эту функцию, то ее пришлось бы описывать в файле CvPlayer.h таким образом:
Код:
virtual int AI_getAttitudeVal(PlayerTypes ePlayer, bool bForced = true) = 0;
Что вызывает вылет программы (системная ошибка)
Так что нам приходится создавать свою функцию. Мы ее прописываем так:
Код:
int getAttitudeVal(PlayerTypes ePlayer, PlayerTypes ePlayerHuman);
Флаг bForsed опускаем, но добавляем второго игрока, так как отношения проверяются между двумя игроками. (в этом то и была ошибка в первой редакции).
После этого прописываем эту функцию в файле Cyplayer.h. Здесь надо ее прописать также, как она была прописана в файле CvPlayer.h, только тип PlayerTypes надо заменить на int:
Код:
int getAttitudeVal(int /*PlayerTypes*/ ePlayer, int /*PlayerTypes*/ ePlayerHuman);
Далее создаем функцию getAttitudeVal в файле CvPlayer.cpp
[code]
int CvPlayer::getAttitudeVal(PlayerTypes ePlayer, PlayerTypes ePlayerHuman)
{