Кто не движется вперед - тот движется назад!

Кирилл Каримов kir2k

Рейтинг: 201
не верифицирован
Всего отзывов: 1 0
Профессионализм: 10 Коммуникация: 10
  • Активность:
  • Работ в портфолио: 2
  • Типовых услуг: 3
  • Работ на продажу: 0
  • Образование: Cпециалитет
  • Стаж работы: 47 лет
  • Тип занятости: Полный фриланс
  • Юридический статус:Самозанятый
Был на сайте:

игра bat->python

Используемые навыки:

Описание

переписать код игры с .bat на Python

Задача
нужно плностью переписать код не упуская элементов , можно изменять логику и т.д но надо что бы игра шла точно так же

Решение

Этот BAT-файл представляет собой комплексный скрипт для текстовой RPG-игры с элементами адвенчуры.

Инициализация и настройка:
Устанавливает скрытую папку filesG для хранения данных игры
Загружает вспомогательный скрипт monitor.bat с Google Drive
Создает структуру папок для сохранений, музыки, конфигов и инструментов
Загружает музыкальные файлы (4 трека) для саундтрека игры

Игровой процесс:
35 уникальных комнат с детальными описаниями
Система перемещения между комнатами (запад/восток)
Инвентарь с ограничением по весу
Экономика с внутриигровой валютой (монеты)
Случайные враги с различными характеристиками
Пошаговая боевая система с уклонением и защитой
Система уровней и прокачки характеристик

Особенности игры:
Динамическая смена времени суток и погоды
Влияние погодных условий на игровые механики
Сложная система предметов с разной редкостью
Возможность сохранения/загрузки игр
Настраиваемая громкость и управление музыкой
Скрытые пасхалки и читы через консоль

Технические особенности:
Использование PowerShell для загрузки файлов
Интеграция со сторонними приложениями (VLC, NirCmd)
Кодирование сохранений в Base64
Сложная система переменных и состояний
Анимации загрузки и визуальные эффекты

Безопасность:
Проверка целостности загружаемых файлов
Шифрование ключевых игровых файлов
Сокрытие системных файлов игры
Защита от модификации через контрольные суммы
Есть риск подмены файлов при установке

Результат

import os
import json
import random
import requests
from pathlib import Path
import pygame
import sys
from enum import Enum
import ctypes

# Настройки игры
SAVE_DIR = Path("filesG/saves")
MUSIC_DIR = Path("filesG/music")
CONFIG_FILE = Path("filesG/config/game_config.cfg")

class GameState:
def __init__(self):
self.player_health = 100
self.max_health = 100
self.room = 1
self.coins = 50
self.inventory = []
self.player_level = 1
self.experience = 0
self.weather = "Солнечно"
self.time_of_day = "Утро"

class RoomType(Enum):
DEFAULT = 1
BATTLE = 2
TREASURE = 3
TRAP = 4

class GameEngine:
def __init__(self):
self.state = GameState()
self.running = True
self.current_music = None
self.vlc_instance = None
pygame.init()

def initialize_directories(self):
SAVE_DIR.mkdir(parents=True, exist_ok=True)
MUSIC_DIR.mkdir(parents=True, exist_ok=True)

def load_resources(self):
self.load_music()
self.download_missing_files()

def download_missing_files(self):
# Реализация загрузки файлов
pass

def play_music(self, filename):
pygame.mixer.music.load(str(MUSIC_DIR / filename))
pygame.mixer.music.play(-1)

def handle_input(self, prompt, valid_choices):
while True:
choice = input(prompt).upper()
if choice in valid_choices:
return choice
print("Неверный ввод!")

def generate_room(self):
# Генерация комнаты с описанием
rooms = {
1: {
"description": "Врата Забвения...",
"type": RoomType.DEFAULT,
"items": ["Сундук (обычный)"]
},
# ... остальные комнаты
}
return rooms.get(self.state.room, {})

def combat_system(self, enemy):
print(f"Бой с {enemy['name']}!")
while enemy["health"] > 0 and self.state.player_health > 0:
# Логика боя
pass

def save_game(self):
data = {
"room": self.state.room,
"health": self.state.player_health,
"inventory": self.state.inventory,
# ... другие параметры
}
with open(SAVE_DIR / "save.sav", "w") as f:
json.dump(data, f)

def load_game(self):
# Загрузка сохранения
pass

def main_menu(self):
while True:
print("Главное меню:")
print("1. Новая игра")
print("2. Загрузить игру")
print("3. Настройки")
print("4. Выход")

choice = self.handle_input("Выберите: ", ["1", "2", "3", "4"])

if choice == "1":
self.new_game()
elif choice == "2":
self.load_game()
elif choice == "3":
self.settings_menu()
elif choice == "4":
self.running = False
return

def game_loop(self):
while self.running:
current_room = self.generate_room()
self.display_room(current_room)

action = self.handle_input(
"[A] Запад [D] Восток [E] Осмотр [I] Инвентарь [S] Сохранить [M] Меню: ",
["A", "D", "E", "I", "S", "M"]
)

if action == "A":
self.move_west()
elif action == "D":
self.move_east()
# ... обработка других действий

def run(self):
self.initialize_directories()
self.load_resources()
self.main_menu()
pygame.quit()

if __name__ == "__main__":
game = GameEngine()
game.run()

Презентация проекта

логотип.png

Оценили проект:

0