Шашки, Проблема с ходом черных |
Шашки, Проблема с ходом черных |
Denc2005 |
4.05.2007 21:17
Сообщение
#1
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: 0 |
Здравствуйте Уважаемые Форумчани!
Я делаю курсовую «Шашки». У меня возникла одна проблема: ход белыми совершается по всем правилам, а вот черные совсем не ходят (функция не разрешает ходить, а все вроде сделано, так же как и для белых). Я отметил место, в коде, где возникает ошибка, помогите исправить Прикрепленные файлы KRECTIKI4b.pas ( 29.45 килобайт ) Кол-во скачиваний: 331 |
Lapp |
5.05.2007 6:41
Сообщение
#2
|
|||
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Denc2005, ну ты там наворотил..
Если сам сделал - уважаю твое усердие, но только так программировать не надо. Зачем делать два набора практически одинаковых процедур? Зачем доску делать в два раза больше?.. Как ты сам там не путаешься - ума не приложу.. Теперь по делу. В отмеченной тобой строке ты вызываешь MoveFrom2 с параметром Player, и это правильно. Но дальше во всех процедурах по цепочке ты почему-то передаешь Player2 (непонятно, зачем он вообще нужен). Я исправил все вызовы и смог поиграть даже (интерфейс красивый, респект! ) - сходил, съел пару белых.. Вот исправленный код, на всяк случай. Форматирование в нем не ахти, но спасибо, что хоть такое есть, иначе бы я вообще утоп.. . И еще одно: для циклов используй локальные переменные. Успехов тебе! ps а почему называется "крестики"? checkers.pas ( 29.48 килобайт ) Кол-во скачиваний: 808
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
|||
Denc2005 |
5.05.2007 10:59
Сообщение
#3
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: 0 |
Lapp, Спасибо тебе большое, даже огромное! Как я мог этого не заметить, глупая ошибка(из-за которой я перерыл пол программы), Player2 (это второй игрок, а когда он передается в процедуру, становится просто Player).
С практически одинаковыми процедурами сделать было быстрее…А вы советуете сделать в одной процедуре или функции две? Так же как сделаны Analise и Play?(опять же это простое копирование кода с небольшими поправками)! На счет поля: Оно не в два раза больше, а просто 10х10, у меня такое условие. А вот форматировать текст я не умею, вы не могли бы подсказать правила форматирования? А какие переменные надо сделать локальными ? Еще раз спасибо! PS Кодовое имя "крестики"! Сначала я хотел сделать их Сообщение отредактировано: Denc2005 - 5.05.2007 11:06 |
Lapp |
5.05.2007 12:21
Сообщение
#4
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
> Как я мог этого не заметить, глупая ошибка
> (из-за которой я перерыл пол программы), А ты дебаггером пользушься? С ним такие вещи отлавливаются легко. > С практически одинаковыми процедурами сделать было быстрее… Сначала - быстрее, а потом - запутаешься, и получится медленнее.. > А вы советуете сделать в одной процедуре или функции две? Нет, ну процедуры для разных игроков отличаются знаком по y. Передавай множитель (1 или -1) в параметрах - вот и все! > На счет поля: Оно не в два раза больше, а просто 10х10, у меня такое условие. Шашки стоклеточные, это понятно. А зачем тебе края? у тебя же массив от -3 до 14. Я не вдавался, зачем это нужно, но уверен, что этого можно избежать, одновременно упростив программу.. > А вот форматировать текст я не умею, > вы не могли бы подсказать правила форматирования? Как-нить в следующий раз > А какие переменные надо сделать локальными ? У тебя счетчики циклов for в процедурах являются полями записей, объявленных в головной программе.. Это совершенно ненормально. Для этих целей нужно объявлять обычные целые переменные в самой процедуре. Успехов! -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Виталик |
16.06.2010 2:10
Сообщение
#5
|
Гость |
чувак просто перебил чей-то курсач, там еще была игра против компьютера, вот оттуда и вылез player2
|
Текстовая версия | 27.04.2024 17:29 |