Доброго времени суток, all.
На днях начал писать мини-движок для игры в шашки/шахматы/нарды/... (в-общем, любые игры, использующие поле). Всё бы ничего, дело продвигалось, но возникла проблема, самостоятельно которую решить у меня так и не получилось.
Код:
// Объявляем свою структуру для игровых объектов со ссылками на предыдущий и следующий
typedef struct CGameObject* GameObjectPtr;
typedef struct CGameObject
{
int x;
int y;
GameObjectPtr prev;
GameObjectPtr next;
} GameObject;
// ----------------------------------
// Сравниваем x и y двух объектов. При совпадении, возвращаем указатель на первый
static GameObjectPtr comparexy(GameObjectPtr go, GameObjectPtr goxy)
{
if((go->x == goxy->x) && (go->y == goxy->y))
{
return go;
}
return NULL;
}
// Собственно, итератор с callback-функцией, принимающей два параметра - текущий объект и дополнительный.
GameObjectPtr iterate(GameObjectPtr begin, GameObjectPtr callback(GameObjectPtr, GameObjectPtr), GameObjectPtr additional)
{
GameObjectPtr gocur = begin, goret = NULL;
while(gocur->next != NULL)
{
gocur = gocur->next;
if((goret = callback(gocur, additional)) != NULL)
{
return goret;
}
}
return NULL;
}
// Функция поиска объекта по его x и y
GameObjectPtr gofindbyxy(GameObjectPtr begin, int x, int y)
{
GameObjectPtr gonew = goalloc(NULL);
gonew->x = x;
gonew->y = y;
return iterate(begin, comparexy, gonew);
}
При вызове gofindbyxy(begin, 1, 1); объекта, который существует он просто не находит. :(
Не знаю, где собака порылась, не могу найти ошибку, если надо могу привести код аллокатора и деструктора.
---
С Уважением,
Ответ на:
комментарий
от koTuk

Ответ на:
комментарий
от Jini

Ответ на:
комментарий
от BuG2BuG

Ответ на:
комментарий
от BuG2BuG

Ответ на:
комментарий
от BuG2BuG

Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от BuG2BuG
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Ищу лаконичную реализацию range-based итераторов (2018)
- Форум Обещаный код с ошибкой __int_malloc (2004)
- Форум Написание функции, принимающей структуры разного типа (2013)
- Форум Занимательный PAS2C (2017)
- Форум Обёртка над Posix Timers (2016)
- Форум Сравнение производительности доступа к полям структур в Python, Common Lisp и С++ (2017)
- Форум вызов generic_make_request из обработчика запросов блочного устройства (2019)
- Форум block device driver: не работает чтение (2024)
- Форум Красивая реализация списков (2010)
- Форум [С/C++] Очистка данных после memcpy (2012)