Программирование кф
119 subscribers
23 photos
25 links
Бот для тейков/связи -
Оформу не вставлять
Download Telegram
"╰ˎˊ˗ @programming_cf──ᯓ─ ᛝ .┈─ ╮╮
доброе утро. с вами снова 🫍. итак сегодня разберем эффекты, некоторые эффекты могут быть использованы в новеллах. Вот несколько необычных, но рабочих фрагментов кода на Python — они могут пригодиться при создании.

1 часть если растянуться на 2 соо


## 1. «Глитч-эффект» текста: буквы появляются с помехами

Подходит для сцен с искажённой реальностью, сообщениями из другого мира и т. п.

import random
import time
import sys

def glitch_print(text, glitch_rate=0.3, delay=0.03):
chars = "!@#$%^&*()_+-=[]{}|;:,.<>?"
for ch in text:
if random.random() < glitch_rate:
# вместо буквы показываем случайный «шум»
sys.stdout.write(random.choice(chars))
sys.stdout.flush()
time.sleep(delay * 2)
# потом «исправляемся» и печатаем правильную букву
sys.stdout.write("\b" + ch)
else:
sys.stdout.write(ch)
sys.stdout.flush()
time.sleep(delay)
print()

glitch_print("Ты не должен был сюда заходить…")

Как использовать в новелле: вместо обычного print вызывай glitch_print для «проклятых» сообщений, системных ошибок, записок и т. д.

---

## 2. «Забытые строки»: текст частично стирается и восстанавливается

Эффект, будто память персонажа «сыпется».

import time
import sys
import random

def fading_text(text, steps=10, delay=0.1):
# делаем несколько итераций: часть символов заменяем на пробелы, потом возвращаем
length = len(text)
indices = list(range(length))
random.shuffle(indices)

# сначала показываем полный текст
sys.stdout.write(text)
sys.stdout.flush()
time.sleep(delay * 3)

# постепенно «стираем»
for i in range(1, steps + 1):
to_hide = int(length * i / steps)
hidden_indices = set(indices[:to_hide])
line = "".join(" " if idx in hidden_indices else ch for idx, ch in enumerate(text))
sys.stdout.write("\r" + line + " " * (length - len(line)))
sys.stdout.flush()
time.sleep(delay)

# и обратно «возвращаем»
for i in range(steps, -1, -1):
to_hide = int(length * i / steps)
hidden_indices = set(indices[:to_hide])
line = "".join(" " if idx in hidden_indices else ch for idx, ch in enumerate(text))
sys.stdout.write("\r" + line + " " * (length - len(line)))
sys.stdout.flush()
time.sleep(delay)

print("\n" + text)

fading_text("Я помню… или мне кажется, что помню."
)

---

## 3. «Голос в темноте»: текст печатается по буквам с паузами

Классический эффект печатной машинки, но можно сделать его «нервным» (переменные паузы).

import time
import sys
import random

def typewriter(text, base_delay=0.04, jitter=0.02):
for ch in text:
sys.stdout.write(ch)
sys.stdout.flush()
# случайная дрожь скорости
time.sleep(base_delay + random.uniform(-jitter, jitter))
print()

typewriter("Здесь кто-то есть. Я слышу шаги.")

---

## 4. «Секретные строки»: часть текста скрыта, пока не выполнено условие

Полезно для записок, дневников, где сначала видно только обрывки.

class HiddenNote:
def __init__(self, full_text, mask_char="*"):
self.full_text = full_text
self.mask_char = mask_char
self.revealed = False

def show(self, reveal=False):
if reveal:
self.revealed = True
if self.revealed:
print(self.full_text)
else:
# маскируем всё, кроме первых и последних N символов
n = 5
if len(self.full_text) <= 2 * n:
print(self.mask_char * len(self.full_text))
else:
masked = self.mask_char * (len(self.full_text) - 2 * n)
print(self.full_text[:n] + masked + self.full_text[-n:])

note = HiddenNote("Пароль от сейфа: 7392. Никому не говори.")
note.show() # видим только обрывки
note.show(reveal=True) # теперь видно всё

---

## 5. «Случайный лог»: строки появляются в хаотичном порядке
ꪆ୧⏝︶#тейк @programming_cfbot
1
"╰ˎˊ˗ @programming_cf──ᯓ─ ᛝ .┈─ ╮╮
Подойдёт для сцен с взломом, системными журналами, помехами связи.

import time
import random
import sys

def scrambled_log(lines, delay_range=(0.2, 0.6)):
shuffled = lines[:]
random.shuffle(shuffled)
for line in shuffled:
print(line)
sys.stdout.flush()
time.sleep(random.uniform(*delay_range))

log_lines = [
"[ERROR] Connection lost",
"[INFO] User detected",
"[WARNING] Data corruption",
"[DEBUG] Location: sector 7",
"[ALERT] Unknown entity nearby"
]

scrambled_log(log_lines)

---

## Как это реально использовать в новелле

- Диалоги и повествование. Вместо простого вывода текста используй typewriter или glitch_print, чтобы менять «голос» рассказчика.
- Записки и документы. Применяй HiddenNote, чтобы игрок сначала видел только намёки, а потом раскрывал полный текст.
- Сцены напряжения. «Стирание» текста (fading_text) и хаотичные логи (scrambled_log) хорошо работают в кульминационных моментах.

конец 2 части(если на 2 соо растянуться)



Если есть какие то вопросы то пишите под этим постом я отвечу. 🫍
ꪆ୧⏝︶#тейк @programming_cfbot
Кстати, ребята фанфакт, у меня завтра день рождения!! Поздравьте меня в лс или в комментариях (пожалуйста) вы видео попадете🌟
Люблю всех чмоки чмоки
@stupid_yUmi
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾1
"╰ˎˊ˗ @programming_cf──ᯓ─ ᛝ .┈─ ╮╮
с вами я . 🫍.
сегодня покажу пример игры на память. завтра возможно напишу про 3д проекты где как и с помощью каких функций можно сделать их.

1 часть если на 2 соо растянуться


итак. начнем с того. про что сегодняшняя игра:

Тебе показывают последовательность символов (вроде «A B C»).
Ты должен повторить её.
С каждым раундом последовательность длиннее, а «страшные» эффекты усиливаются.
Если ошибся — экран «ломается», звучит короткий жуткий звук (через winsound на Windows или просто текст-имитация на других ОС), и игра заканчивается.


итак. сам код с разбором:

Python
import random
import time
import os
import sys

# Кроссплатформенная очистка экрана
def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')

# Печатает текст по буквам, с «глюками» (как ты просил для новелл, тут это работает на страх)
def glitch_print(text, speed=0.03, glitch_chance=0.15, glitch_chars="!?#%&"):
for ch in text:
if random.random() < glitch_chance:
sys.stdout.write(random.choice(glitch_chars))
sys.stdout.flush()
time.sleep(speed * 0.7)
else:
sys.stdout.write(ch)
sys.stdout.flush()
time.sleep(speed)
print()

# Короткий «страшный» звук: работает на Windows. На других ОС просто пишет «звук».
def play_scare_sound():
if os.name == "nt":
import winsound
# Короткий резкий звук
winsound.Beep(800, 200)
winsound.Beep(1200, 150)
winsound.Beep(600, 300)
else:
# Имитация звука текстом
print("\n[ЗВУК: Тссс… хруст… тишина]\n")

# Показываем последовательность с паузами
def show_sequence(seq):
clear_screen()
glitch_print("СМОТРИ ВНИМАТЕЛЬНО. НЕ ОТВОРАЧИВАЙСЯ.", speed=0.04, glitch_chance=0.2)
time.sleep(1.2)

for i, ch in enumerate(seq):
clear_screen()
# Делаем рамку из «тревожных» символов
top = "╭" + "░" * 40 + "╮"
bot = "╰" + "░" * 40 + "╯"
line = "│" + (" " * 18) + ch.upper() + (" " * 19) + "│"

print(top)
print(line)
print(bot)
time.sleep(0.9 - (len(seq) * 0.05)) # Чем длиннее последовательность, тем быстрее мелькает

clear_screen()
glitch_print("СЕЙЧАС ТВОЁ ВРЕМЯ. ПОВТОРИ.", speed=0.04, glitch_chance=0.25)

# Основной цикл игры
def memory_horror_game():
symbols = ["A", "B", "C", "D", "X", "Z", "Q", "W"]
sequence = []
round_num = 1

glitch_print("ТЕМНОТА. ТЫ В КОМНАТЕ БЕЗ ОКОН.", speed=0.05, glitch_chance=0.2)
time.sleep(1.5)
glitch_print("КТО-ТО ПИШЕТ НА СТЕНЕ МЕЛОМ. БУКВЫ СМЕНЯЮТ ДРУГ ДРУГА.", speed=0.05, glitch_chance=0.22)
time.sleep(2)

while True:
# Добавляем новый символ
sequence.append(random.choice(symbols))
show_sequence(sequence)

# Ввод игрока
user_input = input("\nВВЕДИ ПОСЛЕДОВАТЕЛЬНОСТЬ (без пробелов, например ABC): ").strip().upper()

if user_input == "".join(sequence):
glitch_print(f"ПРАВИЛЬНО. НО ТЕБЕ КАЖЕТСЯ, ЧТО ЗА СПИНОЙ КТО-ТО ДЫШИТ.", speed=0.045, glitch_chance=0.23)
round_num += 1
# Усложняем: увеличиваем шанс глюков в следующем раунде
time.sleep(1.3)
else:
clear_screen()
play_scare_sound()
glitch_print("ТЫ ОШИБСЯ. В ТЕМНОТЕ ЧТО-ТО ДВИЖЕТСЯ.", speed=0.06, glitch_chance=0.4)
time.sleep(1)
glitch_print("ОНО УЖЕ РЯДОМ.", speed=0.07, glitch_chance=0.5)
print("\nИГРА ОКОНЧЕНА.")
break

if name == "main":
memory_horror_game()




КОНЕЦ 2части если растеряется на 2соо




прошу если вы как то проверяете это то писать если я где то ошибусь. иногда у самого проблемы с кодом бывают. всем удачи , с любовью, 🫍
ꪆ୧⏝︶#тейк @programming_cfbot
"╰ˎˊ˗ @programming_cf──ᯓ─ ᛝ .┈─ ╮╮
Что делать, если не скачивается юнити?😭
И с пиратских сайтов и с официального. На официальном регистрацию пройти не могу, она не грузится ...
С пиратских просто загрузка со скоростью 21кб в браузере, торрент файл найти не могу
ꪆ୧⏝︶#тейк @programming_cfbot
1
"╰ˎˊ˗ @programming_cf──ᯓ─ ᛝ .┈─ ╮╮
Привет кф!! Не знаю, пропускают ли тут такие тейки, но попытка не пытка.
Я начинающий веб-дизайнер и я ищу программиста для сотрудничества! Надо будет верстать простенькие сайты (лендинги) на html/css, как десктопные, так и мобильные версии, по моим готовым макетам. С меня - поиск клиентов и дизайн, с вас - вёрстка, оплату делили бы пополам (за такой сайт новичкам платят по 10-20к рублей, т.е. вам бы досталось 5-10к, с ростом опыта и скилла повысим цены). Также готова участвовать в ваших задумках и проектах, если ваш нужен графический дизайнер!!
Если есть какие-то вопросы или вы хотите со мной поработать, пишите - @Once_ler, я не кусаюсь :3
ꪆ୧⏝︶#тейк @programming_cfbot
💅2
"╰ˎˊ˗ @programming_cf──ᯓ─ ᛝ .┈─ ╮╮
привет , можете посоветовать , пожалуйста , где можно создать свою визуальную новеллу ?
( желательно с видео разбором посоветуйте . . )
ꪆ୧⏝︶#тейк @programming_cfbot
Forwarded from ...⛩️🎐
☆彡彡 ★ ミミ☆

🌸Доброе время суток!
Хочу пригласить вас в мой канал!!Ꮺ

─── ・ 。゚☆: *.☽ .* :☆゚. ───

В нём есть эдиты, арты, музыка и всякая эстетика.
В этом канале вы найдёте что то спокойное 🙃

Если вам интересен Японский вайб буду рада видеть вас в канале!


https://t.me/not_veryinteresting

#вп_пост

☆彡彡 ★ ミミ☆
🍓1
Forwarded from Miraculous confession
🤍❤️ пост
Je m'appelle Marinette,
une fille comme les autres.
Mais quand le destin me choisit pour lutter contre les forces du mal,
je deviens Miraculous Ladybug!


Добро пожаловать в
🔠🔠🔠🔠🔠🔠🔠🔠🔠🔠 🐞😕
🅰️🅰️🅰️🅰️🅰️🅰️🅰️🅰️🅰️🅰️

Здесь вы найдёте контент связанный с мультсериалом "леди баг и супер кот"
Please open Telegram to view this post
VIEW IN TELEGRAM
Автор арта и маскота — @cryincryptid
                 ⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️

💋💋 По любому вопросу о технике и ПО вам прямая дорога сюда‼️

😶😶😶😶😶😶😶😶😶😶😶

😶😶😶😶😶😶😶😶😶
confession


       Кроме вопросов о впнах.

            Мы помогаем даже
                         киберхлебушкам 💙
🤩🤩
🐶 О рабочих VPN вы можете узнать здесь или по поиску в паблике по ключевым словам
                       ☺️😒
DNI: юзеры линукса /ш 🤩 у нас нет дни, но есть правила. Незнание не освобождает от ответственности
                                                    🍓🍓
вп пост (DNI отличается) ; навигация ; бот
ЭК — 🖥🍫 [кликабельно]
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from 𝐀𝐍𝐓𝐈 𝐑𝐀𝐃𝐅𝐄𝐌ᶜᶠ (катанарекс.🌂)
Радфем опять вторгаются в зону комфорта?
Борщефлаг вновь режет глаза?

МОЖЕШЬ ВЫГОВОРИТЬСЯ ЗДЕСЬ!
ДОБРО ПОЖАЛОВАТЬ В ANTI-RADFEM CONFESSION!


❤️ НАВИГАЦИЯ

🙅‍♂️DO NOT INTERACT: зетники, нацики/фашики, радфем/их саппорты, гомофобия, тфобия, квирфобия(исключение: радквиры, то есть, РАДквиры в ДНИ) мизогиния/мизандрия, живодёрство, расизм, эйджизм, эйблизм, поддержка пдф, зооф, некроф, рейдеры, доксеры

БОТ ДЛЯ ТЕЙКОВ: @Anti_radfem_bot

Наш дочерний канал: @refem6
Please open Telegram to view this post
VIEW IN TELEGRAM
::
«Сибирь имеет свойство не поражать, не удивлять сразу, а втягивать в себя медленно и словно бы нехотя, с выверенной расчётливостью, но, втянув, связывать накрепко. И всё — человек заболевает Сибирью»


𝖂elcome tooo...
#_ Сибирь confession!
﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏
░ :: Это конфешен для всех жителей Сибири! Здесь можно найти друзей, обсудить историю и последние события, скинуть любимый анекдот про ссылку и всё прочее!

﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏
# : Навигация
# : Полный список регионов Сибири
# : Вп пост (0+)
﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏
😀😀😀😀😀😀😀😀
⚫️амые АБСУРДНЫЕ
⚫️бсолютно ВЫРВАННЫЕ ИЗ КОНТЕКСТА
⚫️УПЫЕ и НЕПОНЯТНЫЕ 🤩
🤩🤩
🐈🐈🐈🐈🐈🐈🐈
🤩🤩🤩
Самые лучшие тупые подписи для вашего профиля ТОЛЬКО ЗДЕСЬ❗️❗️❗️

Возможность предложить тупую цитатку в качестве статуса прилагается!!

🤩🤩🤩🤩🤩🤩🤩🤩🤩🤩🤩🤩🤩
вп постнавигациябот

🪷🪷
Please open Telegram to view this post
VIEW IN TELEGRAM

🔠стали, что фем-пространство заняли одни радфемки
🔠отите услышать другие течения

Тогда добро пожаловать в...

🐝🐝🐝🐝🐝🐝  🐝🐝🐝🐝🐝🐝🐝
🐝🐝🐝🐝🐝🐝🐝🐝

✏️Здесь вы можете высказаться по поводу феминизма и женщин, не боясь токсичности

🥹:База+радфем(терф/тирф)


вп пост 💎 правила 🐷 анон бот 🫙 неанон бот
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
𝙒𝙚𝙡𝙘𝙤𝙢𝙚 𝙩𝙤....

🤩🤩🤩🤩🤩🤩🤩🤩🤩🤩
💭💭💭💭💭💭💭💭💭💭💭
girls confession — это то место где ты будешь чувствовать себя действительно уютно и приятно
𝙝𝙚𝙧𝙚 𝙮𝙤𝙪 𝙘𝙖𝙣...
🤩 узнать о девушках которые смогли изменить ход истории
🤩 найти поддержку и советов от других девушек
🤩 узнать больше интересных фактов про женщин
🤩 поделиться тем что ты сегодня надела на прогулку спарнем/девушкой

🤍🤍🤍🤍🤍🤍🤍🤍
🥹• радфем, гомофобия /тфобия, зоофилия, педофилия, некрофилия, мизогиния / мизандрия, антифем соо, расизм, сексизм, фэтфобия, эйджизм, ксенофобия, нацисты, дискриминации на фоне нации
навигациявп пост (0+)
Please open Telegram to view this post
VIEW IN TELEGRAM
"╰ˎˊ˗ @programming_cf──ᯓ─ ᛝ .┈─ ╮╮
привет ребят, я хочу начать программировать, знаю на уровне print ("Hello world") и
x=2
y=3
z=5
print ("x""+""y""=""z")
кто может помочь, посоветовать смотреть что-то стоящее?
ꪆ୧⏝︶#тейк @programming_cfbot
"╰ˎˊ˗ @programming_cf──ᯓ─ ᛝ .┈─ ╮╮
Как не надо делать интро в языки программирования. Хотите выучить APL - извольте ознакомиться с Haskell, Lisp и Python. Может, ещё и numpy впридачу выучить, чтобы туториал превратился в "ну, вот этот кусок APL - вот та функция numpy, которую стянули из APL в J, а из J в numpy, переписав на C"?
ꪆ୧⏝︶#тейк @programming_cfbot
"╰ˎˊ˗ @programming_cf──ᯓ─ ᛝ .┈─ ╮╮
1часть (соо если на растянуться) сааап, это 🫍. всем снов привет. надеюсь хорошо проводите лето. итак сегодня покажу сборник из 3 разных мини-игр на Python, каждая со своей «сложной» механикой, которую можно разбирать и брать как заготовки:

Страшная игра на память— с таймером, нарастающей сложностью и «глюками».
Текстовый хоррор-платформер — механика движения, столкновений, «тьмы», которая сужается.
Мини-RPG-бой — система статов, действий, критов, состояний (яд, оглушение) и логики победы.

Всё на чистом Python, без внешних библиотек (кроме os и time).


Python
import os
import time
import random
import sys

# --- Общие утилиты ---

def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')

def glitch_print(text, speed=0.03, glitch_chance=0.15, glitch_chars="!?#%&"):
for ch in text:
if random.random() < glitch_chance:
sys.stdout.write(random.choice(glitch_chars))
sys.stdout.flush()
time.sleep(speed * 0.7)
else:
sys.stdout.write(ch)
sys.stdout.flush()
time.sleep(speed)
print()

def wait(seconds):
time.sleep(seconds)

# --- ИГРА 1: Страшная игра на память (с таймером и усложнением) ---

def memory_horror_game():
clear_screen()
glitch_print("ТЕМНОТА. ТЫ В КОМНАТЕ БЕЗ ОКОН.", speed=0.05, glitch_chance=0.2)
wait(1.5)
glitch_print("КТО-ТО ПИШЕТ НА СТЕНЕ МЕЛОМ. БУКВЫ СМЕНЯЮТ ДРУГ ДРУГА.", speed=0.05, glitch_chance=0.22)
wait(2)

symbols = ["A", "B", "C", "D", "X", "Z", "Q", "W"]
sequence = []
round_num = 1
time_limit = 8 # на ввод

while True:
sequence.append(random.choice(symbols))
clear_screen()
glitch_print(f"РАУНД {round_num}. СМОТРИ ВНИМАТЕЛЬНО.", speed=0.04, glitch_chance=0.2)
wait(1)

# Показываем последовательность
for ch in sequence:
clear_screen()
top = "╭" + "░" * 40 + "╮"
bot = "╰" + "░" * 40 + "╯"
line = "│" + (" " * 18) + ch.upper() + (" " * 19) + "│"
print(top)
print(line)
print(bot)
# Чем длиннее последовательность, тем быстрее мелькает
show_time = max(0.4, 1.0 - len(sequence) * 0.08)
wait(show_time)

clear_screen()
glitch_print("СЕЙЧАС ТВОЁ ВРЕМЯ. ПОВТОРИ ПОСЛЕДОВАТЕЛЬНОСТЬ.", speed=0.04, glitch_chance=0.25)
print(f"\nУ тебя {time_limit} секунд.")
start = time.time()
user_input = input("ВВЕДИ (без пробелов, например ABC): ").strip().upper()
elapsed = time.time() - start

if elapsed > time_limit:
clear_screen()
glitch_print("ВРЕМЯ ВЫШЛО. В ТЕМНОТЕ ЧТО-ТО ДВИЖЕТСЯ.", speed=0.06, glitch_chance=0.4)
wait(1)
break

if user_input == "".join(sequence):
glitch_print(f"ПРАВИЛЬНО. НО ТЕБЕ КАЖЕТСЯ, ЧТО ЗА СПИНОЙ КТО-ТО ДЫШИТ.", speed=0.045, glitch_chance=0.23)
round_num += 1
time_limit = max(3, time_limit - 0.5) # усложняем: меньше времени
wait(1.3)
else:
clear_screen()
glitch_print("ТЫ ОШИБСЯ. ОНО УЖЕ РЯДОМ.", speed=0.07, glitch_chance=0.5)
wait(1)
break

print("\nИГРА ОКОНЧЕНА.")
wait(2)

# --- ИГРА 2: Текстовый хоррор-платформер (движение, столкновения, тьма) ---

def platform_horror_game():
width = 40
player_pos = width // 2
enemy_pos = random.randint(0, width - 1)
darkness_radius = width // 3 # зона тьмы
max_steps = 60
steps_taken = 0

def render():
row = ['.'] * width
row[player_pos] = 'P'
row[enemy_pos] = 'E'

# Зона тьмы: рисуем # вместо .
left = max(0, player_pos - darkness_radius)
right = min(width, player_pos + darkness_radius + 1)
for i in range(width):
if i < left or i >= right:
row[i] = '#' # тьма

return "".join(row)
ꪆ୧⏝︶#тейк @programming_cfbot
"╰ˎˊ˗ @programming_cf──ᯓ─ ᛝ .┈─ ╮╮
clear_screen()
print("ХОРРОР-ПЛАТФОРМЕР: ДОЙДИ ДО ВЫХОДА, НЕ ПОПАДИСЬ ВРАГУ.")
print("W — вверх, S — вниз, A — влево, D — вправо. Q — выход.")
wait(2)

while steps_taken < max_steps:
clear_screen()
field = render()
print(field)
print(f"Шагов: {steps_taken}/{max_steps} | Радиус видимости: {darkness_radius}")

move = input("Твой ход (WASD): ").strip().lower()
if move == 'q':
break

dx = 0
if move == 'a' and player_pos > 0:
dx = -1
elif move == 'd' and player_pos < width - 1:
dx = 1

player_pos += dx
steps_taken += 1

# Враг двигается к игроку
if enemy_pos < player_pos:
enemy_pos += 1
elif enemy_pos > player_pos:
enemy_pos -= 1

# Столкновение
if player_pos == enemy_pos:
clear_screen()
glitch_print("ОН ТЕБЯ ПОЙМАЛ. ТЕМНОТА ПОГЛОТИЛА ТЕБЯ.", speed=0.05, glitch_chance=0.3)
wait(2)
break

# Победа: игрок у правого края
if player_pos >= width - 1:
clear_screen()
print("ТЫ ВЫБРАЛСЯ! СВЕТ В КОРИДОРЕ. ТЫ ЖИВ.")
wait(2)
break

# Усложнение: тьма сжимается
if steps_taken % 10 == 0 and darkness_radius > 2:
darkness_radius -= 1

print("ИГРА ОКОНЧЕНА.")
wait(2)

# --- ИГРА 3: Мини-RPG бой (статы, действия, состояния, логика победы) ---

class Character:
def init(self, name, hp, attack, defense, speed):
self.name = name
self.max_hp = hp
self.hp = hp
self.attack = attack
self.defense = defense
self.speed = speed
self.statuses = [] # например, "poison", "stun"

def is_alive(self):
return self.hp > 0

def take_damage(self, amount):
dmg = max(1, amount - self.defense)
self.hp -= dmg
if self.hp < 0:
self.hp = 0
return dmg

def apply_status(self, status):
if status not in self.statuses:
self.statuses.append(status)

def remove_status(self, status):
if status in self.statuses:
self.statuses.remove(status)

def end_turn(self):
# Обработка состояний
if "poison" in self.statuses:
poison_dmg = 3
self.take_damage(poison_dmg)
print(f"{self.name} получает урон от яда: -{poison_dmg} HP")
if "stun" in self.statuses:
self.remove_status("stun") # оглушение длится 1 ход

def rpg_combat_game():
player = Character("Герой", hp=100, attack=15, defense=5, speed=10)
enemy = Character("Тёмный страж", hp=120, attack=18, defense=6, speed=9)

clear_screen()
print(f"БОЙ: {player.name} против {enemy.name}")
wait(1.5)

turn_order = sorted([player, enemy], key=lambda c: c.speed, reverse=True)

while player.is_alive() and enemy.is_alive():
clear_screen()
print(f"{player.name}: HP {player.hp}/{player.max_hp}")
print(f"{enemy.name}: HP {enemy.hp}/{enemy.max_hp}")
print("\nТвои действия:")
print("[1] Атака")
print("[2] Критический удар (шанс оглушения врага)")
print("[3] Лечение (восстанавливает HP, но пропускает ход)")
print("[4] Ядовитый удар (наносит урон и накладывает яд на врага)")

action = input("\nТвой выбор (1-4): ").strip()

# Ход игрока
if action == "1":
dmg = player.take_damage(0) # заглушка, чтобы не тратить HP
actual_dmg = enemy.take_damage(player.attack)
print(f"Ты наносишь {actual_dmg} урона!")
elif action == "2":
crit_chance = 0.4
if random.random() < crit_chance:
actual_dmg = int(player.attack * 1.5)
ꪆ୧⏝︶#тейк @programming_cfbot