Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 20.05.2013, 17:58   #1
wppt
Нуждающийся
 
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений
(для 2 пользователей)
подобие консоли

собираюсь делать некое подобие консоли(ну, т.е. чтобы входные строки интерпретировала, руководствуясь заранее заданным "словарем")... раньше с этим дело не имел, поэтому прошу помощи.
Я думал так сделать - задать словарь, каждое слово связать с делегатом, все что после слова - параметры... ну т.е. пользователь вводит строку в консоль - первое значение есть слово, определенное в "словаре", все остальные слова - параметры к методу, связанному с делегатом... только вот проблема - как я понял, производительность будет хромать, да и различных сигнатур может быть очень много, следовательно это не лучший вариант. Как же тогда?
(Offline)
 
Ответить с цитированием
Старый 20.05.2013, 18:18   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: подобие консоли

Ну со словарём - всё от части верно.
Это тупо key(string)<>value(class) словарь, который будет указывать на класс который будет иметь свой метод парсинга параметров.

Подумай о том как это реализовать чтобы оно удобно масштабировалось.
Я бы сделал интерфейс который нужно наследовать классом для каждой команды, в данном интерфейсе будут требоваться методы:
Help(Console)
Parse(Console, String)

Метод Help нужен для того чтобы например распарсить такую строку:
instance ?
Твой консоль будет всегда знать, что после команды если идёт вопросительный знак - значит это запрос help'а по команде. Твой консоль найдёт по словарю экземпляр класса команды, и вызовет Help, который уже сам сделает что надо - например выведет текст в консоль с инфой по команде.

А при например такой строке:
intance 100
У тебя идёт всегда разбивание строки по пробелу, и первый в списке - будет команда, находишь экземпляр класса команды, и далее шлёшь всю строку исключая команду, в данном случае "100". В методе Parse уже сам реализуешь как и что делать с этой строкой. Ну и выводишь там результат если нужно обратно в консоль.

Таким образом у тебя будет класс консоли, словарь команд, интерфейс для каждой команды, и возможность создавать классы команд наследуя интерфейс.
Получается весьма масштабируемая система для консоли. Хранить классы команд, можно в разных файлах, например в файле для пользователей команды для работы с пользователями, и т.п.
Это добавляет модульности.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
wppt (20.05.2013)
Старый 20.05.2013, 22:33   #3
wppt
Нуждающийся
 
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: подобие консоли

не знаю, может вообще "макроязык" какой нибудь впаять... типа интерпретируемого, только еще более абстрактный... но тут уж подумать точно придется...

можно допустим ввести свои типы-синонимы для типов ц#, только более абстрактные... как в perl допустим - всего 3 типа... и с каждым продумать соответствия операций и операндов
(Offline)
 
Ответить с цитированием
Старый 21.05.2013, 03:12   #4
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: подобие консоли

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 03:34.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com