Содержание
- 2. Стратегия игры Фишки игроков должны обозначаться символами 0 и Х, которые выровнены по центру в занятых
- 3. Стратегия игры Кроме того, должна быть предусмотрена установка начальной позиции с произвольным расположением фишек на игровом
- 4. пример возможного расположения фишек на игровом поле с размерами (16х4) Указанные размеры таблицы устанавливаются по умолчанию
- 5. Структура программы Исходный код программы Норкотта (xpat) разделяется на два модуля для реализации графического интерфейса игры
- 6. Иерархическая структура функций управления
- 7. Графический модуль (xpat0) Исходный текст графического модуля (xpat0) начинает подключение стандартных заголовков базовой Х графики, графических
- 8. статические переменные Для передачи графических данных между прикладными функциями модуля вводятся следующие внешние статические переменные: static
- 9. Внешние статические переменные Кроме того, вводятся следующие внешние статические переменные для разделяемых игровых данных: static unsigned
- 10. Передача их адресов в графический модуль Передача их адресов в графический модуль осуществляется через параметры вызова
- 11. Инициализация графических и разделяемых игровых данных Для инициализации графических и разделяемых игровых данных вызывается функция настройки
- 12. Исходный код функции xcustom Исходный код рассмотренной функции xcustom для перечисленных настроек имеет следующий вид: /*
- 13. Модуль расчета геометрии ячеек /* Расчет геометрии ячеек литер фишек */ fn = XLoadQueryFont(dpy, "9x15"); /*
- 14. Исходный код настройки графических контекстов /* Настройка графических контекстов */ root = DefaultRootWindow(dpy); /* корневое окно
- 15. Исходный код настройки игрового окна /* Настройка игрового окна программы */ attr.override_redirect = False; /* WM
- 16. Параметры оконного менеджера /* Геометрические рекомендации оконного менеджера */ hint.flags = (PMinSize | PMaxSize | PPosition);
- 17. Параметры подокон рядов клеток /* Настройка подокон рядов клеток */ amask = CWOverrideRedirect | CWBackPixel |
- 18. Параметры окон клеток /* Настройка окон клеток */ amask = CWOverrideRedirect | CWBackPixel | CWEventMask; attr.override_redirect
- 19. Отображение окон на экране /* Отображение всех окон на экране */ XMapWindow(dpy, desk); XMapSubwindows(dpy, desk); for(i
- 20. Функция циклической обработки событий После начальных установок, распределений и настроек вызывается прикладная функция dispatch для обслуживания
- 21. Исходный код функции dishatch() int dispatch() { /* Диспетчер событий */ XEvent event; /* структура событий
- 22. Функция перерисовки литерных клеток Функция rebox вызывается диспетчером событий dispatch для перерисовки литер фишек в окнах
- 23. Графическое обслуживание ходов партии Функция reset обеспечивает графическое обслуживание ходов партии или корректировку позиции фишек по
- 24. Исходный код функции игры /* Ход игры или корректировка позиций */ int reset(XEvent* ev) { int
- 25. Прерывание партии игры Функцию refuse вызывает диспетчер событий dispatch для обработки клавиатурных событий от нажатия клавиш
- 26. Исходный код функции refuse() /* Прерывание партии игры */ int refuse(XEvent* ev) { KeySym ks =
- 27. Реализация перестановки литеры фишки в требуемую позицию Различные игровые функции, которые вызываются в альтернативах цикла обработки
- 28. Исходный код функции repos() Исходный код рассмотренной перестановки и перерисовки фишек имеет следующий вид: int repos(int
- 29. Основная функция main() Спецификации графического модуля завершает исходный код основной функции main. В его начале по
- 30. Исходный код основной функции /* Основная функция */ int main(int argc, char* argv[]) { if(argc fprintf(stderr,
- 31. Функции игрового модуля для реализации игровых действий без графических запросов Исходный текст игрового модуля (xpat1) начинается
- 32. Исходный код перечисленных передаточных и распределительных действий функции alloc Чтобы адресовать перечисленные массивы в графический модуль,
- 33. Продолжение исходного кода функции alloc for(i = 0; i b[i] = calloc(NX, sizeof(unsigned long)); /* клетки
- 34. Освобождение распределенной памяти разделяемых массивов рядов Чтобы освободить распределенную память разделяемых массивов рядов, клеток и фишек
- 35. Функции модуля, непосредственно обеспечивающие реализацию игровых партий Функции alloc и dealloc обслуживают доступ к игровым данным,
- 36. Графические функции для ходов партии или корректировки позиции Функцию restore вызывает функция refuse графического модуля по
- 37. Исходный код, реализующий действие функции remark Следующий исходный код реализует действие функции remark. int remark(int i,
- 38. Реализация выигрышного ответа фишкой Самой важной для организации игры является функция nim. Она реализует выигрышный ответ
- 39. Выигрышный ход для фишки m по стратегии NIMM /* Исходный код выигрышного хода для фишки m
- 40. Продолжение исходного кода выигрышного хода для фишки m по стратегии NIMM for(i = 0; i if((d
- 41. Если в позиции партии нет выигрышного ответа фишкой с заданным индексом, вызывается функция lose, чтобы сделать
- 42. Вынужденный ответ фишкой m /* Исходный код реализации вынужденного ответа фишкой m */ int lose(int m)
- 43. Функции проверки патовой позиции lpat и rpat Спецификации игрового модуля завершает исходный код функций проверки патовой
- 44. Проверка левого пата в функции lpat Следующий исходный код реализует рассмотренную проверку левого пата в функции
- 45. Проверка правого пата в функции rpat Функция rpat для проверки пата правых фишек (Х) устроена аналогично
- 47. Скачать презентацию