Попытка написать игру ханойские башни |
Попытка написать игру ханойские башни |
Zveruga |
20.11.2007 3:48
Сообщение
#1
|
|||
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Рома Репутация: 0 |
Привет, Всем
Пытаюсь написать игру ханойские башни для сдачи курсовой (заочник) знаний пока не хватает, но тем что есть пытаюсь воспользоваться Алгоритм такой: Все пастроенно на массиве N строк и 3 столбца, далее этот массив заполняется так: 1 0 0 2 0 0 ....... N 0 0 далее нажатиями клавиш я перезаполняю массив по принципу ханойской башни. В результате добавлю гафическое отображение всех этих действий. диски будут привязаны к элементам массива, строкам и столбцам. Вообщем пока не доработанно из за ожного сбоя. Внимание вопрос: вот исходник алгоритма заполнения матрици.
Как сделю все полностью закончу вывложу полный исходник может кому пригодится
|
|||
volvo |
20.11.2007 9:33
Сообщение
#2
|
Гость |
Цитата Как сделю все полностью закончу вывложу полный исходник может кому пригодится Четвертый-то? Вообще-то в FAQ-е лежит 3 программы "Ханойские башни", это так, на всякий случай, для любителей вечно изобретать велосипеды... |
Zveruga |
20.11.2007 10:20
Сообщение
#3
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Рома Репутация: 0 |
Четвертый-то? Вообще-то в FAQ-е лежит 3 программы "Ханойские башни", это так, на всякий случай, для любителей вечно изобретать велосипеды... Я не любитель изобретать велосипед, но когда темы к курсовым работам всегда одни и теже деваться не куда, а если брать чье-то решение не всегда оканчивается хорошо Гораздо приятнее сделать что-то самому, чем брать уже готовое решение Будет 4-ый экземпляр, что в этом плохого? и проблема вот в этом принажамтии клавиши вверх "а" присваевается знаяение элемента матрици вот тут то и проблема, привыборе второго столбца, в нем все элементы "0", "а" присваевается значение 10, привыборе третьего столбца "а" присваевается значение 3 откуда эти значения беруться я вообще понять не могу помогите пожалуйста разобраться в принципе из за этого графическое представление всего этого действия и остановилось Сообщение отредактировано: Zveruga - 20.11.2007 10:22 |
Lapp |
20.11.2007 14:24
Сообщение
#4
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Будет 4-ый экземпляр, что в этом плохого? Для начала, несколько общих замечаний. 1. Научись форматировать. Я минут пять провел в двиганьи твоих строк туда-сюда, прежде чем программа приобрела нормальный вид. 2. Используй оператор case, во многих случаях это проясняет программу. Например, твое: if (key='q') or (key='Q') then stop:=true;- все можно заменить на такую конструкцию: case key of 3. Оператор repeat ... until сам по себе представляет операторные скобки, begin и end внутри него не нужны. 4. Вместо Stop=false рекомендую писать not Stop. 5. Выводи чуть больше пояснений. Когда прога останавливается молча - непонятно, что жать.. Теперь по твоей проблеме. В том блоке, который ты пытался выделить жирным (я исправил, никогда больше не делай так в программном тексте), есть явная ошибка. Ты проверяешь условие на элемент матрицы, но НЕ проверяешь индекс. Поэтому ты легко выскакиваешь за пределы массива. Если у тебя включена опция Range Check, то это приведет к ошибке, а если не включена - то к непредсказуемому поведению проги (что, как я понимаю, и случилось). Рекомендую держать Range Check включенным на этапе отладки. Исправь и приноси новый вариант программы. Будем разбираться дальше . -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Atos |
20.11.2007 15:00
Сообщение
#5
|
Прогрессор Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: 9 |
Цитата вот тут то и проблема, привыборе второго столбца, в нем все элементы "0", а вот этот цикл как раз и предполагает, что в столбце найдётся хотя бы один положительный элемент
Таких элементов нет, поэтому происходит выход за границы массива |
Zveruga |
21.11.2007 3:23
Сообщение
#6
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Рома Репутация: 0 |
Спасибо за ответы
Все замечания учел Вроде стало получаться. Действительно промаргал момент в цикле выбора значения при нажатии клавиши вверх По поводу case, я так понял этот оператор можно использовать только для значищих клавиш на клавиатуре, а для клавиш управления его использовать нельзя. Работаю дальше над программой З.Ы. Прошу прощения за долгие ответы. Из за разници во времяни не могу быстро отвечать. |
Lapp |
21.11.2007 5:12
Сообщение
#7
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
а для клавиш управления его использовать нельзя Почему же? Вот, например, самый простой вариант обработчика нажатий клавиш..if KeyPressed then begin -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Zveruga |
27.06.2008 3:15
Сообщение
#8
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Рома Репутация: 0 |
Прошу прощение за ДОООЛГИЙ ответ ну лучше поздно чем ни когда. Работа откладывает свой отпечаток Выставляю на суд код игры "Ханойская башня", как обещал
Может это не самый лучший вариант, но все таки сделал сам, но с вашей помощью! Спасибо всем кто откликнулся program nb3; P.S. За курсовик получил оценку хорошо |
Текстовая версия | 29.04.2024 0:18 |