Появилась довольно смелая идея. Написать новый движок для создания текстовых квестов. Что-то наподобие URQ. Но более простой и удобный. Опыт в создание интерпритаторов уже есть. Кое-какие нароботки есть, но до готовой версии далеко... Так вот главная проблема - это решение, как будет выглядеть сам язык. Если кто-нибудь хочет помочь советом, пишите письма.
Я тут немного подумал, над тем как будет выглядеть программа и пришёл к такому варианту(просто пример):
//#TQ_PROJECT /* Пример многострочного комментария. Пример простейшей программы квеста. Автор: haM3r E-mail: bvlad36@bk.ru */ // Пример подключения дополнительной библиотеки. // Проект можно разбивать отдельные на файлы. #include "scene_1.tq"; #include "scene_2.tq"; #include "scene_3.tq"; /* Пример работы с #define. #define - автозамена текста. Довольно полезная вещь. Можно сказать #define "btn", "button"; и использовать во всей программе заместо button - btn. */ #define "btn", "button"; //———————————————————————- /* Пример локации. Локация должна начинаться со слова location или room и заканчиваться end. <main> - указывает на то, что с этой локации начинает работать программа. */ location [first_location] <main> // Устанавливаем цвет текста. textcolor 5; // Проиграть звуковой wav файл. play "sound.wav"; // Вывод сообщения на экран. print "Первая локацияn"; button room_1, "@Wкомната-1"; button room_2, "@Bкомната-2"; button room_3, "@Rкомната-3"; end; //———————————————————————- room [room_1] // Проигрывание звукового сигнала. beep; print "В комнате 1 вас убили!n", "Какая досада!n", "Попробуйте ещё раз.n"; // Заснуть на 1 секунду. sleep 1000; // Выход из программы. exit; end; procedure getkey print "Press any key..."; // Считывание клавиши. key = readkey; print "key = ", key; end; room [room_2] // Отчистка экрана. cls; // Вызов процедуры. call getkey; // Сохранение состояния программы. save; btn first_location, "Назад"; end; room [room_3] a = 10; b = "test"; print "This is" + b + "n"; :label_1 // Пример цикла. while (a > 0) { print a, "n" // Пример условного оператора. if (a == 3) { print "That's All!n"; break; } a = a - 1; } if (a > 0) goto label_1; exit; end;
Неактивен
qwerty написал:
даже в обучающем примере "три медведя" и то есть недодумки
Трех медведей я писал через три недели знакомства с системой, сразу после того как её перевел. Собственно, на медведях была первая обкатка перевода. Так что нечего удивляться качеству игры. Более того, она не использует всех фич, накопленных более чем за два года дальнейшей доработки РТАДСа.
Неактивен