Текствый квест или сказание о том, как я не ходил в универ
- вторник, 16 августа 2022 г. в 00:46:16
Привет, Хабр.
Я студент, учусь по направлению - Информационные системы и технологии. За первый год обучения я получил -> "Почти ничего". Самое крутое, что я приобрел за год пребывания в ВУЗе - это общение с Разными людьми. Каждый имел своё мнение и свои взгляды на вещи. И это был единственный плюс. Когда у нас пошли пары по программированию, которые я очень сильно ждал, мне стало очень Плохо. Увидев то, как преподаватель предсмертного возраста объясняет нам Азы Python3, мне хотелось уйти.
После, как у многих было, я перестал ходить почти на все лекции, потому что уровня знаний python мне хватало, для того чтобы сделать за день все лабораторные работы. И после этого я начал тухнуть на глазах. Отдел, который занимался записью студентов на курсы по ИТ направлению кормил всех завтраками, и я не исключение. Никто ничего не обязан вам в универе. А об выполнение своих рабочих обязанностей все преподаватели забыли напрочь.
Так как на большинство пар я не ходил, я начал искать курсы и гайды в интернете. YouTube крутая штука, но уже много мусора в себе держит. За пару недель я нашел себе занятия:
Я начал рисовать, фотографировать эти рисунки и доводить до ума в GIMP!
Писал парсеры, программы которые загружали контент с сайта.
Сделал минималистичный поисковик для telegra.ph, было прикольно.
Написал свою первую и интересную как для меня так и для одногрупника и преподавателя, уже по другому предмету, программу. Есть такая вещь - DB Browser for SQLite. Я написал похожую программу на Python3, Tkinter и SQLite3. Велосипед, но хочется.
Писал скрипты для сортировки файлов в директории "Загрузка".
Калькуляторы для ВышМата и физики, которые у нас уже во всю шлю плотным графиком( termux помог очень сильно, когда обычный интерпритатор на телефоне не мог скачать нужный модуль)
И конечно как же без BackDoor-ов, KeyLogger-ов и скриптов для перезагрузки системы, когда надоедливый сосед начинает играть в FIFA с включенными колонками.
Я начал искать информацию по Текстовым Квестам. Её много, но вся она состоит из обзоров движков или длинных цепей IF - ELIF - ELSE. Я не претендую, я просто захотел и попробовал реализовать за час минималистичный рабочий псевдодвижок для текстового квеста.
Первое, что меня сразу затормозило - это то, как мне связать основные тексты и ответы к которым они привязаны. Я построил схему и попытался из неё что-то увидеть, прям как художник, который ищет свою музу.
Затем я написал это. Реализация переходов между ответами и их содержимым.
# Добавляем в конец id_line значение answer
if answer == "1":
id_line = id_line + ".1"
elif answer == "2":
id_line = id_line + ".2"
elif answer == "3":
id_line = id_line + ".3"
После я подключил модуль SQLite.
import sqlite3
conn = sqlite3.connect("dialogs.db")
cursor = conn.cursor()
TEXT = cursor.execute(f"SELECT text FROM mainT WHERE id_line = '{id_line}'").fetchone()
ANSWERS = cursor.execute(f"SELECT answers FROM mainT WHERE id_line = '{id_line}'").fetchone()
Конечный вид исходника "Игры":
import sys
import sqlite3
conn = sqlite3.connect("dialogs.db")
cursor = conn.cursor()
id_line = "0"
while True:
TEXT = cursor.execute(f"SELECT text FROM mainT WHERE id_line = '{id_line}'").fetchone()
ANSWERS = cursor.execute(f"SELECT answers FROM mainT WHERE id_line = '{id_line}'").fetchone()
print(*TEXT)
print(*ANSWERS)
answer = input("> ")
if answer == "1":
id_line = id_line + ".1"
elif answer == "2":
id_line = id_line + ".2"
elif answer == "3":
id_line = id_line + ".3"
elif answer == "quit":
sys.exit()
# на случай, если введено заначение отличное от 1, 2, 3 или quit.
else:
print(f"Такого варианта нет.(Error: {answer})")
continue
Вид БД:
CREATE TABLE "mainT" (
"id_line" TEXT NOT NULL,
"text" TEXT NOT NULL,
"answers" TEXT NOT NULL
)
Результат:
Этот пост написан как стартовый для меня в этом направлении. Выше сказанным я хотел показать, что:
Универ не всегда дает то, в чём ты можешь нуждаться.
Универ - место для общения и поиска единомышленников.
Для меня и многих людей, которые меня окружают, делать всё просто так - это норма. Хочешь делать - делай!
Движки для "Текстовых Игр" существуют, их не мало и не так уж и много. Но написание игры без вспомогательных технологий это интереснее и не так уж и сложно. Хоть времена когда ты пишешь функцию для чего-либо с нуля уже прошли, всё равно к этому тянет. Мне кажется люди забывают о трудностях и переходят на легкий уровень жизни.
Спасибо за внимание. Буду очень рад любому совету и наверное напутствию.