Gosu'da Fare ve Klavye Girişi

Oyunlar, tanım gereği etkileşimlidir. Gosu, bu etkileşimi, tuş ve fare düğmesine basmak için basit bir arabirim ile kolaylaştırır.

Programınızdaki girdileri işlemek için iki ana yol vardır. Birincisi olaya yönelik bir yaklaşımdır. Düğmelere basıldığında, programlarınız bir olay alır ve buna göre tepki verebilirsiniz. İkincisi, güncelleme sırasında belirli bir düğmeye basıp basılmadığını kontrol etmektir. Her iki teknik de mükemmel şekilde geçerlidir, hangisi size en uygunsa onu kullanın.

Sahne arkasında düğmeler tamsayılarla gösterilir. Bu tamsayı kodları platforma bağlıdır ve muhtemelen oyun kodunuza girmemelidir. Bunu soyutlamak için Gosu, kullanmak için bir dizi sabit sağlar.

Her klavye tuşu için bir Gosu:: Kb * sabit. Anahtarların çoğu için, bu sabitlerin isimleri kolayca tahmin edilebilir. Örneğin, ok tuşları Gosu:: KbLeft, Gosu:: KbRight, Gosu:: KbUp ve Gosu:: KbDown. Tam liste için bkz. modülü belgeleri.

Girdi olayları Gosu:: Pencere örneği. Ana döngüde önce Güncelleme Gosu, basılan veya bırakılan tüm düğmeler için etkinlikler gönderir. Bunu arayarak

instagram viewer
aşağı düğmesi ve button_up yöntemleri, tuşun veya düğmenin kimliğini basılı tutarak.

İçinde aşağı düğmesi ve button_up yöntemleri, genellikle bir durum Beyan. Bu, çok işlevli olmasının yanı sıra, hangi düğmeye basıldığına veya bırakıldığına bağlı olarak ne yapacağınıza karar vermenin çok zarif ve etkileyici bir yolunu sunar. Aşağıda, a. aşağı düğmesi yöntemi gibi görünebilir. İçine yerleştirilmelidir Gosu:: Pencere ve pencereyi kapatır (programı sonlandırır) kaçış tuşuna basılır.

Kolay değil mi? Bunu genişletelim. Burada bir oyuncu sınıf. Sol ve sağ tuşlara basılırsa sola ve sağa hareket edebilir. Bu sınıfın ayrıca aşağı düğmesi ve button_up yöntemleri. Tıpkı bir Gosu:: Pencere alt sınıf. Gosu hakkında hiçbir şey bilmiyor oyuncu Yine de, biz oyuncuyöntemlerini manuel olarak Gosu:: Pencereyöntemleri. Tam, çalıştırılabilir bir örnek bulunabilir buraya.

Olay tabanlı girdi sizin tarzınız değilse, herhangi bir sorguyu Gosu:: Pencere herhangi bir düğmeye veya tuşa basıldığını görmek için tuşuna basın. Göz ardı edebilirsiniz aşağı düğmesi ve button_up tamamen geri çağırır.

Sorgulamak için Gosu:: Pencere bir tuşa basılıp basılmadığını görmek için aşağı düğmesi? yöntemini kontrol etmek istediğiniz düğmenin kimliğiyle yapın. Bu çağrıda soru işaretini unutmayın! Eğer ararsan button_down (Gosu:: KbLeft), sen olacaksın raporlama bir düğmeye basın Gosu:: Pencere alt sınıf. Tanımlanmış geri arama yönteminiz olmasa bile, üst sınıf, Gosu:: Pencere niyet. Hata olmayacak, beklediğiniz gibi çalışmaz. Sadece bu soru işaretini unutmayın!

İşte oyuncu Sınıf yeniden kullanılmak üzere yazılmıştır aşağı düğmesi? olaylar yerine. Tam, çalıştırılabilir bir örnek mevcuttur buraya. Bu kez, girişin başında Güncelleme yöntem. Ayrıca bu örneğin daha kısa ama bence daha az zarif olduğunu fark edeceksiniz.

Fare düğmeleri, klavye ve gamepad düğmeleriyle aynı şekilde kullanılır. Her ikisini de ile sorgulayabilirsiniz aşağı düğmesi? ve ile olaylar aşağı düğmesi ve button_up. Bununla birlikte, fare hareketi sadece sorgulanabilir, fare hareketi için herhangi bir olay yoktur. Gosu:: Pencere'ler mouse_x ve mouse_y yöntemler fare işaretçisinin X ve Y koordinatlarını sağlar.

X ve Y koordinatlarının oyun penceresine göreli olduğuna dikkat edin. Yani, örneğin, fare sol üst köşedeyse, koordinatın yakınında olacaktır (0,0). Ayrıca, fare işaretçisi dışarıda oyun penceresinin tamamında, işaretçinin pencereye göre nerede olduğunu rapor edecektir. Yani her ikisi de mouse_x ve mouse_y sıfırdan küçük ve pencerenin genişliğinden veya yüksekliğinden fazla olabilir.

Aşağıdaki program, fareyi tıklattığınız her yerde yeni bir hareketli grafik görüntüler. Hem olay güdümlü girdiyi (tıklamalar için) hem de sorgu güdümlü girdiyi (farenin konumunu almak için) kullandığını unutmayın. Tam, çalıştırılabilir bir dosya kullanılabilir buraya.

instagram story viewer