tutorial2
This commit is contained in:
parent
aa0f3107da
commit
bde973318b
|
@ -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
1
debian/changelog
vendored
|
@ -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
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
276
games/tutorial2/main.lua
Normal 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')},
|
||||
};
|
||||
|
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 |
Loading…
Reference in a new issue