Сегодня на повестке дня у нас одна тривиальная задача, которая будет решена почти что шаблонным методом. Предпоследняя лабораторная работа по операционным системам это программирование с реализацией процедур через потоки. Все будет просто.
Первый поток будет отвечать за рисование крестика, второй поток - нолики. А третий поток - будет организовывать сам процесс игры.
Объявляем потоки. 1ый 2ой 3ий, готово. Теперь надо описать, что эти потоки будут делать. Все это будет описано в разделе implementation и заканчиваться до строки с знаком {$R.dfm}
Ещё ко всему сказанному хочу добавить, что все это мы потом сделаем в ООП, но это немного погодя…
Напишем ещё одну процедуру, которая будет просто по факту рисовать, в зависимости от в входных данных крестик\нолик. Целесообразность этого мероприятия будет в том, что эта процедура будет вызываться 2 раза. Все в целях оптимизации…
Далее
Пишем третий поток. Тут становится небольшая дилемма выбора, как именно организовать работу 3го потока, тактику, по которой будет играть компьютер с компьютером.
Чтож, немного пораскинем мозгами. Думаю будет лучше так:
1.Сначала надо определить, как именно компьютер будет определять где именно ставить знак. Думаю перво наперво будем запускать поток, потом, после того как он будет выполняться (рисовать фигуру) потом, после каждой нарисованной фигуры мы будем просто проверять:
….сска синий экран смерти опять на XP. Перезагрузка….продолжаем.
Займемся кодом.
Так, все работает, почти исправно. Осталось только немного отладить работу потока и внести условия, которое будет проверять кто победил.
Что то все равно, программа работает нестабильно, либо я как то некорректно работаю с потоками, либо в памяти остается ещё что то, что не дает чисто работать.
Все, с работой потоков разобрался. Корректная работа налажена. Завтра с утра допишу условие.
Победа за нами.