Задача "Ход конем", помогите закончить |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Задача "Ход конем", помогите закончить |
leahov |
3.06.2006 7:23
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Мужской Реальное имя: leahov Репутация: 0 |
Даны две литеры - латинская буква (от a до h) и цифра (от 1 до восьми). Рассматривая их как координаты поля шахматной доски, на котором находится конь, нарисовать шахматную доску, пометив крестиками все поля, которые «бьет» этот конь, и ноликами все остальные.
шахматку нарисовал - вот код Program zadacha1; Помогите закончить задание Есть мысля как её закончить - изначально все поля сделать с нулями, а потом просто расставить под ход коня единички, одна загвоздка - не получается реализовать этот план. Может это и не правильно, но это по моему один из простых вариантов |
RaV |
3.06.2006 8:08
Сообщение
#2
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Владимир Репутация: 0 |
Конь ходит буквой "Г".
Значит надо просто вычислить координаты клеток на которые может встать конь. Всего есть максимум 8 вариантов, если он не у края доски. Я так понимаю координаты коня вводит пользователь. остаеться только вычислить его возможные ходы. |
leahov |
3.06.2006 8:29
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Мужской Реальное имя: leahov Репутация: 0 |
RaV в задании написано просто пометить крестиками все поля, которые «бьет» этот конь. Мне кажется надо просто вывести на экран шахматку с уже помеченными крестиками и ноликами.
Цитата Всего есть максимум 8 вариантов, если он не у края доски. А почему 8, я их штук 40 насчитал |
RaV |
3.06.2006 8:45
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Владимир Репутация: 0 |
А как ты считал?
Я понимаю что он может сделать только один ход, и он может встать на 8 разных клеток. Сообщение отредактировано: RaV - 3.06.2006 8:51 |
leahov |
3.06.2006 8:53
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Мужской Реальное имя: leahov Репутация: 0 |
я просто брал коня и ходил им по полю буквой Г, или я не понял задания? там вроде написано пометить все поля которые бьет конь
|
RaV |
3.06.2006 9:01
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Владимир Репутация: 0 |
Я думаю что так не правильно.А то так можно всю доску обойти.
Цитата Даны две литеры - латинская буква (от a до h) и цифра (от 1 до восьми). Рассматривая их как координаты поля шахматной доски, на котором находится конь нарисовать шахматную доску, пометив крестиками все поля, которые «бьет» этот конь, и ноликами все остальные. Тут сказано, что есть координаты коня.Далее имеется ввиду,на какие клетки сможет встать конь. надо их вичислить и пометить на доске.Это и будут все поля ,которые "бьет" конь. Сообщение отредактировано: RaV - 3.06.2006 9:04 |
Lapp |
3.06.2006 9:04
Сообщение
#7
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Я немного причесал твою прогу, изменений вносить не стал (хотя руки чесались.. ).
Вставил код, который рисует кресты (мои вставки помечены строчками комментов со звездочками) - надеюсь, разберешься.. Program zadacha1; P.S. Цифровая нумерация у тебя неправильная (сверху вниз) -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
leahov |
3.06.2006 9:10
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Мужской Реальное имя: leahov Репутация: 0 |
я так всю доску и обошел
то есть я так понимаю надо задать двумерный массив изначально заполненный нулями, каждому его элементу будет соответствовать поле шахматной доски. (1, 1) - A1, (2,2) -B2, (1,8) - A8. Проблема в том что я не знаю как привязать координаты к шахматной доске. Я не волшебник ,я только учусь |
leahov |
3.06.2006 9:25
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Мужской Реальное имя: leahov Репутация: 0 |
lapp спасибо, сейчас попробую нули ставить
|
Lapp |
3.06.2006 9:50
Сообщение
#10
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
lapp спасибо, сейчас попробую нули ставить Давай, вставляй. Для этого просто добавь else в мой if и рисуй кружочки. Но вообще - подумай над переделкой. 1. Не тащи 50 через всю прогу - сделай константу (скажем, a) и используй ее. 2. Закрашивание клеток белым цветом делай в первом же цикле (используй Bar вместо Rectangle, но рисуй только те клетки, у которых выполнено условие Odd(n*m) ), а цикл с FloodFill убери совсем. 3. Продумай нормальную адресацию клеток, можно сделать и буквенную .... остальное потом.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
leahov |
3.06.2006 10:15
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Мужской Реальное имя: leahov Репутация: 0 |
а кружки через Ellipse рисовать?
|
Lapp |
3.06.2006 10:23
Сообщение
#12
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
а кружки через Ellipse рисовать? Ну зачем же? используй Circle Цитата Procedure Circle (X, Y: Integer; R: word) Рисует окружность радиуса R, используя X,Y как координаты центра -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Malice |
3.06.2006 10:32
Сообщение
#13
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
|
leahov |
3.06.2006 10:43
Сообщение
#14
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Мужской Реальное имя: leahov Репутация: 0 |
lapp извини за мою тупость , но куда эту процедуру засунуть?
|
RaV |
3.06.2006 11:05
Сообщение
#15
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Владимир Репутация: 0 |
Вот сюда :
Сообщение отредактировано: volvo - 2.11.2006 14:58 |
leahov |
3.06.2006 11:16
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Мужской Реальное имя: leahov Репутация: 0 |
Circle (X, Y: Integer; R: word) R-50 X,Y - это мои n и m? Сообщение отредактировано: volvo - 2.11.2006 14:58 |
leahov |
3.06.2006 11:27
Сообщение
#17
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Мужской Реальное имя: leahov Репутация: 0 |
если да - то она выдает ошибку на двоеточие после Y
Сообщение отредактировано: leahov - 3.06.2006 11:28 |
RaV |
3.06.2006 11:27
Сообщение
#18
|
Новичок Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Владимир Репутация: 0 |
X и Y - центр твоей клетки
|
Lapp |
3.06.2006 11:27
Сообщение
#19
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
2 Malice: спасибо, конечно +.
Circle (X, Y: Integer; R: word) R-50 X,Y - это мои n и m? {**************************} -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
leahov |
3.06.2006 11:38
Сообщение
#20
|
Новичок Группа: Пользователи Сообщений: 39 Пол: Мужской Реальное имя: leahov Репутация: 0 |
я как раз примерно тоже самой уже сделал только R вычислял, поставил 50 и испугался - узоры какие то фрактальные вышли , самому смешно
Спасибо всем кто решил вместо меня это задание. |
Текстовая версия | 21.09.2024 7:20 |