|
|
@@ -1,95 +1,69 @@
|
|
|
-import pygame
|
|
|
-import sys
|
|
|
-
|
|
|
-# Инициализация Pygame
|
|
|
-pygame.init()
|
|
|
-
|
|
|
-# Определим размеры экрана
|
|
|
-screen_width, screen_height = 800, 600
|
|
|
-screen = pygame.display.set_mode((screen_width, screen_height))
|
|
|
-pygame.display.set_caption("Игра: Работа с клиентами")
|
|
|
-
|
|
|
-# Цвета
|
|
|
-WHITE = (255, 255, 255)
|
|
|
-BLACK = (0, 0, 0)
|
|
|
-GREY = (169, 169, 169)
|
|
|
-
|
|
|
-# Шрифты
|
|
|
-font = pygame.font.SysFont(None, 36)
|
|
|
-
|
|
|
-# Картинка телефона
|
|
|
-phone_img = pygame.image.load('phone_icon.png') # Убедись, что иконка телефона есть в той же папке
|
|
|
-
|
|
|
-# Текст для сцены 1
|
|
|
-dialog_text = "Здравствуйте, у меня возникла проблема с заказом, можете помочь?"
|
|
|
-response_options = [
|
|
|
- "1. Здравствуйте, конечно, расскажите подробнее о вашей проблеме.",
|
|
|
- "2. Извините, это не в нашей компетенции.",
|
|
|
- "3. Мы не можем помочь в данный момент."
|
|
|
-]
|
|
|
-
|
|
|
-# Создание кнопок для ответа
|
|
|
-button_rects = [
|
|
|
- pygame.Rect(50, 500, 700, 50),
|
|
|
- pygame.Rect(50, 550, 700, 50),
|
|
|
- pygame.Rect(50, 600, 700, 50),
|
|
|
-]
|
|
|
-
|
|
|
-# Статус игры
|
|
|
-game_status = "waiting" # waiting, playing, finished
|
|
|
-
|
|
|
-# Функция для отображения текста
|
|
|
-def draw_text(text, x, y):
|
|
|
- text_surface = font.render(text, True, BLACK)
|
|
|
- screen.blit(text_surface, (x, y))
|
|
|
-
|
|
|
-# Функция для рисования кнопок с вариантами
|
|
|
-def draw_buttons():
|
|
|
- for i, rect in enumerate(button_rects):
|
|
|
- pygame.draw.rect(screen, GREY, rect)
|
|
|
- draw_text(response_options[i], rect.x + 10, rect.y + 10)
|
|
|
-
|
|
|
-# Главная игровая функция
|
|
|
-def game_loop():
|
|
|
- global game_status
|
|
|
-
|
|
|
- while True:
|
|
|
- screen.fill(WHITE)
|
|
|
- mouse_pos = pygame.mouse.get_pos()
|
|
|
-
|
|
|
- for event in pygame.event.get():
|
|
|
- if event.type == pygame.QUIT:
|
|
|
- pygame.quit()
|
|
|
- sys.exit()
|
|
|
-
|
|
|
- if event.type == pygame.MOUSEBUTTONDOWN:
|
|
|
- if game_status == "waiting":
|
|
|
- # Принятие звонка
|
|
|
- if phone_rect.collidepoint(mouse_pos):
|
|
|
- game_status = "playing"
|
|
|
- elif game_status == "playing":
|
|
|
- # Обработка выбора ответа
|
|
|
- for i, rect in enumerate(button_rects):
|
|
|
- if rect.collidepoint(mouse_pos):
|
|
|
- if i == 0: # Правильный ответ
|
|
|
- game_status = "finished"
|
|
|
- else: # Неправильный ответ
|
|
|
- game_status = "waiting" # Перезапуск сцены
|
|
|
-
|
|
|
- if game_status == "waiting":
|
|
|
- # Отображаем телефон для принятия звонка
|
|
|
- phone_rect = phone_img.get_rect(center=(screen_width // 2, screen_height // 2 - 100))
|
|
|
- screen.blit(phone_img, phone_rect)
|
|
|
- draw_text("Нажмите на телефон, чтобы принять звонок", 200, 50)
|
|
|
- elif game_status == "playing":
|
|
|
- # Отображаем диалог
|
|
|
- draw_text(dialog_text, 50, 50)
|
|
|
- draw_buttons()
|
|
|
- elif game_status == "finished":
|
|
|
- # Завершение сцены
|
|
|
- draw_text("Клиент доволен, задача выполнена!", 250, 50)
|
|
|
-
|
|
|
- pygame.display.flip()
|
|
|
-
|
|
|
-# Запуск игры
|
|
|
-game_loop()
|
|
|
+Сценарий
|
|
|
+Административный персонал и работа с пользователями
|
|
|
+Сцена 1: Принятие звонка от клиента
|
|
|
+Элементы:
|
|
|
+Телефон – иконка телефона, на который нужно кликнуть для принятия звонка.
|
|
|
+Текст диалога – окно с сообщениями, которое отображается после принятия звонка.
|
|
|
+Панель с вариантами ответов – несколько вариантов ответа на запрос клиента.
|
|
|
+Действия:
|
|
|
+Игрок должен кликнуть на телефон, чтобы принять звонок.
|
|
|
+После принятия звонка появляется текст с запросом клиента (например, "Здравствуйте, у меня возникла проблема с заказом, можете помочь?").
|
|
|
+Игрок должен выбрать из предложенных вариантов ответов:
|
|
|
+
|
|
|
+Вариант 1: "Здравствуйте, конечно, расскажите подробнее о вашей проблеме."
|
|
|
+Вариант 2: "Извините, это не в нашей компетенции."
|
|
|
+Вариант 3: "Мы не можем помочь в данный момент."
|
|
|
+Условия для продолжения игры:
|
|
|
+Игрок должен выбрать вариант ответа, который ведет к разрешению проблемы клиента. Например, ответить с предложением решения (вариант 1).
|
|
|
+Если выбраны неправильные ответы (варианты 2 и 3), клиент будет недоволен, и игроку нужно будет перезапустить сцену.
|
|
|
+Сцена 2: Организация рабочего процесса
|
|
|
+Элементы:
|
|
|
+Календарь – объект на экране, на который нужно кликнуть для открытия расписания.
|
|
|
+Документы – иконки документов, которые нужно разложить по категориям (например, "Отчеты", "Договоры", "Запросы").
|
|
|
+Запросы на встречи – появляющиеся иконки с запросами, которые нужно обработать.
|
|
|
+Действия:
|
|
|
+Игрок должен кликнуть на календарь и проверить расписание.
|
|
|
+Разложить документы по папкам, выбирая правильные категории для каждого.
|
|
|
+Ответить на запросы на встречи, подтверждая или отклоняя их.
|
|
|
+Условия для продолжения игры:
|
|
|
+Все документы должны быть правильно разложены по категориям.
|
|
|
+Все запросы на встречи должны быть обработаны.
|
|
|
+Если какие-то задачи не будут выполнены или оформлены неправильно (например, документы не в том порядке), игра не пройдет дальше, и нужно будет перезапустить сцену.
|
|
|
+Сцена 3: Обработка жалобы от клиента через электронную почту
|
|
|
+Элементы:
|
|
|
+Электронная почта – иконка с письмом, на которое нужно кликнуть.
|
|
|
+Форма ответа – поле для ввода текста ответа клиенту.
|
|
|
+Шаблоны ответов – несколько вариантов для быстрого ответа.
|
|
|
+Действия:
|
|
|
+Игрок должен открыть письмо с жалобой, которое пришло от клиента.
|
|
|
+Выбрать из предложенных вариантов шаблон для ответа (например, извинения или предложение решения проблемы).
|
|
|
+Игрок может также написать свой собственный ответ, чтобы более персонализировать его.
|
|
|
+Отправить ответ клиенту.
|
|
|
+Условия для продолжения игры:
|
|
|
+Игрок должен выбрать шаблон ответа, который решит проблему клиента (например, извинение за неудобства и предложение решения).
|
|
|
+Если выбран неверный шаблон или ответ не соответствует запросу, клиент останется недовольным, и игра вернется к начальной точке сцены.
|
|
|
+Сцена 4: Продажа услуги по телефону
|
|
|
+Элементы:
|
|
|
+Телефон – иконка телефона, на который нужно кликнуть для начала разговора с клиентом.
|
|
|
+Панель с предложениями услуг – информация о различных услугах, которые можно предложить клиенту.
|
|
|
+Диалог с клиентом – текст, в котором клиент интересуется услугой.
|
|
|
+Действия:
|
|
|
+Игрок должен принять звонок от клиента.
|
|
|
+Клиент спрашивает о услуге, и игрок должен выбрать подходящий вариант предложения, учитывая потребности клиента (например, предложение консультации, дополнительной услуги или скидки).
|
|
|
+Игрок должен выбрать правильный ответ, чтобы успешно продать услугу.
|
|
|
+Условия для продолжения игры:
|
|
|
+Игрок должен выбрать правильную услугу, соответствующую запросу клиента.
|
|
|
+Если игрок неправильно определит потребности клиента или предложит неподходящую услугу, клиент может отказаться от покупки, и игра не пройдет дальше.
|
|
|
+Сцена 5: Введение в CRM-систему и работа с запросами клиентов
|
|
|
+Элементы:
|
|
|
+CRM-система – окно с базой данных клиентов.
|
|
|
+Запросы клиентов – новые записи о запросах, которые нужно обработать.
|
|
|
+Панель зада – список действий, которые необходимо выполнить (например, добавить клиента в базу, обновить информацию).
|
|
|
+Действия:
|
|
|
+Игрок должен открыть CRM-систему и проверить новые запросы клиентов.
|
|
|
+Обновить информацию о клиентах, например, добавить новый контакт или изменить данные в базе.
|
|
|
+Игроку нужно выполнить все задачи, связанные с обработкой запросов клиентов (например, ответить на вопрос или назначить встречу).
|
|
|
+Условия для продолжения игры:
|
|
|
+Все запросы должны быть обработаны.
|
|
|
+Необходимо обновить или добавить данные в базу, если это требуется для дальнейшего взаимодействия с клиентами.
|
|
|
+Если данные не обновлены или запросы не обработаны вовремя, игра не завершится, и нужно будет перезапустить сцену.
|