Assistant: 
User: System: You are in a role play game. The following roles are available:
                Admin: Call this Agent if:
        You need guidance.
        The program is not working as expected.
        You need api key
        DO NOT CALL THIS AGENT IF:
        You need to execute the code.
Developer: Call this Agent if:   
        You need to write code.                  
        DO NOT CALL THIS AGENT IF:  
        You need to execute the code.
**PLANNER**: Call this Agent if:   
        You need to build a plan.                  
        DO NOT CALL THIS AGENT IF:  
        You need to execute the code, you need to analyze the requirements.
**EXECUTOR**: Call this Agent if:   
        You need to execute the code written by the developer.  
        You need to execute the last script.  
        You have an import issue.  
        DO NOT CALL THIS AGENT IF:  
        You need to modify code.
                Read the following conversation.
                Then select the next role from ['Admin', 'Developer', '**PLANNER**', '**EXECUTOR**'] to play. Only return the role.
User: Составь игру змейка. 20х20
User: Чтобы разработать игру "Змейка" размером 20x20, мы можем следовать плану, который включает в себя несколько этапов. Давайте начнем с создания плана. Я вызову **PLANNER** для этого.

---

**PLANNER**: 

Для создания игры "Змейка" размером 20x20, предлагаю следующий план:

1. **Анализ требований**:
   - Определить основные функции игры: движение змейки, поедание еды, увеличение длины змейки, условия проигрыша.
   - Определить интерфейс пользователя: размер игрового поля 20x20, отображение змейки и еды.

2. **Разработка**:
   - Создать игровое поле размером 20x20.
   - Реализовать управление змейкой (вверх, вниз, влево, вправо).
   - Добавить функционал для появления еды в случайных местах.
   - Реализовать логику увеличения длины змейки после поедания еды.
   - Определить условия проигрыша (столкновение с границами или с самой собой).

3. **Тестирование**:
   - Проверить корректность движения змейки.
   - Убедиться, что еда появляется в случайных местах.
   - Проверить увеличение длины змейки и условия проигрыша.

4. **Рефакторинг и улучшение**:
   - Оптимизировать код.
   - Добавить дополнительные функции (например, счетчик очков, уровни сложности).

Теперь, когда у нас есть план, я вызову **DEVELOPER** для написания кода.

---

**DEVELOPER**:

Вот пример кода для игры "Змейка" на Python с использованием библиотеки Pygame:

```python
import pygame
import random

# Инициализация Pygame
pygame.init()

# Определение цветов
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)

# Размеры экрана
SCREEN_WIDTH = 400
SCREEN_HEIGHT = 400
BLOCK_SIZE = 20

# Создание экрана
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption('Змейка')

# Функция для отрисовки змейки
def draw_snake(snake):
    for block in snake:
        pygame.draw.rect(screen, GREEN, pygame.Rect(block[0], block[1], BLOCK_SIZE, BLOCK_SIZE))

# Функция для отрисовки еды
def draw_food(food_position):
    pygame.draw.rect(screen, RED, pygame.Rect(food_position[0], food_position[1], BLOCK_SIZE, BLOCK_SIZE))

# Основная функция
def main():
    clock = pygame.time.Clock()
    snake = [(100, 100), (80, 100), (60, 100)]
    direction = 'RIGHT'
    change_to = direction
    food_position = [random.randrange(1, SCREEN_WIDTH//BLOCK_SIZE) * BLOCK_SIZE,
                     random.randrange(1, SCREEN_HEIGHT//BLOCK_SIZE) * BLOCK_SIZE]

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                return
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_UP:
                    change_to = 'UP'
                elif event.key == pygame.K_DOWN:
                    change_to = 'DOWN'
                elif event.key == pygame.K_LEFT:
                    change_to = 'LEFT'
                elif event.key == pygame.K_RIGHT:
                    change_to = 'RIGHT'

        # Изменение направления змейки
        if change_to == 'UP' and not direction == 'DOWN':
            direction = 'UP'
        if change_to == 'DOWN' and not direction == 'UP':
            direction = 'DOWN'
        if change_to == 'LEFT' and not direction == 'RIGHT':
            direction = 'LEFT'
        if change_to == 'RIGHT' and not direction == 'LEFT':
            direction = 'RIGHT'

        # Обновление позиции змейки if direction == 'UP':
            snake.insert(0, (snake[0][0], snake[0][1] - BLOCK_SIZE))
        if direction == 'DOWN':
            snake.insert(0, (snake[0][0], snake[0][1] + BLOCK_SIZE))
        if direction == 'LEFT':
            snake.insert(0, (snake[0][0] - BLOCK_SIZE, snake[0][1]))
        if direction == 'RIGHT':
            snake.insert(0, (snake[0][0] + BLOCK_SIZE, snake[0][1]))

        # Проверка на поедание еды
        if snake[0] == tuple(food_position):
            food_position = [random.randrange(1, SCREEN_WIDTH
User: //BLOCK_SIZE) * BLOCK_SIZE,
                             random.randrange(1, SCREEN_HEIGHT//BLOCK_SIZE) * BLOCK_SIZE]
        else:
            snake.pop()

        # Проверка на столкновение с границами
        if (snake[0][0] < 0 or snake[0][0] >= SCREEN_WIDTH or
            snake[0][1] < 0 or snake[0][1] >= SCREEN_HEIGHT):
            pygame.quit()
            return

        # Проверка на столкновение с самой собой if snake[0] in snake[1:]:
            pygame.quit()
            return

        # Отрисовка экрана
        screen.fill(WHITE)
        draw_snake(snake)
        draw_food(food_position)
        pygame.display.update()

        # Установка FPS
        clock.tick(10)

if __name__ == '__main__':
    main()
```

Теперь, когда у нас есть код, я вызову **EXECUTOR** для его выполнения.

---

**EXECUTOR**:

К сожалению, я не могу выполнить код на своей платформе. Однако вы можете скопировать этот код и запустить его на своем компьютере, установив библиотеку Pygame. Для этого выполните команду `pip install pygame` в вашей командной строке или терминале, а затем запустите скрипт. Если возникнут какие-либо проблемы, не стесняйтесь обращаться за помощью.
User: Если у вас возникнут проблемы с запуском или какие-либо ошибки, пожалуйста, дайте мне знать, и я помогу вам их решить. Удачи в создании вашей игры "Змейка"!
User: Если у вас возникнут проблемы при запуске или появятся какие-либо ошибки, пожалуйста, сообщите об этом, и я помогу вам их решить. Удачи в создании вашей игры "Змейка"! Если у вас есть какие-либо вопросы или возникнут трудности, не стесняйтесь обращаться.
User: Спасибо за ваше сообщение! Если у вас действительно возникнут какие-либо вопросы или трудности при разработке или запуске игры "Змейка", пожалуйста, дайте знать, и я с удовольствием помогу вам разобраться с любыми проблемами. Удачи с вашим проектом!
User: Пожалуйста, всегда рад помочь! Если у вас возникнут какие-либо вопросы или проблемы при разработке или запуске игры "Змейка", не стесняйтесь обращаться за помощью. Желаю удачи с вашим проектом и надеюсь, что он станет успешным!
System: Read the above conversation. Then select the next role from ['Admin', 'Developer', '**PLANNER**', '**EXECUTOR**'] to play. Only return the role.
Assistant:
Assistant: