вторник, 16 апреля 2013 г.

Простой вывод текста Pygame

import pygame

# Инициализируем движок
pygame.init()

# Определяем цвета
aqua      = (  0, 255, 255)   # морская волна
black     = (  0,   0,   0)   # черный      
blue      = (  0,   0, 255)   # синий       
fuchsia   = (255,   0, 255)   # фуксия      
gray      = (128, 128, 128)   # серый       
green     = (  0, 128,   0)   # зеленый     
lime      = (  0, 255,   0)   # цвет лайма  
maroon    = (128,   0,   0)   # темно-бордовый
navy_blue = (  0,   0, 128)   # темно-синий 
olive     = (128, 128,   0)   # оливковый   
purple    = (128,   0, 128)   # фиолетовый  
red       = (255,   0,   0)   # красный     
silver    = (192, 192, 192)   # серебряный  
teal      = (  0, 128, 128)   # зелено-голубой
white     = (255, 255, 255)   # белый       
yellow    = (255, 255,   0)   # желтый      


# Задаем ширину и высоту экрана
size = [1000,800]
screen = pygame.display.set_mode(size)

# Установить заголовок окна
pygame.display.set_caption("Окно игры")

done=False
clock=pygame.time.Clock()

# Основной цикл программы
while done==False:
    # Пользователь что-то сделал
    for event in pygame.event.get():
        # Реагируем на действия пользователя
        if event.type == pygame.QUIT:
            done=True


    screen.fill(yellow)
    # Тут можно рисовать

    fontObj = pygame.font.Font('freesansbold.ttf', 50)
    textSurfaceObj = fontObj.render('Hello world!', True, yellow, blue)
    textRectObj = textSurfaceObj.get_rect()
    textRectObj.center = (500, 400)

    screen.fill(white)
    screen.blit(textSurfaceObj, textRectObj)

    # Рисунок появится после обновления экрана
    pygame.display.flip()

    # Экран будет перерисовываться 30 раз в секунду
    clock.tick(30)

# Корректный выход
pygame.quit()



Еще примеры:

# Выбрать шрифт для использования.
# Стандартный шрифт, размером в 25.
font = pygame.font.Font(None, 25)

# Воспроизвести текст. "True" значит,
# что текст будет сглаженным (anti-aliased).
# Чёрный - цвет. Переменную black мы задали ранее,
# списком [0,0,0]
# Заметьте: эта строка создаёт картинку с буквами,
# но пока не выводит её на экран.

text = font.render("My text",True,black)

# Вывести сделанную картинку на экран в точке (250, 250)
screen.blit(text, [250,250])

# Вывести переменную
score = 9999
text = font.render("Score: "+str(score),True,black)
screen.blit(text, [300,300])



Основы Pygame

import pygame

# Инициализируем движок
pygame.init()

# Определяем цвета
aqua      = (  0, 255, 255)   # морская волна
black     = (  0,   0,   0)   # черный       
blue      = (  0,   0, 255)   # синий        
fuchsia   = (255,   0, 255)   # фуксия       
gray      = (128, 128, 128)   # серый        
green     = (  0, 128,   0)   # зеленый      
lime      = (  0, 255,   0)   # цвет лайма   
maroon    = (128,   0,   0)   # темно-бордовый
navy_blue = (  0,   0, 128)   # темно-синий  
olive     = (128, 128,   0)   # оливковый    
purple    = (128,   0, 128)   # фиолетовый   
red       = (255,   0,   0)   # красный      
silver    = (192, 192, 192)   # серебряный   
teal      = (  0, 128, 128)   # зелено-голубой
white     = (255, 255, 255)   # белый        
yellow    = (255, 255,   0)   # желтый       


# Задаем ширину и высоту экрана
size = [1000,800]
screen = pygame.display.set_mode(size)

# Установить заголовок окна
pygame.display.set_caption("Окно игры")

done=False
clock=pygame.time.Clock()

# Основной цикл программы
while done==False:
    # Пользователь что-то сделал
    for event in pygame.event.get():
        # Реагируем на действия пользователя
        if event.type == pygame.QUIT:
            done=True


    screen.fill(white)
    # Тут можно рисовать

    pygame.draw.polygon(screen, aqua, ((146, 0), (291, 106), (236, 277), (56, 277), (0,106)))
    pygame.draw.line(screen, red, (60, 60), (120, 60), 4)
    pygame.draw.line(screen, green, (120, 60), (60, 120))
    pygame.draw.line(screen, yellow, (60, 120), (120, 120), 4)
    pygame.draw.circle(screen, blue, (300, 50), 20,0)
    pygame.draw.ellipse(screen, maroon, (300, 250, 40, 80), 1)
    pygame.draw.rect(screen, purple, (200, 150, 100, 50))


    # Рисунок появится после обновления экрана
    pygame.display.flip()

    # Экран будет перерисовываться 30 раз в секунду
    clock.tick(30)

# Корректный выход
pygame.quit()




Еще примеры:

# Нарисовать на экране зелёную линию от (0,0) до (100,100)
# шириной в пять пикселей.
pygame.draw.line(screen,green,[0,0],[600,400],5)

# Нарисовать на экране красную линию от (0,300) до (500,300)
# шириной в восемь пикселей.
pygame.draw.line(screen,red,[0,300],[500,300],8)

# Нарисовать на экране несколько красных линий от (0,10) до (100,110)
# шириной в 5 пикселей, используя цикл
for y_offset in range(0,100,10):
    pygame.draw.line(screen,red,[0,10+y_offset],[100,110+y_offset],5)

# Нарисовать на экране несколько зелёных линий от (0,10) до (100,110)
# шириной в пять пикселей, используя цикл for
for y_offset in range(0,100,10):
   pygame.draw.line(screen,green,[0,10+y_offset],[100,110+y_offset],5)

# Нарисуем прямоугольник с координатами левого верхнего угла (20, 20)
# с шириной в 250 пикселей, и высотой в 100 пикселей.
# ширина линии 2 пикселя, цвет красный
pygame.draw.rect(screen,red,[20,20,250,100],2)

# Нарисуем эллипс с координатами левого верхнего угла (20, 20)
# с шириной в 250 пикселей, и высотой в 100 пикселей.
# ширина линии 2 пикселя, цвет красный
pygame.draw.ellipse(screen,red,[20,20,250,100],2)

# Нарисовать дугу как часть эллипса. Использовать радианы
# для нахождения нужного угла рисования.
pygame.draw.arc(screen,green,[100,100,250,200],  pi/2,     pi, 2)
pygame.draw.arc(screen,black,[100,100,250,200],     0,   pi/2, 2)
pygame.draw.arc(screen,red,  [100,100,250,200],3*pi/2,   2*pi, 2)
pygame.draw.arc(screen,blue, [100,100,250,200],    pi, 3*pi/2, 2)

# Эта команда рисует треугольник используя функцию polygon
pygame.draw.polygon(screen,black,[[100,100],[0,200],[200,200]],5)