Помощь - Поиск - Пользователи - Календарь
Полная версия: Шашки
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
Denc2005
Здравствуйте Уважаемые Форумчани!
Я делаю курсовую «Шашки». У меня возникла одна проблема: ход белыми совершается по всем правилам, а вот черные совсем не ходят (функция не разрешает ходить, а все вроде сделано, так же как и для белых). Я отметил место, в коде, где возникает ошибка, помогите исправить smile.gif

Lapp
Denc2005, ну ты там наворотил.. smile.gif
Если сам сделал - уважаю твое усердие, но только так программировать не надо. Зачем делать два набора практически одинаковых процедур? Зачем доску делать в два раза больше?.. Как ты сам там не путаешься - ума не приложу..

Теперь по делу. В отмеченной тобой строке ты вызываешь MoveFrom2 с параметром Player, и это правильно. Но дальше во всех процедурах по цепочке ты почему-то передаешь Player2 (непонятно, зачем он вообще нужен). Я исправил все вызовы и смог поиграть даже (интерфейс красивый, респект! smile.gif) - сходил, съел пару белых..

Вот исправленный код, на всяк случай. Форматирование в нем не ахти, но спасибо, что хоть такое есть, иначе бы я вообще утоп.. smile.gif. И еще одно: для циклов используй локальные переменные.
Успехов тебе!
ps
а почему называется "крестики"? blink.gif

Нажмите для просмотра прикрепленного файла

М
Прикрепляю программу отдельным файлом. Слишком большой программный текст непосредственно в сообщении вызывает слишком большую задержку при просмотре сообщения, особенно на не очень сильных компьютерах.
Lapp

Denc2005
Lapp, Спасибо тебе большое, даже огромное! good.gif Как я мог этого не заметить, глупая ошибка(из-за которой я перерыл пол программы), Player2 (это второй игрок, а когда он передается в процедуру, становится просто Player). smile.gif
С практически одинаковыми процедурами сделать было быстрее…А вы советуете сделать в одной процедуре или функции две? Так же как сделаны Analise и Play?(опять же это простое копирование кода с небольшими поправками)! На счет поля: Оно не в два раза больше, а просто 10х10, у меня такое условие.
А вот форматировать текст я не умею, вы не могли бы подсказать правила форматирования?
А какие переменные надо сделать локальными ?

Еще раз спасибо! yes2.gif

PS
Кодовое имя "крестики"! Сначала я хотел сделать их lol.gif
Lapp
> Как я мог этого не заметить, глупая ошибка
> (из-за которой я перерыл пол программы),
А ты дебаггером пользушься? С ним такие вещи отлавливаются легко.

> С практически одинаковыми процедурами сделать было быстрее…
Сначала - быстрее, а потом - запутаешься, и получится медленнее..

> А вы советуете сделать в одной процедуре или функции две?
Нет, ну процедуры для разных игроков отличаются знаком по y. Передавай множитель (1 или -1) в параметрах - вот и все!

> На счет поля: Оно не в два раза больше, а просто 10х10, у меня такое условие.
Шашки стоклеточные, это понятно. А зачем тебе края? у тебя же массив от -3 до 14. Я не вдавался, зачем это нужно, но уверен, что этого можно избежать, одновременно упростив программу..

> А вот форматировать текст я не умею,
> вы не могли бы подсказать правила форматирования?
Как-нить в следующий раз smile.gif

> А какие переменные надо сделать локальными ?
У тебя счетчики циклов for в процедурах являются полями записей, объявленных в головной программе.. Это совершенно ненормально. Для этих целей нужно объявлять обычные целые переменные в самой процедуре.

Успехов! smile.gif
Виталик
чувак просто перебил чей-то курсач, там еще была игра против компьютера, вот оттуда и вылез player2 smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.