Унос миша и тастатуре у Госу

Игре су, по дефиницији, интерактивне. Госу ову интеракцију чини једноставном са једноставним интерфејсом за откривање и реаговање на притиске на тастере и миша.

Постоје два основна начина за руковање улазним подацима у вашем програму. Први је приступ оријентисан на догађаје. Када се притисну тастери, ваши програми примају догађај и можете реаговати у складу с тим. Друго је проверавање да ли је у време ажурирања одређено дугме притиснуто. Обе технике су потпуно валидне, користите оно што вам најбоље одговара.

Иза кулиса тастери су представљени целим бројевима. Ти целобројни кодови зависе од платформе и вероватно не би требало да пронађу свој пут у код ваше игре. Да ово апстрактно објаснимо, Госу пружа бројне константе које треба користити.

За сваки тастер тастатуре постоји Госу:: Кб * константно. За већину кључева лако се погоди имена ових константи. На пример, тастери са стрелицама су Госу:: КбЛефт, Госу:: КбРигхт, Госу:: КбУп и Госу:: КбДовн. Комплетну листу погледајте на документацију за Госу модул.

instagram viewer

Улазни догађаји се испоручују Госу:: Прозор инстанца. Пре у главној петљи ажурирање Госу ће испоручити догађаје за све тастере који су или притиснути или отпуштени. То се чини позивом на дугме и закопчати методама, преношењем ИД-а притиснутог тастера или дугмета.

У дугме и закопчати методе, често можете наћи случај изјава. Ово, осим што је веома функционално, пружа врло елегантан и експресиван начин одлучивања шта треба радити у зависности од тога које је дугме притиснуто или отпуштено. Следи кратак пример шта дугме метода може изгледати. Требало би га ставити у ваш Госу:: Прозор подразред и затвориће прозор (завршавајући програм) када бекство тастер је притиснут.

Лако, зар не? Проширимо ово. Овде је Плаиер класа. Може се померати улево и удесно ако се притисне леви и десни тастер. Имајте на уму да и ова класа има дугме и закопчати методе. Дјелују баш као и методе из Госу:: Прозор подразред. Госу ништа не зна Плаиер ипак, зваћемо то Плаиерметоде ручно из Госу:: ПрозорМетоде. Може се наћи потпуни пример за покретање овде.

Ако унос базиран на догађајима није ваш стил, можете затражити било који Госу:: Прозор да видите да ли је у било ком тренутку притиснуто било које дугме или тастер. Можете игнорисати дугме и закопчати повратни позив у потпуности.

Да питам Госу:: Прозор да бисте видели да ли је неки тастер притиснут, позовите дугме? метода са ид дугмета који желите да проверите. Не заборавите упитник у овом позиву! Ако позовете буттон_довн (Госу:: КбЛефт), бићеш извештавање притисните дугме за Госу:: Прозор подразред. Чак и ако немате дефинисане ниједне методе повратног позива, родитељска класа, Госу:: Прозор ће. Неће бити грешке, једноставно неће радити како очекујете. Само не заборавите тај упитник!

Овде је Плаиер класа преписана за употребу дугме? уместо догађаја. Доступан је потпуни пример за покретање овде. Овог пута се унос провјерава на почетку ажурирање метод. Приметићете и да је овај пример краћи, али по мом мишљењу мање елегантан.

Типкама миша рукује се на исти начин као и типкама и типковницом. Можете их оба питати дугме? и догађаји са дугме и закопчати. Међутим, кретање миша може се испитивати само, за кретање миша нема догађаја. Госу:: Прозорс моусе_к и моусе_и методе дају Кс и И координате показивача миша.

Имајте на уму да су Кс и И координате у односу на прозор игре. Тако, на пример, ако је миш у горњем левом углу, то ће бити близу координате (0,0). Такође, ако је показивач миша напољу прозора игре у потпуности, и даље ће пријављивати где је показивач у односу на прозор. Па обоје моусе_к и моусе_и може бити мања од нуле и већа од ширине или висине прозора.

Следећи програм ће приказати нови сприте где год кликнете мишем. Имајте на уму да се користи и улаз усмерен на догађаје (за кликове), као и упит вођен упитима (да би се добио положај миша). Доступна је цела датотека која се може покренути овде.