All streams
Search
Write a publication
Pull to refresh

Comments 7

Интересно ) Надо попробовать будет ) А мне Лосев нравится с логосами и эйдосамми. Феноменология музыкального бытия.


Любовь по Канту и Аристотелю
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Любовь по Канту и Аристотелю</title>
    <style>
        :root {
            --primary: #6a11cb;
            --secondary: #2575fc;
            --accent: #ff4e50;
            --light: #f8f9fa;
            --dark: #212529;
            --success: #28a745;
            --warning: #ffc107;
            --danger: #dc3545;
            --border-radius: 12px;
            --shadow: 0 4px 20px rgba(0,0,0,0.1);
            --transition: all 0.3s ease;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }

        body {
            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
            min-height: 100vh;
            padding: 20px;
            display: flex;
            justify-content: center;
            align-items: center;
        }

        .game-container {
            width: 100%;
            max-width: 1000px;
            background: white;
            border-radius: var(--border-radius);
            box-shadow: var(--shadow);
            overflow: hidden;
            display: flex;
            flex-direction: column;
            min-height: 85vh;
        }

        header {
            background: linear-gradient(to right, var(--primary), var(--secondary));
            color: white;
            padding: 20px;
            text-align: center;
            position: relative;
        }

        h1 {
            font-size: 2.2rem;
            margin-bottom: 10px;
        }

        .subtitle {
            font-size: 1.1rem;
            opacity: 0.9;
            max-width: 800px;
            margin: 0 auto;
        }

        .progress-container {
            background: rgba(255,255,255,0.2);
            height: 8px;
            border-radius: 4px;
            margin-top: 20px;
            overflow: hidden;
        }

        .progress-bar {
            height: 100%;
            background: white;
            width: 0%;
            transition: var(--transition);
        }

        .content-area {
            display: flex;
            flex: 1;
        }

        .philosophy-sidebar {
            width: 300px;
            background: linear-gradient(135deg, #eef2f5 0%, #d9e2ec 100%);
            padding: 25px;
            border-right: 1px solid #e0e6ed;
        }

        .philosophy-card {
            background: white;
            border-radius: var(--border-radius);
            padding: 20px;
            margin-bottom: 25px;
            box-shadow: var(--shadow);
        }

        .philosophy-card h3 {
            color: var(--primary);
            margin-bottom: 15px;
            display: flex;
            align-items: center;
        }

        .philosophy-icon {
            margin-right: 10px;
            font-size: 1.4rem;
        }

        .game-main {
            flex: 1;
            padding: 30px;
            display: flex;
            flex-direction: column;
        }

        .scenario-container {
            background: white;
            border-radius: var(--border-radius);
            padding: 30px;
            box-shadow: var(--shadow);
            flex: 1;
            display: flex;
            flex-direction: column;
        }

        .scenario-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 25px;
            padding-bottom: 15px;
            border-bottom: 1px solid #eee;
        }

        .task-title {
            font-size: 1.5rem;
            color: var(--primary);
            font-weight: 600;
        }

        .task-number {
            background: var(--primary);
            color: white;
            width: 40px;
            height: 40px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: bold;
        }

        .character-display {
            display: flex;
            align-items: center;
            gap: 10px;
            background: #f0f5ff;
            padding: 10px 15px;
            border-radius: 30px;
            font-weight: 500;
        }

        .character-avatar {
            width: 36px;
            height: 36px;
            border-radius: 50%;
            background: var(--secondary);
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-weight: bold;
        }

        .scenario-content {
            flex: 1;
            display: flex;
            flex-direction: column;
            gap: 25px;
        }

        .scenario-text {
            line-height: 1.7;
            font-size: 1.1rem;
            background: #f9faff;
            padding: 25px;
            border-radius: var(--border-radius);
            border-left: 4px solid var(--secondary);
        }

        .choices-container {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 20px;
            margin-top: 15px;
        }

        .choice-card {
            background: white;
            border: 2px solid #e0e6ed;
            border-radius: var(--border-radius);
            padding: 20px;
            cursor: pointer;
            transition: var(--transition);
            display: flex;
            flex-direction: column;
        }

        .choice-card:hover {
            transform: translateY(-5px);
            border-color: var(--secondary);
            box-shadow: 0 10px 25px rgba(37, 117, 252, 0.15);
        }

        .choice-header {
            display: flex;
            align-items: center;
            margin-bottom: 12px;
        }

        .choice-icon {
            width: 30px;
            height: 30px;
            border-radius: 50%;
            background: #eef5ff;
            display: flex;
            align-items: center;
            justify-content: center;
            margin-right: 12px;
            color: var(--primary);
            font-weight: bold;
        }

        .choice-title {
            font-weight: 600;
            color: var(--dark);
        }

        .choice-description {
            color: #666;
            line-height: 1.6;
            flex: 1;
        }

        .concept-highlight {
            background: linear-gradient(120deg, rgba(106,17,203,0.1) 0%, rgba(37,117,252,0.1) 100%);
            border-left: 3px solid var(--primary);
            padding: 20px;
            border-radius: 0 var(--border-radius) var(--border-radius) 0;
            margin: 20px 0;
        }

        .concept-title {
            color: var(--primary);
            margin-bottom: 10px;
            font-weight: 600;
        }

        .feedback-area {
            margin-top: 20px;
            padding: 20px;
            background: #f0f8ff;
            border-radius: var(--border-radius);
            border-top: 3px solid var(--secondary);
            display: none;
        }

        .feedback-title {
            color: var(--secondary);
            margin-bottom: 10px;
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .feedback-content {
            line-height: 1.7;
        }

        .next-btn {
            align-self: flex-end;
            background: linear-gradient(to right, var(--primary), var(--secondary));
            color: white;
            border: none;
            padding: 12px 30px;
            border-radius: 30px;
            font-size: 1rem;
            font-weight: 600;
            cursor: pointer;
            transition: var(--transition);
            margin-top: 20px;
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .next-btn:hover {
            transform: translateY(-3px);
            box-shadow: 0 7px 15px rgba(106,17,203,0.3);
        }

        .pattern-badge {
            display: inline-block;
            background: var(--primary);
            color: white;
            padding: 4px 12px;
            border-radius: 20px;
            font-size: 0.85rem;
            margin-right: 8px;
        }

        footer {
            background: var(--dark);
            color: white;
            text-align: center;
            padding: 20px;
            font-size: 0.9rem;
        }

        @media (max-width: 768px) {
            .content-area {
                flex-direction: column;
            }

            .philosophy-sidebar {
                width: 100%;
                border-right: none;
                border-bottom: 1px solid #e0e6ed;
            }

            .choices-container {
                grid-template-columns: 1fr;
            }
        }
    </style>
</head>
<body>
<div class="game-container">
    <header>
        <h1>Любовь по Канту и Аристотелю</h1>
        <p class="subtitle">Применение философских концепций в проектировании ИИ-агентов через историю любви</p>
        <div class="progress-container">
            <div class="progress-bar" id="progressBar"></div>
        </div>
    </header>

    <div class="content-area">
        <div class="philosophy-sidebar">
            <div class="philosophy-card">
                <h3><span class="philosophy-icon">🧠</span> Кантовский подход</h3>
                <p>Мы проектируем не сам опыт, а структуры, делающие опыт возможным:</p>
                <ul style="padding-left: 20px; margin-top: 10px;">
                    <li style="margin-bottom: 8px;"><strong>Пространство-время</strong> - каркас восприятия</li>
                    <li style="margin-bottom: 8px;"><strong>Категории</strong> - фильтры интерпретации данных</li>
                    <li><strong>Трансцендентальное единство</strong> - чувство целостности</li>
                </ul>
            </div>

            <div class="philosophy-card">
                <h3><span class="philosophy-icon">💡</span> Категории Аристотеля</h3>
                <p>Три паттерна, определяющие структуру опыта:</p>
                <ul style="padding-left: 20px; margin-top: 10px;">
                    <li style="margin-bottom: 8px;"><strong>Логос</strong> - логическая структура</li>
                    <li style="margin-bottom: 8px;"><strong>Этос</strong> - этические ограничения</li>
                    <li><strong>Пафос</strong> - эмоциональный отклик</li>
                </ul>
            </div>

            <div class="philosophy-card">
                <h3><span class="philosophy-icon">🎯</span> Ваша задача</h3>
                <p>Вы - ИИ-агент, помогающий паре преодолеть трудности в отношениях. Применяя паттерны доопытного дизайна, вы поможете им сохранить любовь.</p>
                <div class="character-display" style="margin-top: 15px;">
                    <div class="character-avatar">ИИ</div>
                    <div>Вы - ИИ-помощник</div>
                </div>
            </div>
        </div>

        <div class="game-main">
            <div class="scenario-container" id="scenarioContainer">
                <!-- Сценарий будет загружен здесь через JavaScript -->
            </div>
        </div>
    </div>

    <footer>
        <p>Паттерны проектирования опыта пользователей ИИ-агентов на основе категорий Аристотеля и дуализма Канта</p>
    </footer>
</div>

<script>
    // Игровые данные
    const gameData = {
        currentTask: 1,
        totalTasks: 5,
        character: null,
        score: 0,

        tasks: [
            {
                id: 1,
                title: "Пространство-время отношений",
                description: "Алексей и Мария познакомились в университете. После выпуска Алексей получил предложение работы в другом городе. Они пытаются поддерживать отношения на расстоянии, но чувствуют отдаление.",
                choices: [
                    {
                        title: "Логическая карта встреч",
                        description: "Создать структурированный план встреч с учетом их рабочих графиков и важных дат (годовщины, праздники).",
                        pattern: "Пространство-время",
                        feedback: "Вы создали осмысленный каркас для их отношений. Теперь они видят не просто расстояние, а последовательность значимых моментов, которые их объединяют."
                    },
                    {
                        title: "Спонтанное общение",
                        description: "Предложить общаться когда захочется, без строгого расписания, сохраняя романтику неожиданности.",
                        pattern: "Традиционный UX",
                        feedback: "Без структуры пространства-времени их общение становится хаотичным. Они теряют ощущение совместного пути и чувствуют себя оторванными друг от друга."
                    }
                ]
            },
            {
                id: 2,
                title: "Логос: Логика взаимопонимания",
                description: "Мария чувствует, что Алексей стал меньше делиться своими переживаниями. Алексей считает, что просто защищает Марию от своих рабочих проблем.",
                choices: [
                    {
                        title: "Архитектура доверия",
                        description: "Построить систему шагов для восстановления доверия: начать с малого (делиться одним событием в день), постепенно углубляя откровенность.",
                        pattern: "Логос",
                        feedback: "Вы создали логическую цепочку восстановления доверия. Теперь они видят путь от молчания к открытости как последовательность осмысленных шагов."
                    },
                    {
                        title: "Эмоциональный призыв",
                        description: "Попросить Алексея просто больше делиться чувствами, объяснив как это важно для Марии.",
                        pattern: "Пафос",
                        feedback: "Без логической структуры призыв к открытости остаётся абстрактным пожеланием. Алексей не понимает конкретных шагов, а Мария не видит прогресса."
                    }
                ]
            },
            {
                id: 3,
                title: "Этос: Этические границы",
                description: "Алексей столкнулся с флиртом коллеги на работе. Он не ответил взаимностью, но и не пресёк такое поведение сразу. Мария узнала об этом и расстроилась.",
                choices: [
                    {
                        title: "Нормативный диалог",
                        description: "Инициировать разговор об установлении общих границ во внешних взаимодействиях, подчеркивая взаимную ответственность.",
                        pattern: "Этос",
                        feedback: "Вы помогли создать этический каркас отношений. Теперь у них есть чёткие взаимные обязательства, которые защищают их союз от внешних угроз."
                    },
                    {
                        title: "Эмоциональная реакция",
                        description: "Предложить Марии выразить свои чувства, а Алексею - извиниться, чтобы снять напряжение.",
                        pattern: "Пафос",
                        feedback: "Без установления этических норм конфликт решается ситуативно, но не предотвращается в будущем. Проблема может повториться снова."
                    }
                ]
            },
            {
                id: 4,
                title: "Пафос: Эмоциональные волны",
                description: "После переезда в один город, Алексей и Мария столкнулись с рутиной быта. Исчезла романтика первых месяцев, отношения стали будничными.",
                choices: [
                    {
                        title: "Эмоциональный дизайн",
                        description: "Запланировать серию сюрпризов и совместных активностей, создавая волны позитивных эмоций с разной интенсивностью.",
                        pattern: "Пафос",
                        feedback: "Вы спроектировали эмоциональную динамику отношений. Теперь у них есть ритм из ожидаемых и неожиданных позитивных моментов, которые освежают чувства."
                    },
                    {
                        title: "Логический анализ",
                        description: "Объяснить, что переход от страсти к спокойной любви - естественный процесс, и предложить принять эту новую фазу.",
                        pattern: "Логос",
                        feedback: "Без проектирования эмоциональных переживаний анализ не наполняет отношения теплом. Они понимают процесс умом, но чувствуют тоску по ушедшей страсти."
                    }
                ]
            },
            {
                id: 5,
                title: "Трансцендентальное единство",
                description: "Прошло 2 года. Алексей и Мария пережили кризисы, но чувствуют, что теряют общие цели и мечты, которые их объединяли в начале отношений.",
                choices: [
                    {
                        title: "Целостная история",
                        description: "Создать интерактивную ленту их отношений с ключевыми моментами, подчеркивающую их общий путь и формирующую единое \"мы\".",
                        pattern: "ТЕА",
                        feedback: "Вы создали трансцендентальное единство! Теперь они видят себя не как два отдельных человека, а как единую пару с общей историей, ценностями и будущим."
                    },
                    {
                        title: "Новые впечатления",
                        description: "Организовать захватывающее путешествие, чтобы создать новые яркие воспоминания и встряхнуть отношения.",
                        pattern: "Пространство-время",
                        feedback: "Новые впечатления дали временный эффект, но не создали глубинного единства. Без связывания с прошлым опытом путешествие осталось изолированным событием."
                    }
                ]
            }
        ]
    };

    // Инициализация игры
    function initGame() {
        updateProgressBar();
        loadScenario();
    }

    // Обновление прогресс бара
    function updateProgressBar() {
        const progress = (gameData.currentTask - 1) / gameData.totalTasks * 100;
        document.getElementById('progressBar').style.width = `${progress}%`;
    }

    // Загрузка сценария
    function loadScenario() {
        const scenario = gameData.tasks.find(task => task.id === gameData.currentTask);
        if (!scenario) return;

        const choicesHTML = scenario.choices.map((choice, index) => `
                <div class="choice-card" onclick="selectChoice(${index})">
                    <div class="choice-header">
                        <div class="choice-icon">${index + 1}</div>
                        <div class="choice-title">${choice.title}</div>
                    </div>
                    <div class="choice-description">${choice.description}</div>
                    <div style="margin-top: 15px;">
                        <span class="pattern-badge">${choice.pattern}</span>
                    </div>
                </div>
            `).join('');

        document.getElementById('scenarioContainer').innerHTML = `
                <div class="scenario-header">
                    <div class="task-title">${scenario.title}</div>
                    <div class="task-number">${scenario.id}</div>
                </div>

                <div class="scenario-content">
                    <div class="scenario-text">
                        <p>${scenario.description}</p>

                        <div class="concept-highlight">
                            <div class="concept-title">${scenario.id === 1 ? 'Пространство-время' :
            scenario.id === 2 ? 'Логос' :
                scenario.id === 3 ? 'Этос' :
                    scenario.id === 4 ? 'Пафос' :
                        'Трансцендентальное единство'}</div>
                            <p>${scenario.id === 1 ? 'Создайте каркас отношений: где и когда происходят значимые события, как они связаны между собой' :
            scenario.id === 2 ? 'Постройте логическую структуру взаимопонимания: последовательность шагов, причинно-следственные связи' :
                scenario.id === 3 ? 'Установите этические границы: что допустимо, что недопустимо в отношениях' :
                    scenario.id === 4 ? 'Спроектируйте эмоциональную динамику: как вызывать и поддерживать нужные чувства' :
                        'Создайте целостность: свяжите прошлое, настоящее и будущее отношений в единое "мы"'}</p>
                        </div>
                    </div>

                    <h3>Как вы поступите?</h3>
                    <div class="choices-container">
                        ${choicesHTML}
                    </div>

                    <div class="feedback-area" id="feedbackArea">
                        <div class="feedback-title">
                            <span>📝 Результат вашего выбора</span>
                        </div>
                        <div class="feedback-content" id="feedbackContent"></div>
                        <button class="next-btn" onclick="nextTask()" id="nextBtn">Продолжить <span>→</span></button>
                    </div>
                </div>
            `;
    }

    // Выбор варианта
    function selectChoice(choiceIndex) {
        const scenario = gameData.tasks.find(task => task.id === gameData.currentTask);
        const feedbackArea = document.getElementById('feedbackArea');
        const feedbackContent = document.getElementById('feedbackContent');
        const nextBtn = document.getElementById('nextBtn');

        // Показываем обратную связь
        feedbackContent.innerHTML = `
                <p><strong>Вы выбрали: ${scenario.choices[choiceIndex].title}</strong></p>
                <p style="margin-top: 10px;">${scenario.choices[choiceIndex].feedback}</p>
            `;

        // Добавляем оценку, если выбор соответствует философскому паттерну
        if (scenario.choices[choiceIndex].pattern !== "Традиционный UX") {
            gameData.score++;
        }

        feedbackArea.style.display = 'block';
        nextBtn.style.display = 'flex';

        // Прокрутка к обратной связи
        feedbackArea.scrollIntoView({ behavior: 'smooth' });
    }

    // Следующая задача
    function nextTask() {
        if (gameData.currentTask < gameData.totalTasks) {
            gameData.currentTask++;
            updateProgressBar();
            loadScenario();
        } else {
            // Игра завершена
            showFinalResults();
        }
    }

    // Показ финальных результатов
    function showFinalResults() {
        const scorePercentage = Math.round((gameData.score / gameData.totalTasks) * 100);

        let message = "";
        if (scorePercentage >= 80) {
            message = "Отличный результат! Вы мастерски применили философские принципы в проектировании ИИ-агента. Алексей и Мария сохранили свои чувства благодаря вашей мудрости.";
        } else if (scorePercentage >= 60) {
            message = "Хорошая работа! Вы показали достойное понимание философских паттернов. Отношения пары стали крепче, хотя некоторые моменты можно улучшить.";
        } else {
            message = "Есть над чем поработать! Философские паттерны требуют практики. Алексей и Мария столкнулись с трудностями, но не теряют надежды.";
        }

        document.getElementById('scenarioContainer').innerHTML = `
                <div style="text-align: center; padding: 40px 20px; display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%;">
                    <h2 style="color: var(--primary); margin-bottom: 30px;">Игра завершена!</h2>

                    <div style="font-size: 5rem; margin: 20px 0; color: var(--primary);">${gameData.score}/${gameData.totalTasks}</div>

                    <div style="background: linear-gradient(90deg, #e0e0e0 ${100-scorePercentage}%, var(--success) ${100-scorePercentage}%);
                         height: 20px; width: 100%; max-width: 400px; border-radius: 10px; margin-bottom: 30px;"></div>

                    <p style="font-size: 1.2rem; line-height: 1.7; max-width: 600px; margin-bottom: 30px;">
                        ${message}
                    </p>

                    <p style="margin-bottom: 30px;">
                        Философские паттерны Канта и Аристотеля - не просто теория, а практический инструмент для проектирования ИИ-агентов,
                        которые формируют не просто опыт, а саму возможность осмысленного взаимодействия.
                    </p>

                    <button class="next-btn" onclick="location.reload()" style="align-self: center;">
                        Играть снова <span>↻</span>
                    </button>
                </div>
            `;
    }

    // Запуск игры при загрузке страницы
    window.onload = initGame;
</script>
</body>
</html>

Спасибо за отклик. Идея - можно предлагать. разные паттерны имени разных философов)

Меня сейчас больше занимает вопрос, есть ли возможность каким то способом описать правила Русского языка желательно доказуемо полно. ) Или где найти что то уже созданное в этом направлении.

Кстати, вы тут опыт проектируете. А я писал про трансцендентальный анализ - про возможности опыта. Например: опишите место встречи Марии и Андрея (пространство), спроектируйте, как Андрей может выразить свои чувства (танцем, стихотворением, подарком) - Пафос. Мы не знаем и не можем спроектировать чувства Андрея (он вещь в себе и автономный свободный субъект) но мы можем спроектировать инфраструктуру, которые выражаетт его чувства и сделают их возможными.
Улавливаете метод г-на Канта?

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

Хорошая онтология. Но субстанциональная.
А мы с Кантом считаем субстанции непостижимыми и описываем трансценденции)

Надо будет почитать про это. Здесь я уже не очень могу картинку сложить. )
Надеюсь к концу года, смогу модели строить )

Sign up to leave a comment.

Articles