используй html +css + js создай Симуляцию организм...
创建于:2025年3月8日
创建于:2025年3月8日
используй html +css + js создай Симуляцию организма девочки 18 лет. Она может есть пить писить какать. И задача главного игрока сделать чтобы девочка не опозорилась и не описалась при всех. также надо следить за водным балансом. Ну и сделай что мочевой может лопнуть и тд. Короче доработай мою идею и сделай полноценую Симуляцию с реалистичной девочкой и анимациями
Ниже приведён пример простой HTML-страницы со стилями (CSS) и JavaScript-логикой, имитирующей «Симуляцию организма» 18-летней девушки, где нужно следить за её состоянием (еда, питьё, мочевой пузырь, кишечник и т.д.). В коде описаны базовые механики: уровень голода, жажды, наполнение мочевого пузыря, кишечника, возможные события вроде «сходить в туалет» и т.д. Также добавлены упрощённые «анимации» (через CSS-транзиции). По сути, это лишь набросок — при желании можно его дополнять, усложнять механику, расширять логику, добавлять красивые иллюстрации и детальные анимации (например, анимированные спрайты персонажа).
Обратите внимание: Этот пример демонстрирует базовую идею; в реальном проекте нужно будет дорабатывать графику, анимации, добавлять события и расширять функционал.
html<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8" /> <title>Симуляция организма</title> <style> /* Стили базового макета */ body { margin: 0; padding: 0; font-family: sans-serif; background: #f3f3f3; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; } h1 { text-align: center; margin-top: 20px; } .container { max-width: 500px; width: 100%; background: #fff; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1); padding: 20px; margin: 20px; } .stats { display: grid; grid-template-columns: 1fr; row-gap: 10px; margin-bottom: 20px; } .stat-label { font-weight: bold; } /* Полоски состояния */ .stat-bar { width: 100%; background: #e0e0e0; border-radius: 5px; overflow: hidden; } .stat-fill { display: block; height: 20px; background: #7BC043; /* Цвет заливки */ transition: width 0.5s; /* Простая анимация изменения ширины */ } /* Кнопки действий */ .actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; } .actions button { padding: 10px 15px; font-size: 16px; border: none; border-radius: 4px; cursor: pointer; transition: transform 0.2s; background: #008CBA; color: #fff; } .actions button:hover { transform: scale(1.05); } /* Аватар или персонаж (упрощённо) */ .character { text-align: center; margin: 20px 0; } .girl-avatar { width: 180px; height: 280px; margin: 0 auto; border: 2px solid #ccc; background: linear-gradient(to bottom, #ffe0e0 30%, #ffcccc 100%); position: relative; border-radius: 10px; overflow: hidden; box-shadow: 0 0 10px rgba(0,0,0,0.2); } /* Пример "анимации" волнения — слегка качаем изображение, когда состояние критическое */ .shaking { animation: shake 0.5s infinite alternate; } @keyframes shake { 0% { transform: translateX(0); } 100% { transform: translateX(2px); } } /* Индикация (подсказка, что происходит) */ .status-message { font-weight: bold; margin-top: 5px; min-height: 24px; } /* Окно предупреждения или «game over» */ .warning { display: none; margin-top: 20px; padding: 10px; background: #ffdddd; border: 1px solid red; border-radius: 5px; text-align: center; font-weight: bold; color: #d8000c; } .visible { display: block !important; } </style> </head> <body> <h1>Симуляция организма</h1> <div class="container"> <div class="character"> <div id="avatar" class="girl-avatar"></div> <div id="statusMessage" class="status-message"></div> </div> <div class="stats"> <div class="stat"> <div class="stat-label">Голод:</div> <div class="stat-bar"> <span id="hunger-bar" class="stat-fill" style="width: 50%;"></span> </div> </div> <div class="stat"> <div class="stat-label">Жажда (водный баланс):</div> <div class="stat-bar"> <span id="thirst-bar" class="stat-fill" style="width: 50%;"></span> </div> </div> <div class="stat"> <div class="stat-label">Мочевой пузырь:</div> <div class="stat-bar"> <span id="bladder-bar" class="stat-fill" style="width: 0%;"></span> </div> </div> <div class="stat"> <div class="stat-label">Кишечник:</div> <div class="stat-bar"> <span id="bowel-bar" class="stat-fill" style="width: 0%;"></span> </div> </div> </div> <div class="actions"> <button id="eat">Поесть</button> <button id="drink">Попить</button> <button id="toilet">Сходить в туалет (писать)</button> <button id="toilet-big">Сходить в туалет (какать)</button> </div> <div class="warning" id="warningMessage"></div> </div> <script> // Статусы персонажа (в процентах, от 0 до 100) let hunger = 50; // Голод: 0% — наелась, 100% — страшно голодная let thirst = 50; // Жажда: 0% — нормальная гидратация, 100% — очень хочет пить let bladder = 0; // Мочевой пузырь: 0% — пуст, 100% — переполнен let bowel = 0; // "Кишечник": 0% — пуст, 100% — очень надо «по-большому» const hungerBar = document.getElementById("hunger-bar"); const thirstBar = document.getElementById("thirst-bar"); const bladderBar = document.getElementById("bladder-bar"); const bowelBar = document.getElementById("bowel-bar"); const statusMessage = document.getElementById("statusMessage"); const avatar = document.getElementById("avatar"); const warningMessage = document.getElementById("warningMessage"); // Кнопки const btnEat = document.getElementById("eat"); const btnDrink = document.getElementById("drink"); const btnToilet = document.getElementById("toilet"); const btnToiletBig = document.getElementById("toilet-big"); // Обновление полосок состояния function updateBars() { hungerBar.style.width = hunger + "%"; thirstBar.style.width = thirst + "%"; bladderBar.style.width = bladder + "%"; bowelBar.style.width = bowel + "%"; } // Проверяем критические значения function checkCritical() { // Если мочевой пузырь переполнился if (bladder >= 100) { // Событие: Девушка описалась / лопнул пузырь и т.д. warningMessage.classList.add("visible"); warningMessage.innerText = "Упс! Она не успела добежать до туалета!"; avatar.classList.add("shaking"); } else if (bowel >= 100) { warningMessage.classList.add("visible"); warningMessage.innerText = "О нет! Произошла неприятность..."; avatar.classList.add("shaking"); } else { warningMessage.classList.remove("visible"); avatar.classList.remove("shaking"); } } // Обновляем статус: например, комментарий персонажа function updateStatusMessage() { let msg = ""; if (hunger >= 80) { msg = "Она очень голодна!"; } else if (hunger < 20) { msg = "Наелась."; } if (thirst >= 80) { msg += (msg ? " " : "") + "Очень хочет пить!"; } else if (thirst < 20) { msg += (msg ? " " : "") + "Уровень жидкости в норме."; } if (bladder >= 80) { msg += (msg ? " " : "") + "Срочно нужно в туалет (по-маленькому)!"; } if (bowel >= 80) { msg += (msg ? " " : "") + "Срочно нужно в туалет (по-большому)!"; } statusMessage.innerText = msg; } // Естественное изменение со временем: растёт мочевой пузырь, кишечник function autoUpdate() { // Базовый прирост bladder += 1; bowel += 0.5; // растёт медленнее // Рост голода и жажды, если не поедим/попьём hunger += 0.5; thirst += 0.5; // Но ограничим значения 0–100 hunger = Math.min(hunger, 100); thirst = Math.min(thirst, 100); bladder = Math.min(bladder, 100); bowel = Math.min(bowel, 100); updateBars(); checkCritical(); updateStatusMessage(); } // При нажатии кнопок btnEat.addEventListener("click", () => { // Поесть: уменьшает голод hunger = Math.max(hunger - 20, 0); // Но при этом может слегка увеличиваться отходы bowel = Math.min(bowel + 5, 100); updateBars(); checkCritical(); updateStatusMessage(); }); btnDrink.addEventListener("click", () => { // Попить: уменьшает жажду thirst = Math.max(thirst - 20, 0); // Увеличивает заполнение мочевого пузыря bladder = Math.min(bladder + 10, 100); updateBars(); checkCritical(); updateStatusMessage(); }); btnToilet.addEventListener("click", () => { // Сходить в туалет (по-маленькому): опустошаем мочевой пузырь bladder = 0; updateBars(); checkCritical(); updateStatusMessage(); }); btnToiletBig.addEventListener("click", () => { // Сходить в туалет (по-большому): опустошаем кишечник bowel = 0; updateBars(); checkCritical(); updateStatusMessage(); }); // Запустим интервал, который будет симулировать время (например, раз в 3 сек) setInterval(autoUpdate, 3000); // Изначальное обновление updateBars(); updateStatusMessage(); </script> </body> </html>
Параметры персонажа:
hunger
— голод, меняется в пределах 0–100%. Чем выше, тем сильнее голод.thirst
— «жажда», тоже 0–100%.bladder
— заполненность мочевого пузыря. 0% — пуст, 100% — риск аварии.bowel
— заполненность кишечника.Прирост со временем (autoUpdate
):
bladder
, bowel
, hunger
, thirst
.checkCritical
).Кнопки действий:
bowel
.bladder
.bowel
.Отображение:
warningMessage
).shaking
, меняющий позицию с помощью CSS-анимации.Дальнейшая доработка:
Это пример, как можно сделать «скелет» подобного симулятора. При необходимости вы можете разбить логику по отдельным модулям, хранить данные в localStorage, подключать полноценную анимацию персонажа (GIF/Canvas/WebGL/SVG), расширять интерфейс и т.д.