# -*- encoding: utf-8 -*-
#
# Рисование
#
# Основано на примерах Simpson College Computer Science <http://cs.simpson.edu>

import pygame
from math import pi

# Определим константы для цветов (модель RGB)
black = (0, 0, 0)
white = (255, 255, 255)
green = (0, 255, 0)
red = (255, 0, 0)
blue = (0, 0, 255)


def main_impl():
    # Инициализируем экран для рисования
    size = (400, 500)
    screen = pygame.display.set_mode(size)

    # Установим заголовок окна
    pygame.display.set_caption("My Game 2")

    # Флаг: стоит ли завершить игру
    done = False

    # Создадим таймер для ограничения числа FPS
    clock = pygame.time.Clock()

    # ------- главный цикл приложения
    while not done:
        # Обработаем события (ввод с клавиатуры, мышь и т.п.)
        for event in pygame.event.get():
            if event.type == pygame.QUIT: # пользователь нажал кнопку закрытия окна
                done = True # завершить главный цикл на следующей итерации

        # ------- отрисовка
        # Закрасим экран белым цветом
        screen.fill(white)

        # Рисуем зелёную линию от (0, 0) до (100, 100) толщиной 5 пикселей
        pygame.draw.line(screen, green, (0,0), (100, 100), 5)

        # Рисуем несколько красных линий в цикле
        for y_offset in range(0, 100, 10):
            pygame.draw.line(screen, red,
                (0, 10 + y_offset), (100, 110 + y_offset), 5)

        # Выбираем шрифт для рисования текста: по умолчанию, высотой 25 пикселей
        font = pygame.font.Font(None, 25)

        # Создаём изображение с текстом. True — использовать сглаживание
        text = font.render("My text + текст на русском", True, black)

        # Рисуем изображение с текстом на экран в позиции (250, 250).
        screen.blit(text, (150, 250))

        # Рисуем прямоугольник
        pygame.draw.rect(screen, black, (20, 20, 250, 100), 2)

        # Рисуем эллипс, заданный описывающим прямоугольником
        pygame.draw.ellipse(screen, black, [20, 20, 250, 100], 2)

        # Рисуем дуги.
        pygame.draw.arc(screen, black, (20, 220, 250, 200),
                     0,     pi / 2, 2)
        pygame.draw.arc(screen, green, (20, 220, 250, 200),
                pi / 2,         pi, 2)
        pygame.draw.arc(screen, blue,  (20, 220, 250, 200),
                    pi, 3 * pi / 2, 2)
        pygame.draw.arc(screen, red,   (20, 220, 250, 200),
            3 * pi / 2,     2 * pi, 2)

        # Рисуем полигон (треугольник).
        pygame.draw.polygon(screen,black, [(100, 100), (0, 200), (200, 200)], 5)

        # ------- конец отрисовки

        # Ограничиваем частоту обновления экрана 20 кадрами в секунду
        clock.tick(20)

        # Показываем на экран только что нарисованный кадр
        pygame.display.flip()
    

def main():
    # Инициализируем библиотеку PyGame.
    pygame.init()

    try:
        main_impl()
    finally:
        # Всегда деинициализируем библиотеку PyGame, даже в случае падения.
        pygame.quit()


if __name__ == "__main__":
    main()