Ақпарат

Госуда тышқан мен пернетақтаны енгізу

Госуда тышқан мен пернетақтаны енгізу


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Ойындар интерактивті болып табылады. Госу бұл әрекеттесуді перне мен тінтуірдің басылған батырмаларын анықтауға және оларға әсер етуге арналған қарапайым интерфейспен тікелей жасайды.

Сіздің бағдарламаңызға енгізуді басқарудың екі негізгі әдісі бар. Біріншісі - оқиғаға бағытталған тәсіл. Түймешіктер басылған кезде, сіздің бағдарламаларыңыз оқиғаны алады және сіз соған сәйкес реакция жасай аласыз. Екіншісі - жаңарту кезінде белгілі бір түйменің басылғандығын тексеру. Екі әдіс те жарамды, қайсысы сізге қолайлы екенін қолданыңыз.

Пернелер мен батырмалардың тұрақтылары

Сахна артында түймелер бүтін сандармен бейнеленген. Бұл бүтін сандар платформаға тәуелді және сіздің ойын кодына енбеуі мүмкін. Мұны дерексіздендіру үшін Госу бірқатар тұрақты константаларды ұсынады.

Әр пернетақта үшін a Gosu :: Kb * тұрақты. Кілттердің көпшілігінде бұл тұрақтылардың аттарын оңай білуге ​​болады. Мысалы, көрсеткі пернелері Gosu :: KbLeft, Gosu :: KbRight, Gosu :: KbUp және Gosu :: KbDown. Толық тізімді Gosu модулінің құжаттамасынан қараңыз.

Тінтуір батырмаларына ұқсас константалар бар. Сіз негізінен қолдана аласыз Gosu :: MsLeft және Gosu :: MsRight сол және оң жақ шертулер үшін Сондай-ақ, геймпадтарды қолдау мүмкіндігі бар Gosu :: Gp * тұрақтылар.

Бұл мақала сериялардың бір бөлігі. Рубидегі жылдам ойынды прототиптеу туралы қосымша мақалаларды оқыңыз

Оқиғаға бағытталған кіріс

Кіріс оқиғалары жеткізіледі Gosu :: Терезе данасы. Негізгі циклде, бұрын жаңарту деп аталады, Gosu басылған немесе шыққан барлық түймелер үшін оқиғаларды жеткізеді. Мұны қоңырау шалу арқылы жасайды батырмасын басыңыз және батырма_ту батырманың немесе батырманың басылған идентификаторын беру тәсілдері.

Ішінде батырмасын басыңыз және батырма_ту әдістерді жиі таба аласыз жағдай мәлімдеме. Бұл функция болуымен қатар, қандай батырманы басуға немесе босатуға байланысты не істеу керектігін шешудің талғампаз және мәнерлі тәсілін ұсынады. Төменде а дегеннің қысқа мысалы келтірілген батырмасын басыңыз әдісі көрінуі мүмкін. Ол сізге орналастырылуы керек Gosu :: Терезе қосалқы сыныпты ашып, терезені жабады (бағдарламаны аяқтау) қашу пернесі басылған.

Gosu :: KbEscape аяқталуының соңы болған кезде def button_down (id) case id

Оңай, дұрыс па? Осыны кеңейтейік. Міне а Ойнатқыш сынып. Егер сол және оң жақ пернелер басылса, ол солға және оңға қарай жылжи алады. Бұл класста да бар екенін ескеріңіз батырмасын басыңыз және батырма_ту әдістері. Олар а-дан алынған әдістер сияқты жұмыс істейді Gosu :: Терезе ішкі сынып. Госу туралы ештеңе білмейді Ойнатқыш дегенмен біз қоңырау шаламыз Ойнатқышәдістері қолмен Gosu :: Терезеәдістері. Толық, іске қосылатын мысалды мына жерден табуға болады.

класс ойыншысы # пиксель / секундта SPEED = 200 дефекттік жүктеме (терезе) with_data ('player.png') do | f | @@ image = Gosu :: Image.new (терезе, f, қате) соңын анықтаңыз (терезе) @window = терезе @x = (@ window.width / 2) - (@@ image.width / 2) @ y = @ windows.height - @@ image.height @direction = 0 соңғы def жаңарту (дельта) @x + = @ бағыттау * SPEED * delta @x = 0 егер @x @ windows.width - @@ image.width @ Gosu :: KbLeft @direction - = x = @ windows.width - @@ image.width end end draw draw @@ image.draw (@x, @y, Z :: Player) end def button_down (id) case id. Gosu :: KbRight @direction + = 1 соңы def def button_up (id) case id Gosu :: KbLeft @direction + = 1 кезде Gosu :: KbRight @direction - = 1 соңы соңы

Бұл мақала сериялардың бір бөлігі. Рубидегі жылдам ойынды прототиптеу туралы қосымша мақалаларды оқыңыз

Сұрау енгізу

Егер оқиғаға негізделген енгізу сіздің стиліңіз болмаса, кез-келген сұрауға болады Gosu :: Терезе кез келген уақытта қандай да бір батырма немесе батырма басылғанын көру үшін. Сіз елемеуге болады батырмасын басыңыз және батырма_ту толық кері байланыс.

Сұрау үшін Gosu :: Терезе перне басылғанын көру үшін қоңырау шалыңыз button_down? тексергіңіз келетін батырманың идентификаторымен Осы қоңыраудағы сұрақ белгісін ұмытпаңыз! Қоңырау шалсаңыз button_down (Gosu :: KbLeft), боласың есеп беру түймесін басыңыз Gosu :: Терезе ішкі сынып. Егер сізде қоңырау шалу әдісі анықталмаса да, ата-аналар класы, Gosu :: Терезе болады. Қате болмайды, ол сіз күткендей жұмыс істемейді. Бұл сұрақ белгісін ұмытпаңыз!

Міне Ойнатқыш сынып пайдалану үшін қайта жазылған button_down? іс-шаралар орнына. Мұнда толық, іске қосылатын мысал келтірілген. Бұл жолы кіріс басында тексеріледі жаңарту әдісі. Сондай-ақ, сіз бұл мысалдың қысқа, бірақ менің ойымша, кербез екенін байқайсыз.

класс ойыншы attr_reader: x,: y # пиксельдер / секундта SPEED = 200 def авто жүктеме (терезе) with_data ('player.png') do | f | @@ image = Gosu :: Image.new (терезе, f, қате) соңын анықтаңыз (терезе) @window = терезе @x = (@ window.width / 2) - (@@ image.width / 2) @ y = @ windows.height - @@ image.height @direction = 0 end def (0 (Gosu :: KbRight) @direction + = 1 соңы @x + = @ бағыттау * SPEED * дельта @x = 0 егер @x @ windows.width - @@ image.width @x = @ windows.width - @@ сурет .width end def draw @@ image.draw (@x, @y, Z :: Player) соңы

Бұл мақала сериялардың бір бөлігі. Рубидегі жылдам ойынды прототиптеу туралы қосымша мақалаларды оқыңыз

Тышқан енгізу

Тінтуір түймелері пернетақта мен геймпад түймелері сияқты жұмыс істейді. Сіз екеуін де сұрай аласыз button_down? және оқиғалар батырмасын басыңыз және батырма_ту. Алайда, тінтуірдің қозғалысын сұрауға болады, тінтуірдің қозғалысы үшін ешқандай оқиға жоқ. Gosu :: Терезет тышқан_x және тышқан_y әдістері тінтуір меңзерінің X және Y координаталарын қамтамасыз етеді.

X және Y координаттары ойын терезесіне қатысты екенін ескеріңіз. Мәселен, мысалы, тінтуір сол жақ жоғарғы бұрышта болса, ол координатаның жанында болады (0,0). Сондай-ақ, егер тінтуір көрсеткіші болса сыртында толығымен ойын терезесінде, ол әлі де көрсеткіш терезеге қатысты екенін хабарлайды. Сонымен, екеуі де тышқан_x және тышқан_y ол нөлден аз және терезенің енінен немесе биіктігінен артық болуы мүмкін.

Келесі бағдарлама тінтуірді басқан кезде жаңа спрайтты көрсетеді. Ол оқиғаға негізделген кірісті (шертулер үшін) және сұрауға негізделген енгізуді (тінтуірдің орнын алу үшін) қолданады. Толық, іске қосылатын файл осы жерде қол жетімді.

класс MyWindow



Пікірлер:

  1. Clinton

    Сөзде өте қарапайым, бірақ іс жүзінде көп нәрсе сәйкес келмейді, бәрі қызғылт емес!

  2. Fortun

    I do not need such good!

  3. Chisholm

    Мен сізбен келісе аламын.

  4. Shakazuru

    Indeed, and as I have never guessed



Хабарлама жазыңыз