tutorial2

This commit is contained in:
p.kosyh 2009-09-14 12:35:20 +00:00
parent aa0f3107da
commit bde973318b
8 changed files with 281 additions and 207 deletions

View file

@ -14,8 +14,8 @@ LUA_LFLAGS=$(shell pkg-config --libs lua5.1)
# for arch linux (may be others) use this
#
LUA_CFLAGS=$(shell pkg-config --cflags lua)
LUA_LFLAGS=$(shell pkg-config --libs lua)
# LUA_CFLAGS=$(shell pkg-config --cflags lua)
# LUA_LFLAGS=$(shell pkg-config --libs lua)
#
SDL_CFLAGS=$(shell sdl-config --cflags)

1
debian/changelog vendored
View file

@ -10,6 +10,7 @@ instead (0.8.9) unstable; urgency=low
* alt enter fix
* gfx cursor support!
* no reset video while change game/theme
* tutorial2
-- Peter Kosyh <p.kosyh@gmail.com> Sat, 5 Aug 2009 11:25:01 +0400

View file

@ -6,6 +6,6 @@ install:
copy cat\gfx ..\bin\games\cat\gfx
if not exist ..\bin\games\cat\mus mkdir ..\bin\games\cat\mus
copy cat\mus ..\bin\games\cat\mus
if not exist ..\bin\games\tutorial mkdir ..\bin\games\tutorial
copy tutorial ..\bin\games\tutorial
if not exist ..\bin\games\tutorial2 mkdir ..\bin\games\tutorial2
copy tutorial ..\bin\games\tutorial2
clean:

View file

@ -1,203 +0,0 @@
-- $Name:Обучение
game.codepage="UTF-8"
game.act = 'Не получается.';
game.inv = 'Гм.. Не то..';
game.use = 'Не сработает...';
game.dsc = [[Команды:^
look(или просто ввод), act <на что> (или просто на что), use <что> [на что], go <куда>,^
back, inv, way, obj, quit, save <fname>, load <fname>. Работает автодополнение по табуляции.^^]];
game.pic = 'stead.png';
set_music('ramparts.mod');
main = room {
nam = 'Обучение',
act = function()
return goto('r1');
end,
dsc = [[Добро пожаловать в режим обучения instead (sdl версия).
Каждая сцена игры представляет собой описание статической и динамической части.^^
Для того, чтобы целиком обновить описание сцены, вы можете нажать мышью на заголовок сцены.^^
Динамическая часть сцены состоит из объектов, персонажей и т.д. С динамической частью
игрок может взаимодействовать с помощью мыши, нажимая на подсвеченные ссылки.^^
В данной сцене единственным объектом является объект "Дальше" -- который вы видите внизу текста.
Итак, для продолжения обучения вы можете нажать на "Дальше".
]],
obj = {
vobj(1, 'Дальше', '{Дальше}'),
},
};
apple = obj {
nam = 'яблоко',
dsc = 'На полу лежит {яблоко}.',
tak = 'Вы взяли яблоко.',
inv = function(s)
s._seen = true;
if s._knife then
inv():del('apple');
return 'Яблоко почищено! Вы его съели.';
end
return 'Выглядит аппетитно!';
end,
used = function(s, w)
if w == 'knife' and not s._knife and here() == r4 then
s._knife = true;
return 'Вы чистите яблоко.';
end
end,
};
knife = obj {
nam = 'нож',
dsc = 'На полу лежит {нож}.',
tak = 'Вы взяли нож.',
inv = function(s)
s._seen = true;
return 'Острый нож.';
end,
};
r1 = room {
enter = function()
lifeon('r1');
end,
exit = function()
lifeoff('r1');
end,
life = function()
if have('apple') and have('knife') then
return goto('r2');
end
end,
nam = 'урок 1',
dsc = [[Продолжим урок. Сейчас вы находитесь в комнате. Возьмите оба предмета, которые вы видите в этой комнате.
Напомним, что для этого вы просто используете мышь.]],
obj = { 'apple', 'knife' },
};
r2 = room {
nam = 'Урок 2',
enter = function()
lifeon('r2');
end,
exit = function()
lifeoff('r2');
end,
life = function()
if apple._seen and knife._seen then
return goto('r3');
end
end,
dsc = [[Отлично!! Теперь у вас появились предметы, которые вы можете использовать или изучать.
Для этого используется инвентарь. Вы можете смотреть на предметы инвентаря с помощью двойного щелчка мыши.^^
Итак, посмотрите на ножик. Затем, повторите эту операцию с яблоком.]],
};
tabl = obj {
nam = 'стол',
dsc = 'На этом уроке вы видите деревянный {стол}.',
act = function(s)
if s._knife then
s._seen = true;
return 'На столе стоит ваш автограф.';
end
return 'Обычный стол, из дуба.';
end,
used = function(s, w)
if w == 'knife' and not s._knife then
s._knife = true;
return 'Вы вырезаете что-то ножиком на столе.';
end
end,
obj = { 'vasa' },
};
vasa = obj {
nam = 'ваза',
dsc = 'На столе стоит {ваза}.';
act = 'Ваза как ваза.';
}
r3 = room {
nam = 'Урок 3',
enter = function()
lifeon('r3');
end,
exit = function()
lifeoff('r3');
end,
life = function()
if tabl._seen then
return goto('r4');
end
end,
dsc = [[Хорошо! Вы можете действовать
предметами инвентаря на другие предметы сцены или инвентаря. Попробуйте использовать нож на стол.
Для этого нажмите мышью на нож, а за затем на стол. Затем посмотрите на стол.]],
obj = { 'tabl' },
};
r4 = room {
nam = 'Урок 4',
enter = function()
apple._knife = false;
lifeon('r4');
end,
exit = function()
lifeoff('r4');
end,
life = function()
if not have('apple') then
return goto('r5');
end
end,
dsc = [[Ладно, а теперь -- почистите яблоко. Затем съешьте яблоко.]],
};
r5 = room {
nam = 'Урок 5',
dsc = [[Хорошо. Изучаем переходы. Идите на урок 6. Для этого нажмите мышью на соответствующую ссылку.]],
exit = function(s, t)
if t ~= 'r6' then
return 'Я просил идти на урок 6...', false;
end
end,
way = { 'r1', 'r2', 'r3', 'r4', 'r6'},
};
r6 = room {
nam = 'Урок 6',
dsc = [[Идите на последний урок.]],
exit = function(s, t)
if t ~= 'theend' then
return 'Я просил идти на последний урок...', false;
end
end,
way = { 'r1', 'r2', 'r3', 'r4', 'r6', 'theend'},
};
theend = room {
nam = 'Последний урок',
dsc = [[Вы можете сохранять игру, выбрать другую игру или выполнять иные действия с помощью меню.
Для вызова меню нажмите клавишу esc или нажмите мышью на символ меню (справа снизу).
Теперь вы готовы к игре. Удачи!!!^^
В обучении использован трек:^Ramparts by Scorpion]],
obj = { vway('клавиши', 'Посмотреть {список клавиш}.', 'help')},
};
help = room {
nam = 'Список клавиш',
dsc = [[
esc - меню;^
alt-q - быстрый выход;^
alt-enter - полный экран/окно;^
f2 - сохранить игру;^
f3 - загрузить игру;^
f5 - обновить описание сцены;^
f10 - выход;^
TAB, Shift-TAB - переключение между зонами ввода;^
Влево/Вправо, Вверх/Вниз, Shift + Вверх/Вниз, Пробел/Backspace, PgUp/PgDn - прокрутка, навигация по ссылкам;^
Enter - нажать на ссылку;]],
};

276
games/tutorial2/main.lua Normal file
View file

@ -0,0 +1,276 @@
-- $Name:Обучение$
game.codepage="UTF-8";
game.act = 'Не получается.';
game.inv = "Гм.. Не то..";
game.use = 'Не сработает...';
game.dsc = [[Команды:^
look(или просто ввод), act <на что> (или просто на что), use <что> [на что], go <куда>,^
back, inv, way, obj, quit, save <fname>, load <fname>. Работает автодополнение по табуляции.^^]];
game.pic = 'stead.png';
set_music('ramparts.mod');
main = room {
nam = 'Обучение',
act = function()
return goto('r1');
end,
dsc = txtc("Добро пожаловать в режим обучения INSTEAD.")..[[^^
Игра состоит из сцен. Каждая сцена игры имеет описание,
состоящее из статической и динамической части. Динамическая часть включает объекты,
персонажей и т.д. С динамической частью игрок может взаимодействовать с помощью мыши,
нажимая на подсвеченные ссылки.^^
Данная сцена называется "Обучение" и сейчас Вы читаете статическую часть её описания.
Единственным объектом сцены является объект "Дальше", который Вы видите внизу текста.
Итак, для продолжения обучения Вы можете нажать на "Дальше".]],
obj = {
vobj(1, 'continue', '{Дальше}'),
},
};
paper = obj {
nam = 'бумага',
dsc = 'Первое, что Вы замечаете в комнате -- {листок бумаги}.',
tak = 'Вы взяли бумагу.',
inv = function(s)
if here() == r2 then
s._seen = true;
end
if not s._haswriting then
return 'Чистый лист клетчатой бумаги. Похоже, его вырвали из тетради.';
end
return 'Лист клетчатой бумаги, на котором написано Ваше имя.';
end,
used = function(s, w)
if w == 'pencil' and here() == r4 then
s._haswriting = true;
return 'Вы пишете на листке своё имя.';
end
end,
};
pencil = obj {
nam = 'карандаш',
dsc = 'На полу лежит {карандаш}.',
tak = 'Вы подобрали карандаш.',
inv = function(s)
if here() == r2 then
s._seen = true;
end
return 'Обычный деревянный карандаш.';
end,
};
r1 = room {
nam = 'Урок 1',
enter = function()
lifeon('r1');
end,
life = function(s)
if not have('paper') or not have('pencil') then
return
end
put(vway('continue',
[[Отлично!^Вы скорее всего заметили, что статическая часть описания сцены
исчезла, уступив место описанию предметов, которые Вы взяли.
Чтобы снова посмотреть полное описание сцены, можно нажать на её
название, отображаемое в верхней части окна -- "Урок 1". Кроме того,
можно нажать клавишу F5 на клавиатуре, результат будет таким же.^^
{Дальше}]], 'r2'));
lifeoff('r1');
end,
dsc = [[Урок 1. Взаимодействие с объектами^^
Продолжим урок. Сейчас Вы находитесь в комнате. Возьмите оба предмета,
которые Вы видите. Напомним, что для этого Вы можете просто
использовать мышь. Если Вам удобнее пользоваться клавиатурой -- можно
выбрать нужный предмет с помощью клавиш со стрелками и нажать "Ввод" для
взаимодействия с ним.]],
obj = { 'paper', 'pencil'},
};
r2 = room {
nam = 'Урок 2',
enter = function()
lifeon('r2');
end,
life = function(s)
if not paper._seen or not pencil._seen then
return
end
put(vway("continue", "Хорошо!^^{Дальше}", 'r3'));
lifeoff('r2');
end,
dsc = [[Урок 2. Использование инвентаря - Часть I^^
Теперь у Вас появились предметы, которые можно использовать или изучать.
Для этого предназначен инвентарь. Вы можете посмотреть на любой предмет
инвентаря дважды щелкнув мышью по этому предмету. То же самое можно
сделать с помощью клавиатуры: нажмите "Tab", чтобы переключиться на панель
инвентаря, выберите нужный предмет и дважды
нажмите "Ввод". Чтобы вернуться назад к описанию сцены, нажмите "Tab" еще раз.^^
Итак, посмотрите на бумагу. Затем, повторите эту операцию с карандашом.]],
};
apple = obj {
nam = 'яблоко',
dsc = 'На столе лежит {яблоко}.',
tak = 'Вы взяли яблоко со стола.',
inv = function(s)
if here() == r4 then
inv():del(s);
return 'Вы съедаете яблоко.';
end
return 'Выглядит аппетитно.';
end,
};
desk = obj {
nam = 'стол',
dsc = 'На этом уроке вы видите деревянный {письменный стол}.',
act = function(s)
if s._haswriting then
s._seen = true;
return 'Большой дубовый письменный стол. На столешнице видна мелкая надпись карандашом: "Lorem Ipsum".';
end
return 'Большой дубовый письменный стол.';
end,
used = function(s, w)
if w == 'pencil' and not s._haswriting then
s._haswriting = true;
return 'Вы пишете на столешнице несколько букв.';
end
end,
obj = { 'apple' },
};
r3 = room {
nam = 'Урок 3',
enter = function()
lifeon('r3');
end,
life = function(s)
if not desk._seen or not have('apple') then
return
end
put(vway("continue", "^^{Дальше}", 'r4'));
lifeoff('r3');
end,
dsc = [[Урок 3. Использование инвентаря - Часть II^^
Вы можете действовать предметами инвентаря на другие предметы сцены или инвентаря.
В этой комнате вы увидите стол. Попробуйте воздействовать карандашом на стол.^^
Для этого нажмите мышью на карандаш, а затем на стол. То же самое можно сделать
с помощью клавиатуры: используя клавиши "Tab", "Ввод" и "стрелки".^^
Затем посмотрите на стол. И не забудьте взять яблоко, оно нам пригодится в следующем уроке.]],
obj = { 'desk' },
};
r4 = room {
nam = 'Урок 4',
enter = function()
apple._knife = false;
lifeon('r4');
end,
life = function(s)
if not paper._haswriting or have('apple') then
return
end
put(vway("continue", "Хорошо.^^{Дальше}", 'r5'));
lifeoff('r4');
end,
dsc = [[Урок 4. Использование инвентаря - Часть III^^
Хорошо, теперь изучим еще несколько действий с предметами.^^
Во-первых, напишите что-нибудь на бумаге. Для этого нажмите мышью
на карандаш, а затем на бумагу. После этого вы можете посмотреть
на бумагу, чтобы увидеть вашу запись.^^
Во-вторых, съешьте яблоко, которое Вы взяли со стола в предыдущей комнате.
Для этого дважды щелкните по яблоку в инвентаре.^^
Все описанные действия можно выполнить с помощью клавиатуры так же,
как показано в предыдущем уроке.]],
};
r5 = room {
nam = 'Урок 5',
exit = function(s, t)
if t ~= 'r6' then
return 'Этот урок мы уже прошли.^ Пожалуйста, перейдите на урок 6.', false;
end
end,
dsc = [[Урок 5. Перемещение - Часть I^^
Теперь изучим переходы между комнатами. В этой комнате Вы видете пять
дополнительных ссылок с номерами уроков. Перейдите на урок 6. ^^
Для этого нажмите мышью на соответствующую ссылку. Вы также можете воспользоваться
клавиатурой -- выберите нужную ссылку с помощью клавиш со стрелками
и нажмите "Ввод" для перехода.]],
way = { 'r1', 'r2', 'r3', 'r4', 'r6'},
};
r6 = room {
nam = 'Урок 6',
exit = function(s, t)
if t ~= 'theend' then
return 'Этот урок мы уже прошли.^ Пожалуйста, перейдите на последний урок.', false;
end
end,
dsc = [[Урок 6. Перемещение - Часть II^^
Теперь перейдите на последний урок.]],
way = { 'r1', 'r2', 'r3', 'r4', 'r6', 'theend'},
};
theend = room {
nam = 'Последний урок',
dsc = [[Вы можете выбирать игру, сохранять и загружать её состояние и выполнять
другие действия с помощью меню. Для вызова меню нажмите клавишу "Esc" или
нажмите мышью на символ меню (справа снизу).^^
Теперь вы готовы к игре. Удачи!!!^^
В обучении использован трек Ramparts от Scorpion.]],
obj = { vway('keys', 'Посмотреть {список клавиш}.', 'help')},
};
help = room {
nam = 'Список клавиш',
dsc = [[
Esc - Вызов меню;^
Alt+Q - Выход;^
Alt+Enter - Полноэкранный/оконный режим;^
Пробел/Backspace - Прокрутка описания сцены;^
Tab/Shift+Tab - Переключение между активными зонами;^
PgUp/PgDn - Прокрутка активной зоны;^
Стрелки влево/вправо - Выбор ссылок в активной зоне;^^
Клавиши, поведение которых зависит от выбранного режима клавиатуры
(см. Меню -> Настройки -> Режим клавиатуры):^^
Стрелки вверх/вниз:^
 - В режиме "Прокрутка": прокрутка активной зоны;^
 - В режиме "Ссылки": выбор ссылок в активной зоне;^
 - В режиме "Умный": одновременно выбор ссылок и прокрутка активной зоны.^^
Стрелки вверх/вниз + Shift или Alt:^
 - В режиме "Прокрутка": выбор ссылок в активной зоне;^
 - В режиме "Ссылки": прокрутка активной зоны;^
 - В режиме "Умный": прокрутка активной зоны.
]],
obj = { vway('cmdline', 'Посмотреть {параметры командной строки}.', 'help2')},
};
help2 = room {
nam = 'Параметры командной строки',
dsc = [[
-nosound - запуск без звука;^
-alsa - принудительное использование alsa (только для Linux);^
-debug - отладочный режим для разработчика игр;^
-theme <тема> - выбор темы;^
-game <игра> - выбор игры;^
-themespath <путь> - дополнительный путь к темам;^
-gamespath <путь> - дополнительный путь к играм;
]],
obj = { vway('keys', 'Посмотреть {список клавиш}.', 'help')},
};

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 1 MiB