Category: Türkçe

Date:

Kardeşime doğum günü hediyesi olarak bir oyun yazmaya karar verdim. En kolay kütüphanelerden biri olan pygame ile bir oyun, bir de animasyon yazdım.

İlk oyunda beyzbol eldiveni ile ortalıkta uçuşan beyzbol topunu yakalamaya çalışıyorsunuz. Eğer topa değerseniz top sekiyor ve size puan yazılıyor.

Bunu biraz daha geliştirip top ve eldiven yerine peynir ve fare yerleştirince aklıma bunu otomatik hale getirmek geldi. Yani fare peyniri kendiliğinden kovalayacaktı. Bunun için birkaç matematiksel hesap yaptım(tom=fare bom=peynir, mid orta kordinatlarını veren fonksiyon, speed peynirin hızı, speedtom farenin hızı) :

bm=bom.mid()  
tm=tom.mid()  
deltax = bm[0] - tm[0]  
deltay = bm[1] - tm[1]  
sum = deltax\*deltax + deltay\*deltay

while sum > 2\*speed[0]\*speed[0]:  
deltax*=0.9  
deltay*=0.9  
sum = deltax\*deltax + deltay\*deltay

speedtom = deltax, deltay

tom.move(speedtom)

Göreceğiniz üzere peynirin hızı eğer [6,6] ve farenin hızı [x,y] ise,x^2 + y^2 < 2* (6^2) olana kadar hızı azaltıyorum. Zira ilk delta kareler toplamı kordinatlar(pikseller) cinsindendi. Yani bir bakıma "resim ölçekleme"ye benzer bir iş yapmış oldum. Ancak en sonunda

speedtom[0] = -speedtom[0]  
TypeError: object does not support item assignment

gibi bir hata veriyor. Henüz çözemedim neden olduğunu.

Beyzbol oyununun kodları, Fare-peynir animasyonunun kodları (pygame gerektiriyor)


Share: FacebookGoogle+Email


comments powered by Disqus