29.1. Догађаји увод¶
Механизам догађаја омогућава интеракцију прграма који је покренут (у извршењу) са корисником. Када корисник помери миша, притисне дугме миша или тастер на тастатури, бележи се догађај на који програм може одреаговати извршавањем неког програмског кода (обрадом догађаја).
Обрада догађаја ће се заснивати на постојању функције obradi_dogadjaj
, која
анализира сваки догађај који се десио и на основу тога мења
стање програма (представљено најчешће преко глобалних
променљивих). Информације о сваком догађају налазе се у објекту
dogadjaj
, који се аутоматски прослеђује као аргумент ове
функције.
Дефинисаћемо и функцију crtaj
која црта прозор на основу текућег стања
програма. Пошто ћемо многе догађаје игнорисати (на пример, у неком
програму ћемо реаговати само на померање миша, а не и на тастере
тастатуре), неће бити потребе да се сцена поново исцртава након сваког
догађаја. Зато ћемо усвојити конвенцију да функција
obradi_dogadjaj
враћа логичку вредност којом се назначава да ли је
потребно поново исцртати сцену.
Различити начини за реаговање на догађаје
Постоји неколико начина да се у програму реализује реаговање на
догађаје, и о њима више можеш прочитати овде.
Ми ћемо користити библиотеку
PyGameBg у којој ће се догађаји обрађивати у главној петљи која се
покреће функцијом pygamebg.event_loop
, чији су параметри функција
за цртање crtaj
и функција обраде догађаја obradi_dogadjaj
.
Типови догађаја¶
Функција obradi_dogadjaj
као аргумент прима догађај који се десио
и потребно је прво да утврди његов тип (да ли је то био притисак неког
тастера на тастатури, клик неког дугмета миша, померање миша и
слично). Сваки догађај чува податак о типу догађаја коме можемо
приступити помоћу поља type
и стога ће се у функцији
obradi_dogadjaj
најчешће вршити гранање на основу вредности овог
поља. У програмима заснованим на коришћењу библиотеке PyGameBg обрада
догађаја ће најчешће функционисати на следећи начин: