Forked from Kotokola/gist:e05c5561f7fdae16686c71af52e41343
Last active
June 30, 2025 13:06
-
-
Save RimMirK/a18e4435f62f90b3bc66c4e8e1c08da5 to your computer and use it in GitHub Desktop.
Game
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import random | |
| import time | |
| import json | |
| floors_counter = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', "11", "12", "13", "14", "15"] | |
| balance = 1000 | |
| floors = [] | |
| name = None | |
| bought_item_jewerly = [] | |
| bought_item_shoe = [] | |
| bought_item_electronic = [] | |
| bought_item_food = [] | |
| shop_item_jewerly = {"Платиновое кольцо":"100", | |
| "Серебряное кольцо":"150", | |
| "Колье":"125", | |
| "Кольцо с бриллиантом":"200", | |
| "Цепочка":"175"} | |
| shop_item_shoe = {"Каблуки":"150", | |
| "Кроссовки Adidas":"200", | |
| "Кроссовки Nike":"200", | |
| "Резиновые сапоги":"175", | |
| "Галоши":"125"} | |
| shop_item_food = {"Мясо говяжье":"300", | |
| "Хлеб":"50", | |
| "Колбаса":"200", | |
| "Йогурт":"100", | |
| "Чай":"150"} | |
| shop_item_electronics = {"Ноутбук":"500", | |
| 'Монитор':"400", | |
| "Мышка":"200", | |
| "Клавиатура":"350", | |
| "Наушники":"300"} | |
| num_floors = 0 | |
| def wait_seconds(seconds=3): | |
| time.sleep(seconds) | |
| def restart_game(): | |
| global balance, floors, num_floors, name | |
| balance = 1000 | |
| floors = [] | |
| num_floors = 0 | |
| name = None | |
| print("Игра перезапущена! Ваш баланс обнулен, и этажи очищены.") | |
| wait_seconds(2) | |
| def menu(): | |
| global balance, name, num_floors, floors | |
| if load_game(): | |
| load_game() | |
| if name is None: | |
| name = input("Добро пожаловать! Введите своё имя: ") | |
| else: | |
| print(f"С возвращением, {name}! ") | |
| wait_seconds(3) | |
| while True: | |
| menu_text = ( | |
| f"Добро пожаловать в игру 'Небоскреб', {name}! " | |
| f"Возможные действия: " | |
| f"1. Проверить баланс, " | |
| f"2. Построить этаж, " | |
| f"3. Показать этажи, " | |
| f"4. Работать лифтером, " | |
| f"5. Закупка товара, " | |
| f"6. Выложить товар, " | |
| f"7. Проверить на каком этаже какой товар, " | |
| f"8. Собрать выручку, " | |
| f"9. Перезапустить игру, " | |
| f"10. Выход. " | |
| "Каков ваш выбор? " | |
| ) | |
| choice = input(menu_text) | |
| if choice == "1": | |
| print("Ваш баланс составляет:", balance) | |
| elif choice == "2": | |
| floor_cost = build_floor() | |
| if balance >= floor_cost: | |
| floor_name = random.choice( | |
| ["Продуктовый Магазин", "Обувной Магазин", "Ювелирный Магазин", "Магазин Электроники", | |
| "Детский Магазин", "Банк", "Магазин Алкоголя"]) | |
| floors.append(f"{floors_counter[num_floors]}. {floor_name}") | |
| balance -= floor_cost | |
| num_floors += 1 | |
| print("Этаж обошелся вам в", floor_cost, ". Вы построили этаж", floor_name) | |
| else: | |
| print("Недостаточно средств для постройки этажа.") | |
| elif choice == "3": | |
| view_floors() | |
| elif choice == "4": | |
| if not floors: | |
| print("У вас недостаточно этажей") | |
| else: | |
| print("Вы везете пассажира. Время на поездку 30 секунд") | |
| time.sleep(30) | |
| income_lift = income_lifter() | |
| balance += income_lift | |
| print("Вы доставили пассажира, он заплатил Вам", income_lift) | |
| elif choice == "5": | |
| buy_item() | |
| elif choice == "6": | |
| sell_item() | |
| elif choice == "7": | |
| view_floors() | |
| elif choice == "8": | |
| collect_money() | |
| elif choice == "9": | |
| restart_game() | |
| elif choice == "10": | |
| print("До свидания!") | |
| save_game() | |
| break | |
| else: | |
| print("Я не знаю, о чем вы говорите") | |
| def build_floor(): | |
| return random.randint(100, 500) | |
| def income_lifter(): | |
| return random.randint(10, 200) | |
| def view_floors(): | |
| if not floors: | |
| print("У вас нет построенных этажей.") | |
| else: | |
| print("Построенные этажи:",floors) | |
| def buy_item(): | |
| global balance | |
| if not floors: | |
| print("У вас нету этажей для закупки товара!") | |
| else: | |
| floor_to_buy = input("На каком этаже вы хотите купить товар? ") | |
| if floor_to_buy in floors: | |
| if floor_to_buy == "Ювелирный Магазин": | |
| tovar = input( | |
| "Какой товар вы хотите купить? Платиновое кольцо, Серебряное кольцо, Колье, Кольцо с бриллиантом, Цепочка ") | |
| if tovar == "Платиновое кольцо": | |
| print("Данный товар обошелся вам в 75") | |
| do_payment(75) | |
| bought_item_jewerly.append("Платиновое кольцо") | |
| if tovar == "Серебряное кольцо": | |
| print("Данный товар обошелся вам в 125") | |
| do_payment(125) | |
| bought_item_jewerly.append("Серебряное кольцо") | |
| if tovar == "Колье": | |
| print("Данный товар обошелся вам в 100") | |
| do_payment(100) | |
| bought_item_jewerly.append("Колье") | |
| if tovar == "Кольцо с бриллиантом": | |
| print("Данный товар обошелся вам в 175") | |
| do_payment(175) | |
| bought_item_jewerly.append("Кольцо с бриллиантом") | |
| if tovar == "Цепочка": | |
| print("Данный товар обошелся вам в 150") | |
| do_payment(150) | |
| bought_item_jewerly.append("Цепочка") | |
| if floor_to_buy == "Магазин Электроники": | |
| tovar = input("Какой товар вы хотите купить? Ноутбук, Монитор, Мышка, Клавиатура, Наушники ") | |
| if tovar == "Ноутбук": | |
| print("Данный товар обошелся вам в 400") | |
| do_payment(400) | |
| bought_item_electronic.append("Ноутбук") | |
| if tovar == "Монитор": | |
| print("Данный товар обошелся вам в 350") | |
| do_payment(350) | |
| bought_item_electronic.append("Монитор") | |
| if tovar == "Мышка": | |
| print("Данный товар обошелся вам в 100") | |
| do_payment(100) | |
| bought_item_electronic.append("Мышка") | |
| if tovar == "Клавиатура": | |
| print("Данный товар обошелся вам в 300") | |
| do_payment(300) | |
| bought_item_electronic.append("Клавиатура") | |
| if tovar == "Наушники": | |
| print("Данный товар обошелся вам в 250") | |
| do_payment(250) | |
| bought_item_electronic.append("Наушники") | |
| if floor_to_buy == "Продуктовый Магазин": | |
| tovar = input("Какой товар вы хотите купить? Мясо говяжье, Хлеб, Колбаса, Йогурт, Чай ") | |
| if tovar == "Мясо говяжье": | |
| print("Данный товар обошелся вам в 200") | |
| do_payment(200) | |
| bought_item_food.append("Мясо говяжье") | |
| if tovar == "Чай": | |
| print("Данный товар обошелся вам в 100") | |
| do_payment(100) | |
| bought_item_food.append("Чай") | |
| if tovar == "Йогурт": | |
| print("Данный товар обошелся вам в 50") | |
| do_payment(50) | |
| bought_item_food.append("Йогурт") | |
| if tovar == "Хлеб": | |
| print("Данный товар обошелся вам в 30") | |
| do_payment(30) | |
| bought_item_food.append("Хлеб") | |
| if tovar == "Колбаса": | |
| print("Данный товар обошелся вам в 150") | |
| do_payment(150) | |
| bought_item_food.append("Колбаса") | |
| if floor_to_buy not in floors: | |
| print("У Вас нету этого этажа / его не существует!") | |
| def sell_item(): | |
| global balance | |
| if not floors: | |
| print("У вас нет построенных этажей для продажи товаров.") | |
| return | |
| print("Выберите этаж, на котором хотите выставить товар:") | |
| for index, floor in enumerate(floors): | |
| print(f"{index + 1}: {floor}") | |
| floor_choice = int(input("Введите номер этажа: ")) - 1 | |
| if floor_choice < 0 or floor_choice >= len(floors): | |
| print("Некорректный выбор этажа.") | |
| return | |
| item_type = input("Какой товар вы хотите продать? (ювелирные изделия/обувь/еда/электроника): ").strip().lower() | |
| item_price = random.randint(50, 500) # Генерируем случайную цену для товара. | |
| item_quantity = int(input("Введите количество товаров для продажи: ")) | |
| if item_type == "ювелирные изделия": | |
| bought_item_jewerly.append((item_quantity, item_price)) | |
| elif item_type == "обувь": | |
| bought_item_shoe.append((item_quantity, item_price)) | |
| elif item_type == "еда": | |
| bought_item_food.append((item_quantity, item_price)) | |
| elif item_type == "электроника": | |
| bought_item_electronic.append((item_quantity, item_price)) | |
| else: | |
| print("Неизвестный тип товара.") | |
| return | |
| print(f"{item_quantity} единиц(ы) {item_type} выставлено на продажу на {floors[floor_choice]}.") | |
| def collect_money(): | |
| global balance | |
| collected_money = 0 | |
| items_info = [] | |
| if bought_item_jewerly: | |
| total_jewerly = sum(quantity * price for quantity, price in bought_item_jewerly) | |
| collected_money += total_jewerly | |
| items_info.append(f"Ювелирные изделия: {total_jewerly}") | |
| if bought_item_shoe: | |
| total_shoe = sum(quantity * price for quantity, price in bought_item_shoe) | |
| collected_money += total_shoe | |
| items_info.append(f"Обувь: {total_shoe}") | |
| if bought_item_food: | |
| total_food = sum(quantity * price for quantity, price in bought_item_food) | |
| collected_money += total_food | |
| items_info.append(f"Еда: {total_food}") | |
| if bought_item_electronic: | |
| total_electronic = sum(quantity * price for quantity, price in bought_item_electronic) | |
| collected_money += total_electronic | |
| items_info.append(f"Электроника: {total_electronic}") | |
| if collected_money == 0: | |
| print("Нет товаров для сбора.") | |
| else: | |
| balance += collected_money | |
| print("Вы собрали:", collected_money) | |
| print("Деньги были собраны с следующих товаров:") | |
| for info in items_info: | |
| print(info) | |
| def do_payment(amount): | |
| global balance | |
| if balance >= amount: | |
| balance -= amount | |
| print("Вы приобрели товар") | |
| return True | |
| else: | |
| print("На вашем балансе недостаточно денег") | |
| return False | |
| def save_game(): | |
| game_data = { | |
| 'balance': balance, | |
| 'floors': floors, | |
| 'num_floors': num_floors, | |
| 'name': name | |
| } | |
| with open('data.json', 'w') as f: | |
| json.dump(game_data, f) | |
| print("Игра сохранена!") | |
| def load_game(): | |
| global balance, floors, num_floors, name | |
| try: | |
| with open('data.json', 'r') as f: | |
| game_data = json.load(f) | |
| balance = game_data['balance'] | |
| floors = game_data['floors'] | |
| num_floors = game_data['num_floors'] | |
| name = game_data['name'] | |
| print("Игра загружена!") | |
| except FileNotFoundError: | |
| print("Нет сохраненной игры.") | |
| except json.JSONDecodeError: | |
| print("Ошибка при загрузке игры. Файл поврежден.") | |
| menu() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment