Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Управление луноходом по карте. |
Автор: N0rd 15.12.2004, 22:05 |
Уже описывал эты проблемку в ветке общие вопросы,но так как пишем под линукс(в emacs'e),меня отправили сюда. 5. Управление луноходом по карте. Луноход передвигается по дорогам, отмеченным на карте размером 20х20. 1 символ - 1 координатная единица. Ширина дороги - 1. На карте должны быть развилки (не менее трех) и перекрестки. На перекрестках находятся шахты, добывающие металл (не менее трех) и лунные поселки (не менее двух). В поселках можно взять топливо, оплатив его металлом, а на шахтах получить металл. Вес топлива и металла не должен превышать грузоподъемность лунохода. Луноход передвигается по команде пользователя вида (направление, число шагов). Например (вправо, 5). Если встретились шахта или поселок, луноход сообщает о встреченном им объекте. По запросу пользователя луноход должен сообщать расстояние до ближайшего перекрестка и вид объекта (размещенного на нем), а также расстояния до ближайших шахты или поселка. По другому запросу луноход должен сообщать общий вес груза, который еще можно взять на борт и оставшийся запас топлива. Каждая единица пройденного пути вызывает расход топлива. Если топливо кончилось, луноход может просить ближайший поселок привезти ему топливо, получая долг по металлу. По требованию пользователя программа должна выводить карту, на которой обозначены все шахты и поселки, дороги и текущее положение лунохода. В начале работы программы луноход имеет запас топлива, достаточный для посещения четырех объектов. Примечание: на перекрестках обязательно расположены шахты или лунные поселки, пустых перекрестков быть не может. Язык реализации C. Должно получиться что то типа игры.Карта,луноход и т.д. обозначаются буковками символами(это вроде псевдографика называется). Помогите пожалуйста. З.Ы. Обычный Си без плюсов. |
Автор: dargaard 17.12.2004, 07:36 |
Модератор: Тема не имеет никакого отношения к линуксу/юниксу. |
Автор: LuckLess 18.12.2004, 16:24 |
ты что , хочешь чтобы тебе эту прогу целиком написали ?? Или тебе алгоритм нужен ? Или в каком нибудь конкретном месте чтото не выходит..? |
Автор: cardinal 18.12.2004, 16:28 |
N0rd, ты это читал? http://forum.vingrad.ru/index.php?showtopic=36512&view=findpost&p=275177 |
Автор: N0rd 19.12.2004, 19:02 | ||
Писать я начал,вот что у меня пока что получилось
Маловато конечно,но хоть кое что.Вообщем идея такова.В текстовом файле хранится карта,составленная так(например): 100000000001 110000000011 031111211310 010000000100 010000000100 0-это "пробел" 1-дорога 2-шахта 3-поселок Я уже начал открывать файл.Далее будет такая конструкция: if(input_data(file_input,map,MAP_SIZE)) // считываем данные из файла // если произошла ошибка то выводим предупреждение printf("Произошла ошибка при считывании данных\nПроверьте формат входных данных\n"); input_data-функция,которая будет посимвольно считывать данные из файла и в зависимости от цифры заносить в массив символы (д вместо 1,пробел вместо 0,ш вместо 2,п вместо 3).После этого я думаю файл становится ненужным и его можно закрыть?После всех этих приготовлений начинаем собственно сам процесс.Сначала я думаю надо вывести на экран справку содержащую все команды(вправо Х,влево У,карта...),справку реализовать функцией.Потом, пока команда не "выход": введите команду В зависимости от команды:вправо,влево,вниз,вверх,карта,торговля(в деревнях),справка,взять в долг топливо(если оно кончилось),расстояние до ближайшего...;Выполняем действия(их я думаю тоже реализовать функциями). Дело в том что это можно сказать моя первая программа на Си.Вот что мне не очень понятно:как сделать функцию input_data,как вычислять расстояние до щахты,поселка,ближайшего объекта? З.Ы. У меня есть готовая программа(у одногрупника взял),но я сам хочу написать свою.У вас на форуме можно файлы выкладывать,я бы положил эту прогу,может вам интересно посмотреть. З.З.Ы.Ы. Даже не знаю что делать ![]() ![]() |
Автор: antonmasteR 19.12.2004, 19:39 |
N0rd я когда-то такое писал вот лови http://odinsoft.webcindario.com/worm.rar там прога для ДОС но сам алгоритм думаю поймеш |
Автор: N0rd 19.12.2004, 20:07 | ||
Спасибо за помощь, но без комментариев разобраться сложновато.
|
Автор: cardinal 20.12.2004, 03:21 | ||
Это лишнее. То есть посимвольно это делать не надо. Читаешь все содержание файла в массив и готово. Как это сделать я думаю сто раз на форуме описано... |
Автор: En_t_end 20.12.2004, 15:58 |
http://odinsoft.webcindario.com/worm.rar Ага ![]() ![]() или всё вместе ![]() |
Автор: antonmasteR 20.12.2004, 18:42 |
En_t_end это игра worm типо червяк бегает по экрану жрет яблоки и растет ![]() |