2017-05-11 20 views
5

Birçok dilde aşağıdaki gibi bir şey yapabilirsiniz.Squeak Smalltalk: Oyun döngü

Bunu Squeak Smalltalk'ta nasıl yapıyorsunuz?

Klavye girişini okuyabilir ve wiki.squeak.org numaralı belgede açıklandığı gibi tepki verebilirim. Ben

1 to: 10 do: [ :i | game updateAndDraw ] 

gibi bir şey yürütmeye çalışırsanız Ama bütün olaylar sadece hiç döngü yürüttü sonra işlenir.

+0

Morphic'te uygulanan oyunların örneklerini kontrol edebilirsiniz, bunlardan birkaçını bulabilirsiniz. Ortak bir basit yolun oyun için tek bir Morph'a sahip olması, klavye olaylarını (modelde değişiklikler yapmak) ve sonra da #updateAndDraw alt modellerini yeniden çizerek modelin mevcut durumuna göre yeniden çizmektir. aktörler, devletin görünür göstergeleri vb.) –

+0

Oyunun giriş yapmadan da güncellenmesini beklemem gerek. Bunu senin yaklaşımında nasıl yaparsın? – Higemaru

cevap

5

Morphic zaten bu ana döngüyü sağlar.

uiProcess := [ 
    [ world doOneCycle. Processor yield ] repeat. 
] newProcess ... 

Ve doOneCycle içine kazmak eğer o

  • (isteğe bağlı) bir gecikme ekranı için (interCyclePause:)
  • çekler
  • süreçleri olayları
  • boyutlandırmak mu bulacaksınız: Bu MorphicProject class>>spawnNewProcess öyle
  • işler step yöntemler
  • re-displa ys the world

Kodunuz, fare/klavye olay işleyicileri, animasyon için adım yöntemleri ekleyerek ve yeniden görüntüleme için yöntemler çizerek bu aşamalara bağlanmalıdır. Bunların hepsi kendi oyun morfunuzdaki yöntemler olmalı. Sistem boyunca örnekleri bulabilirsiniz.

+0

Bu umut verici görünüyor, teşekkürler! – Higemaru

+0

Lütfen bana bir örnek gösterebilir misiniz? Bana nerede ve hangi sınıfların alt sınıfa gideceği belli değil. – Higemaru

0

Bir eyleme kez sabit sayıda gerçekleştirmek için:

10 timesRepeat: [game updateAndDraw] 

while anlambilimini kullanmak için: iken sözcüklerle daimi döngü oluşturmak için

i := 5 
[i > 0] whileTrue: [ 
    i printNl. 
    i := i - 1. 
] 

,

[true] whileTrue: [something do] 
+0

Bu, sorumu hiç ele almıyor mu? – Higemaru

+0

Özür dilerim, belki sorununuzu tam olarak anlamıyorum. –

0

Youkullanarak Morphic olay döngüsünden yararlanabilmeli.