Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2017, 05:35   #1
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию Дикораторы

Здравствуйте.
Может кто подсказать, что такое дикораторы, зачем они нужны и если можно пример написать?
Просто у меня есть библиотека. В ней можно реализовывать с помощью ООП или с помощью дикораторов. Код дикораторов мне кажется проще, но я про них никогда не слышал.
Заранее благодарен!
jonikster вне форума Ответить с цитированием
Старый 18.04.2017, 05:37   #2
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

О библиотеке. Ну вот например.
Я планирую разрабатывать звуковые игры. Но начать, нужно с простого. А именно открытие окна и обработка нажатия клавиш.
Вот как это будет в pygame. Тут очень просто:
Код:
import pygame
import sys
pygame.init()
pygame.mixer.init()
pygame.display.set_caption('Hello, world')
window = pygame.display.set_mode([800,600])
sound = pygame.mixer.Sound('1.wav')
while True:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                sound.play()
            if event.key == pygame.K_ESCAPE:
                pygame.quit()
                sys.exit(0)
    # Optional functions
    window.fill([0,0,0])
    pygame.display.update()
Но библиотека pyglet более популярна в этой сфере.
И её можно использовать как с дикораторами, так и с ООП.
Пример с дикораторами:
Код:
import pyglet
 
#open a 640x480 window to display images and capture input.
window = pyglet.window.Window(640,480)
 
#load a sound
sound = pyglet.media.load('test.wav',streaming=False)
 
#capture key presses
@window.event
def on_key_press(symbol,modifiers):
    if symbol == pyglet.window.key.SPACE:
        print "Space Bar pressed"
 
#if press enter, play sound
    elif symbol == pyglet.window.key.ENTER:
        print "Playing sound"
        sound.play()
 
#capture key releases
@window.event
def on_key_release(symbol,modifiers):
    if symbol == pyglet.window.key.SPACE:
        print "Space Bar released"
 
#draw images to the window
@window.event
def on_draw():
    window.clear()
 
#start event loop
pyglet.app.run()
А вот пример с ООП:
Код:
import pyglet
from pyglet.window import key
 
#main class
class Example(pyglet.window.Window):
    def __init__(self):
        super(Example, self).__init__(640, 480, caption="Example")
    #load a sound
        self.sound = pyglet.media.load('example.wav',streaming=False)
    #load an image
        self.picture = pyglet.image.load('example.png')
    #run our update function continuously
        pyglet.clock.schedule_interval(self.update, .01)
 
#primary update loop
    def update(self,dt):
    #draw screen
        self.draw()
 
#draw to the screen
    def draw(self):
        self.clear()
        self.picture.blit(0,0)
 
#capture key presses        
    def on_key_press(self,symbol,modifiers):
    #if space is pressed, play sound
        if symbol == key.SPACE:
            self.sound.play()
    #if escape pressed, quit
        if symbol == key.ESCAPE:
            self.close()
 
window = Example()
pyglet.app.run()
А такую реализацию я не очень понимаю.

Последний раз редактировалось Alex11223; 18.04.2017 в 07:54.
jonikster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск