<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7933148804027728913</id><updated>2024-12-27T22:48:35.367+03:00</updated><category term="oyun yapmak"/><category term="oyun yapımına giriş"/><category term="oyun yazmak"/><category term="python"/><category term="anton semchenko"/><category term="oyun"/><category term="oyun yapma"/><category term="anton"/><category term="pygame"/><category term="python 3"/><category term="python ile oyun yazmak"/><category term="pygame ile oyun yazmak"/><category term="python3"/><category term="torreng"/><category term="unity"/><category term="unity3d"/><category term="android"/><category term="particle"/><category term="particle in a box"/><category term="programlama dilleri"/><category term="pygame giriş"/><category term="torrenglabs"/><category term="archstone"/><category term="class"/><category term="def"/><category term="def()"/><category term="frenzied"/><category term="merhaba dünya"/><category term="print()"/><category term="programlama öğrenme"/><category term="pythona giriş"/><category term="pythonda ilk adımlar"/><category term="voxeliq"/><category term="while"/><category term="3d"/><category term="Ludum Dare"/><category term="Stairway to Earth"/><category term="abuzittinin maceraları"/><category term="anton semchenko portfolyo"/><category term="anton semchenko projeler"/><category term="append()"/><category term="bilgisayar"/><category term="blit"/><category term="blit()"/><category term="box"/><category term="ceren tecim"/><category term="damla tıltak"/><category term="ders"/><category term="extend("/><category term="feed the boss"/><category term="fonksiyon"/><category term="game jam"/><category term="ggj13"/><category term="global game jam"/><category term="goyun"/><category term="hesap makinesi"/><category term="hüseyin uslu"/><category term="inceleme"/><category term="inceleme yazmak"/><category term="inceleme yazısı"/><category term="input()"/><category term="int()"/><category term="int6"/><category term="inventory"/><category term="kartoon"/><category term="kartoon.gen.tr"/><category term="koyun sayma"/><category term="liste"/><category term="listeler"/><category term="metin tabanlı oyun"/><category term="metin tabanlı oyun yazmak"/><category term="mühürkent"/><category term="ocean city racing"/><category term="odtü"/><category term="odtü bilgisayar topluluğu"/><category term="ornito"/><category term="oyun dünyası"/><category term="oyun dünyasına giriş"/><category term="oyun incelemesi yazmak"/><category term="oyun yapımı"/><category term="oyun yazarlığı"/><category term="portfolyo"/><category term="print"/><category term="proje"/><category term="projelerim"/><category term="pygame.Rect()"/><category term="pygame.display.update()"/><category term="pygame.draw"/><category term="pygame.mixer.Sound()"/><category term="python class"/><category term="remove()"/><category term="sayha"/><category term="semchenko anton"/><category term="tülin samav"/><category term="türk oyun geliştiricileri"/><category term="türkiye&#39;de amatör oyun sektörü"/><category term="yazarlık"/><category term="yazı yazmak"/><title type='text'>Ben Bir Oyuncuyum</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08976547922228048299</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-7562939921315558241</id><published>2013-05-01T14:17:00.003+03:00</published><updated>2013-05-01T14:17:51.755+03:00</updated><title type='text'>Particle In A Box Yayınlandı!</title><content type='html'>Sonunda oyunu tamamlayıp Chrome Web Store&#39;da yayınlamayı başardım! Oyunun linkini &lt;a href=&quot;http://antonsem.com/?page_id=161&quot;&gt;sitemden&lt;/a&gt; bulabilirsiniz. İyi eğlenceler!</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/7562939921315558241/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2013/05/particle-in-box-yaynland.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/7562939921315558241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/7562939921315558241'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2013/05/particle-in-box-yaynland.html' title='Particle In A Box Yayınlandı!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08976547922228048299</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-7834672999106170679</id><published>2013-04-26T08:13:00.002+03:00</published><updated>2013-04-26T08:13:36.863+03:00</updated><title type='text'>Yeni İnternet Sitem</title><content type='html'>Geçen gün kendime yeni bir internet sitesi açtım:&amp;nbsp;&lt;a href=&quot;http://antonsem.com/&quot;&gt;http://antonsem.com/&lt;/a&gt;&amp;nbsp;. Bundan sonra bütün yazılarımı, derslerimi, incelemelerimi ve projelerimi oradan paylaşacağım. Eski yazı ve dersleri de şu anda bu sitede daha organize bir şekilde bulabilirsiniz. Bu internet sitesi yapma işinde henüz amatör olduğum için site çok iyi görünmüyor ve birçok hatam olabilir. Zaman geçtikçe bunları düzelteceğim tabi :) Hepinizi yeni siteme beklerim...</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/7834672999106170679/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2013/04/yeni-internet-sitem.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/7834672999106170679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/7834672999106170679'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2013/04/yeni-internet-sitem.html' title='Yeni İnternet Sitem'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08976547922228048299</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-798234986238520887</id><published>2013-04-18T07:50:00.001+03:00</published><updated>2013-04-18T07:52:05.100+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bilgisayar"/><category scheme="http://www.blogger.com/atom/ns#" term="ders"/><category scheme="http://www.blogger.com/atom/ns#" term="game jam"/><category scheme="http://www.blogger.com/atom/ns#" term="Ludum Dare"/><category scheme="http://www.blogger.com/atom/ns#" term="odtü"/><category scheme="http://www.blogger.com/atom/ns#" term="odtü bilgisayar topluluğu"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapmak"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapımı"/><title type='text'>Başka Bir Game Jam: Ludum Dare</title><content type='html'>Uzun bir aradan sonra tekrar merhaba arkadaşlar. Bir süredir ders, sınav derken buralara uğrayamadım. Şimdi de çok fazla vaktim yok o yüzden ne yazık ki şu anda yeni bir ders yapmayacağım ama yakın gelecekte birkaç Unity3D dersi, ona bağlı olarak C# ve işinize yarayacağını düşündüğüm Blender dersi yazmayı planlıyorum. En son da bir oyun nasıl Google Play&#39;e koyulur onu anlatacağım.&lt;br /&gt;
&lt;br /&gt;
Peki madem ders yapmayacağım ne diye bunları yazıyorum? Çünkü size Ludum Dare&#39;yi tanıtacağım. Hayır, Ludum Dair diye okunmuyor, bildiğiniz Ludum Dare. Latince&#39;de isim vermek anlamına geliyor. Başlıktan da anlayabileceğiniz üzere bu bir game jam (oyun reçeli?). Formatı Global Game Jam&#39;e çok benzer, tek farkı internet üzerinden yapılıyor olması. Belki bir çoğunuza garip gelebilir, sonuçta Türkiye&#39;de Global Game Jam hep çok büyük ve (özellikle Ankara&#39;da) ödüllü bir organizasyon olmuştur. Bu oldukça yanlış bir yaklaşım. Bu tür organizasyonların amacı hiçbir zaman yarışma olmadı, olmamalı. Amaç diğer oyun yapımcıları ile bir araya gelmek, yeni insanlar tanımak, yeni şeyler öğrenmek. Bu noktada şunu belirtmek isterim ki katıldığım her game jam bana çok şey katmıştır. Belki şu anda bildiklerimin %40&#39;ını bunun gibi organizasyonlarda öğrenmişimdir.&lt;br /&gt;
&lt;br /&gt;
Game jam&#39;i de tanımladığıma göre gelelim Ludum&#39;um kendisine. Ludum 2002&#39;den beri yılda 3 kere düzenlenen bir organizasyon ve 26 Nisan&#39;da 26.sı düzenlenecek. Türkiye saatine göre 27&#39;sinin sabahında, saat 4&#39;te başlayacak ama olsun, 26&#39;sında hazır olmak gerek :) . Bu organizasyon başlamadan önce bir tema belirlenir. Bu seçim de katılımcılara, yani bize bırakılır. Organizatörler bir süredir tema önerilerini alıyordu, şu anda seçme aşaması devam ediyor,&amp;nbsp;&lt;a href=&quot;http://www.ludumdare.com/theme/&quot;&gt;http://www.ludumdare.com/theme/&lt;/a&gt;&amp;nbsp;adresinden &quot;tema katliamına&quot; ulaşabilirsiniz. Buradan beğendiğiniz temaya &quot;GOOD&quot;, beğenmediğinize de &quot;BAD&quot; diyebilirsiniz. Orada çıkan tema değil de bir oyun türü ya da bambaşka bir şey ise &quot;SLAUGHTER&quot; düğmesine basıyorsunuz. En çok oy alan tema 27 Nisan saat 4.00&#39;da açıklanacak ve organizasyon başlayacak. 48 saat sonra, oyununuzu yapmayı bitirince siteye koyacaksınız ve oylama başlayacak. Birinci olursanız da her game jamde olduğu gibi kocaman bir aferin alacaksınız :) .&lt;br /&gt;
&lt;br /&gt;
&quot;Bir paragraf önce toplanmaktan bahsettin ve bu organizasyon internet üzerinden gerçekleşiyor. Hani game jam ruhu? Hani yeni insanlar tanıma?&quot; diyenlerinizi duyar gibiyim. İşte bu noktada biz devreye giriyoruz. ODTÜ Bilgisayar Topluluğu olarak bir araya gelebileceğimiz bir yer ayarlayacağız ve 48 saat boyunca orada yaşayacağız. Tabi ki sizi de bekleriz. Gelin tanışalım, birlikte oyun yapalım, eğlenelim. Eğer hayatınızda hiç oyun yapmadıysanız da başlamak için çok güzel bir fırsatınız var, gelin öğretelim! Ne olursa olsun bu 48 saatin sonunda boş gitmeyeceksiniz, mutlaka bir şeyler öğrenmiş olacaksınız. En kötü tanışmış oluruz, fena mı?&lt;br /&gt;
&lt;br /&gt;
Son olarak Ludum&#39;un bize sağladıklarından bahsedeceğim. Birçok programın lisansı yanında özellikle bizi ilgilendiren Unity Pro&#39;nun üç aylık deneme lisansını dağıtıyor organizatörler. Belki başlangıç aşamasında bu lisans çok lazım olmayabilir ama siz yine de alın, zararı olmaz.&lt;br /&gt;
&lt;br /&gt;
Merak edenler için:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.ludumdare.com/&quot;&gt;Ludum Dare resmi sitesi.&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.ludumdare.com/compo/&quot;&gt;Bu da bizi en çok ilgilendiren kısmı.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Herhangi bir sorunuz olursa aşağıdaki yorum kısmından sorabilirsiniz.&lt;br /&gt;
Kendinize çok iyi bakın, haftaya görüşmek üzere.</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/798234986238520887/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2013/04/baska-bir-game-jam-ludum-dare.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/798234986238520887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/798234986238520887'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2013/04/baska-bir-game-jam-ludum-dare.html' title='Başka Bir Game Jam: Ludum Dare'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08976547922228048299</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-5924165786915047652</id><published>2013-02-21T20:47:00.000+02:00</published><updated>2013-02-21T20:47:47.515+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="archstone"/><category scheme="http://www.blogger.com/atom/ns#" term="frenzied"/><category scheme="http://www.blogger.com/atom/ns#" term="hüseyin uslu"/><category scheme="http://www.blogger.com/atom/ns#" term="int6"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapımına giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="voxeliq"/><title type='text'>Bağımsız Oyun Yapımcısı, Hüseyin Uslu</title><content type='html'>&lt;br /&gt;
&lt;div&gt;
Türkiye&#39;de amatör oyun sektörü konulu yazımda söz verdiğim gibi Hüseyin Uslu&#39;nun kendini ve oyunlarını tanıttığı, en sonunda da yeni başlayanlara ve başlamak isteyenlere birkaç tavsiye verdiği yazıyı yayınlıyorum. Buyurun okuyun.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Adım Hüseyin Uslu, Başkent Üniversitesi Bilgisayar Mühendisliği 
mezunuyum ve indie yani bağımsız oyun geliştiricisiyim. Atari 2600 ile 
oyunlarla tanışdığım ilk günlerden beri kendimi sıkı bir oyuncu olarak 
niteleyebilirim.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Bağımsız geliştirici olarak oyun geliştirmeye 
başlamamın temel sebebi olarak ise oyun programcılığının, ilgi duyduğum 
gerçek zamanlı sistemlere ve alt-seviye programlamaya yakın bir profil 
çiziyor olması diyebilirim. Global Game Jam&#39;lere katılarak birkaç basit 
oyunla sürece ısındıktan sonra, ilk olarak Minecraft tarzı bir block 
motoru üzerinde çalışmaya başlayarak oyun geliştirmeye ilk adımımı 
attım.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Minecraft ve benzeri block tabanlı oyunlar, yapıları itibari oldukça basit olsadalar da işin mutfağında,&lt;/div&gt;
&lt;div&gt;
tatmin
 edici performans alabilmek için bir çok püf noktasına dikkat edilmesi 
gereken yapımlar. Ayrıca grafiksel malzeme gereksinimlerin oldukça az 
olması nedeniyle, yeni başlayan bir oyun programcısının, tek başına 
&quot;programmer-art&quot; olarak tabir ettiğimiz temel materyallerle üzerinde 
çalışabileceği ve ihtiyaç duyacağı bütün teknikleri tatbik edebileceği 
bir tür. İşte bu yüzden ilk projem, geçen bir kaç ay içerisinde açık 
kaynak olarak yayınladığım Voxeliq adlı block motoru (&lt;a href=&quot;https://github.com/raistlinthewiz/voxeliq&quot;&gt;https://github.com/raistlinthewiz/voxeliq&lt;/a&gt;) oldu.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Devamında büyük ölçüde tamamlanmış ArchStone adlı (&lt;a href=&quot;http://www.int6.org/games/archstone/&quot;&gt;http://www.int6.org/games/archstone/&lt;/a&gt;)
 bir şanş-oyunu geliştirdim ve yakın zamanda Unity3D&#39;nin platformu 
desteklemesi ile birlikte Windows 8 Store&#39;da yayınlamayı planlıyorum.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Şu anda aktif olarak da Frenzied adlı (&lt;a href=&quot;http://www.int6.org/category/frenzied/&quot;&gt;http://www.int6.org/category/frenzied/&lt;/a&gt;)
 bir puzzle oyunu geliştirmekteyim. MonoGame ve C# kullanarak 
geliştirmekte olduğum Frenzied, Windows 8 Store, Windows Phone 7 &amp;amp; 
8, Android ve IOS gibi birçok platformu desteklemekte ve yakın zamanda 
sırasıyla bu platformlarda yerini alacak.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ek olarak XNA&#39;nın varisi olan ve Mono tarafından desteklenen C# tabanlı MonoGame (&lt;a href=&quot;http://monogame.net/&quot;&gt;http://monogame.net/&lt;/a&gt;) projesini aktif olarak takip ediyor ve katkıda bulunuyorum.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Yeni başlayanlara vereceğim nacizane tavsiyem ise, 
herşeyden önce bu işe küçük adımlar atarak başlamaları gerektiğini 
söylemek olacaktır. Genellikle oyun geliştirmeye yeni başlayanların en 
büyük hatası, altından kalkabileceklerinden daha büyük proje ve 
fikirlerlerle başlangıç yapmaya çalışmalarıdır.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Programlama, oyun geliştiriciliği açısıdan temel 
taşlardan biri olsa da, oyun geliştiriciliği çok disiplinli bir süreç 
olarak karşımıza çıkmakta. İşte bu yüzden geniş çaplı projelerde, tek 
bir geliştirici için bütün bu süreçler bir noktadan sonra ağır bir yük 
haline gelebilmekte ve motivasyon kaybının en önemli nedeni olmakta. 
Mümkün mertebe, küçük çaplı projelerle yola çıkmak ve her şeyden önce 
basit bile olsa birkaç oyunu A&#39;dan Z&#39;ye bitirerek bütün süreci 
deneyimlemekte fayda görüyorum. Bu noktada GGJ (Global Game Jam) ve Ludum Dare gibi 
kısıtlı sürede oyun geliştirmeniz gereken ve süreci görebileceğiniz 
Jam&#39;lere katılmakta oldukça yararlı olacaktır.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ek olarak oyun geliştiriciliğine yeni başlayanlar, 
genelde hangi dili tercih etmelerini gerektiği konusunda karar vermekte 
zorlanmaktalar. C++ gibi bir dili bilmek / öğrenmek, bir oyun 
programcısı açısından oldukça önemli olsa da, şu unutulmamalı ki, 
muhtemelen yeni başladığınızda geliştereceğiniz oyunlar, C++ ve C# gibi 
managed bir dil arasındaki performans farkının çok önemli bir faktör 
olmadığı oyunlar olacak. İşte bu yüzden C# gibi harika bir dili taban 
alan ve Windows, MacOS, Linux, Android, IOS, Windows Phone 7, Windows 
Phone 8 ve Ouya gibi birçok platformda çalışabilen MonoGame (&lt;a href=&quot;http://monogame.net/&quot;&gt;http://monogame.net/&lt;/a&gt;)
 projesini şiddetle tavsiye ediyorum. Tabi ki kullanacağınız dil veya 
framework, hiç bir zaman amaç olmamalı, sadece bir araç olarak kalmalı 
ve her projeye en uygun dili / platformu tercih etmeliyiz.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Son olarak da sürekli olarak takip ettiğim ve yeni 
başlayanlara yararlı olacağını düşündüğüm bir kaç kaynağı paylaşmak 
istiyorum;&lt;/div&gt;
&lt;div&gt;
* &lt;a href=&quot;http://reddit.com/r/gamedev&quot;&gt;http://reddit.com/r/gamedev&lt;/a&gt; - reddit&#39;in oyun programcıları için olan oldukça faydalı alt-bölümü.&lt;/div&gt;
&lt;div&gt;
* &lt;a href=&quot;http://gamedev.stackexchange.com/&quot;&gt;http://gamedev.stackexchange.com/&lt;/a&gt; - oyun programlama ile alakalı teknik soru ve cevapları bulabileceğiniz bir kaynak.&lt;/div&gt;
&lt;div&gt;
* &lt;a href=&quot;http://www.pixelprospector.com/&quot;&gt;http://www.pixelprospector.com/&lt;/a&gt; - Bir bağımsız oyun geliştiricisinin ihtiyacı olabileceği bütün kaynakları bir araya toplayan bir site.&lt;/div&gt;
&lt;div&gt;
* &lt;a href=&quot;https://www.facebook.com/groups/gamedevturkey/&quot;&gt;https://www.facebook.com/groups/gamedevturkey/&lt;/a&gt; - Diğer Türk oyun geliştiricilerle bir araya gelip paylaşımda bulunabileceğiniz grup.&lt;/div&gt;
&lt;div&gt;
* &lt;a href=&quot;http://www.oyungelistirici.org/&quot;&gt;http://www.oyungelistirici.org/&lt;/a&gt; - Oyun geliştirme hakkında bulabileceğiniz nadir Türkçe kaynaklardan.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/5924165786915047652/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2013/02/bagmsz-oyun-yapmcs-huseyin-uslu.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/5924165786915047652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/5924165786915047652'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2013/02/bagmsz-oyun-yapmcs-huseyin-uslu.html' title='Bağımsız Oyun Yapımcısı, Hüseyin Uslu'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-1065761454899861067</id><published>2013-02-19T11:58:00.002+02:00</published><updated>2013-02-19T11:58:51.484+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="abuzittinin maceraları"/><category scheme="http://www.blogger.com/atom/ns#" term="archstone"/><category scheme="http://www.blogger.com/atom/ns#" term="frenzied"/><category scheme="http://www.blogger.com/atom/ns#" term="kartoon"/><category scheme="http://www.blogger.com/atom/ns#" term="kartoon.gen.tr"/><category scheme="http://www.blogger.com/atom/ns#" term="mühürkent"/><category scheme="http://www.blogger.com/atom/ns#" term="ocean city racing"/><category scheme="http://www.blogger.com/atom/ns#" term="ornito"/><category scheme="http://www.blogger.com/atom/ns#" term="sayha"/><category scheme="http://www.blogger.com/atom/ns#" term="türk oyun geliştiricileri"/><category scheme="http://www.blogger.com/atom/ns#" term="türkiye&#39;de amatör oyun sektörü"/><category scheme="http://www.blogger.com/atom/ns#" term="voxeliq"/><title type='text'>Türkiye&#39;de Amatör Oyun Sektörü</title><content type='html'>&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Merhaba arkaraşlar. Uzun zamandır
yazı yazmadım, biraz boşladım buraları. Tahmin edebileceğiniz
gibi bunun sorumlusu büyük ölçüde derslerin ağırlığı. Hazır
tatil, dersler başlamadan bir iki yazı yazayım dedim. Bu seferki
yazım bir ders değil, bir tanıtım yazısı. Türkiye&#39;de
geliştirilen oyunlardan bahsedeceğim sizlere. Ama öyle sık sık
rastladığınız bir yazı olmayacak bu; öyle bir yazı zaten
yazmıştım önceden, şuradan ulaşabilirsiniz:
&lt;a href=&quot;http://e-bergi.com/2010/Kasim/Turkiye-Oyun-Sektoru&quot;&gt;http://e-bergi.com/2010/Kasim/Turkiye-Oyun-Sektoru&lt;/a&gt;
, &lt;a href=&quot;http://e-bergi.com/2011/Ocak/trkiyede-oyun-sektr-2&quot;&gt;http://e-bergi.com/2011/Ocak/trkiyede-oyun-sektr-2&lt;/a&gt;
. Bizler gibi amatörce oyun geliştirmeye çalışanlardan ve
oyunlarından bahsedeceğim sizlere.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Son birkaç gündür forumlarda
dolaşıyorum ve Türkiye&#39;de ne kadar çok oyun geliştirmeye çalışan
insan varmış, onu fark ettim. Sözü daha fazla dolandırmayıp
tanıtımlara geçeyim...&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
İlk oyunumuz Ornito. Bu oyunun
geliştiricis Ahmet Sami Avcı hepimiz gibi çocukluğundan beri oyun oynuyor.
Oyun yapımına lise yıllarında RPG Maker ile başlamış. Şu anda
Gazi Üniversitesinde İngilizce Öğretmenliği okuyan Ahmet&#39;in
şimdiye kadar giriştiği en büyük oyun projesi Ornito. Ornito&#39;nun
tarzı J-RPG (Japon rol yapma oyunu). Hikayesi çok farklı
başlamıyor ama oyundaki espiri anlayışı ve pop kültüre yaptığı
göndermelerle öne çıkıyor. Oyunlarda hikeyeye önem veriyorsanız
ve J-RPG seviyorsanız kaçırmayın.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Ornito&#39;nun sitesi &lt;a href=&quot;http://www.buwue.org/&quot;&gt;www.buwue.org&lt;/a&gt;
şu anda yapım aşamasında. Şimdilik güncel bilgilere oyungezer
forumlarından,
&lt;a href=&quot;http://oyungezer.com.tr/forum?func=view&amp;amp;catid=69&amp;amp;id=1603576&quot;&gt;http://oyungezer.com.tr/forum?func=view&amp;amp;catid=69&amp;amp;id=1603576&lt;/a&gt;
ulaşabilirsiniz.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvuyCziVIc-C1j7Z0QH0MU4t2eNkiNeQBoANanleP5lYArglwYKjKhrX-w0xLDrTjGevvyAsW5Beo9zKy5U42qKewVNnKSb4P7-5p3-xyejfSYyn2CqDJGoTOaOo8pSKoAVYIiMis2oCnA/s1600/ornito2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvuyCziVIc-C1j7Z0QH0MU4t2eNkiNeQBoANanleP5lYArglwYKjKhrX-w0xLDrTjGevvyAsW5Beo9zKy5U42qKewVNnKSb4P7-5p3-xyejfSYyn2CqDJGoTOaOo8pSKoAVYIiMis2oCnA/s320/ornito2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiejowbjIVqOe1PdRehJdgXmJejAiCpqu0qWikiEgYI-IKYgRBn2w_LBzaVFFIaunpT3IfB_4r08r1NwYv_0QFtjQNLAT9nNjBljhKaxwlkJUyw1aYN7flDo4liB76Sd2YuJMjxKE0JhOXz/s1600/ornito1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;241&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiejowbjIVqOe1PdRehJdgXmJejAiCpqu0qWikiEgYI-IKYgRBn2w_LBzaVFFIaunpT3IfB_4r08r1NwYv_0QFtjQNLAT9nNjBljhKaxwlkJUyw1aYN7flDo4liB76Sd2YuJMjxKE0JhOXz/s320/ornito1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Sıradaki geliştiricimiz Ege
Üniversitesinin Devlet Türk Musikisi Konsetvatuarı mezunu Emre
Şaşmaz. Emre&#39;nin şimdiye kadar iki oyun geliştirdi. İkisi de
korku türünde. Sayha adlı oyunu dün gece oynamak gibi ufak bir
hata yaptım... En son Amnisia&#39;yı oynarken bu kadar tırstım.
Konusu da Amnisia&#39;yı andırıyor. Oyunun başında hafızamızı
kaybetmiş, biraz da kafayı yemiş bir şekilde bir tımarhanede
buluyoruz. Oyundaki ses ve panik atak efektleri oynayanı tedirgin
etmeyi gerçekten iyi başarıyor. Ne yazık ki Seyha&#39;nın sadece
demosu var, sitesinden daha fazla geliştirmeyeceğini açıkladı.
Oyun hakkında daha fazla bilgi almak ve indirmek için
&lt;a href=&quot;http://sayha.pantharay.com/&quot;&gt;http://sayha.pantharay.com/&lt;/a&gt;
sitesine bakabilirsiniz.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzCk1m-70khF9mEa1R4sutsxr_Pbpz7t3nVbIefBnHuuwIB2CtUzSzU15H1JK_BwSRm_lBTlhEAwTzTOxog8dNmq_kNJGlcpSciw0xzMAQnyzQCnoJUxKHOINlMRAcEflhyphenhyphenMmNbxwr_PD3/s1600/sayha1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzCk1m-70khF9mEa1R4sutsxr_Pbpz7t3nVbIefBnHuuwIB2CtUzSzU15H1JK_BwSRm_lBTlhEAwTzTOxog8dNmq_kNJGlcpSciw0xzMAQnyzQCnoJUxKHOINlMRAcEflhyphenhyphenMmNbxwr_PD3/s320/sayha1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;i&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Sayha&#39;nın grafikleri çok hoş görünüyor.&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIP9pTbbeLo29Bi9wb8JcYcZi7e82q9HzOvlllsnNTE8CozE5foYKn0JTHSe9m-X0Rd7eoCEMp-gMSm9khEyLAGcDC-Rh4buOF2wd7SkmteFDugL17DQs1NGvlxrfJ9syW5-ttepCFAyyo/s1600/sayha2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIP9pTbbeLo29Bi9wb8JcYcZi7e82q9HzOvlllsnNTE8CozE5foYKn0JTHSe9m-X0Rd7eoCEMp-gMSm9khEyLAGcDC-Rh4buOF2wd7SkmteFDugL17DQs1NGvlxrfJ9syW5-ttepCFAyyo/s320/sayha2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;i&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Çok korkarsanz panik atak geçirebilirsiniz.&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;i&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Emre&#39;nin ikinci oyunu Mühürkent. Ne
yazık ki demosunu deneme fırsatım olmadı ama gördüğüm ekran
görüntülerinden ve sitesinde izlediğim videodan Seyha&#39;dan aşağı
kalır bir yanı olmadığını gördüm. Son gelişmeleri Emre&#39;nin
blogundan, &lt;a href=&quot;http://blog.pantharay.com/&quot;&gt;http://blog.pantharay.com/&lt;/a&gt;
&#39;dan takip edebilirsiniz.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Bundan sonra bahsedeceğim oyun Ocean
City Racing. Ocean City Racing&#39;i Yeditepe Üniversitesinin Yönetim
Bilişim Sistemlerinden mezun olan Onur Uça geliştiriyor. Ocean
City Racing açık dünya bir yarış oyunu. Unreal Engine ile
geliştirilen oyun görsel açıdan çok iyi görünüyor. Henüz bir
demosu olmadığı için oynanışı konusunda bir yorum
yapamayacağım ama sitesinde birçok videosu mevcut. Ayrıca oyunu
şu anda Steam GreenLight&#39;ta bulabilir ve destek verebilirsiniz.
Oyunun resmi sitesi: &lt;a href=&quot;http://www.oceancitygame.com/&quot;&gt;http://www.oceancitygame.com/&lt;/a&gt;
Steam Greenlight Sitesi:
&lt;a href=&quot;http://steamcommunity.com/sharedfiles/filedetails/?id=93449140&amp;amp;searchtext=ocean+city+racing&quot;&gt;http://steamcommunity.com/sharedfiles/filedetails/?id=93449140&amp;amp;searchtext=ocean+city+racing&lt;/a&gt;
. Onur&#39;un diğer projeleri için sitesini inceleyebilirsiniz:
&lt;a href=&quot;http://www.onuruca.com/&quot;&gt;http://www.onuruca.com/&lt;/a&gt; .&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMcQLXHC38ItWUnBx25RxijezNkeo6ne6zt9PMq-bXLPAgIvE6lWs75lYKPIejELJ83Pj79PF6FDbafJPSz39Csuhw2DAjGcfovU4FlSStOA4YdhcmZiRlnw0crqdSDPJ6d9abwZeg0svJ/s1600/ocr2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMcQLXHC38ItWUnBx25RxijezNkeo6ne6zt9PMq-bXLPAgIvE6lWs75lYKPIejELJ83Pj79PF6FDbafJPSz39Csuhw2DAjGcfovU4FlSStOA4YdhcmZiRlnw0crqdSDPJ6d9abwZeg0svJ/s320/ocr2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrF7EaTEUpZQzaJQ6aMYbOKYFpvUeK2PjChZX9wHm3Q8RWlGDdbxKeqLU0H0bv45y6csi7POZObe4rXA-wXcachWMrm238CRPiHGVUToJPz0Sfo6ok2ov7rzUJyZOMSnUr8hecsTPHFcJ9/s1600/ocr1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrF7EaTEUpZQzaJQ6aMYbOKYFpvUeK2PjChZX9wHm3Q8RWlGDdbxKeqLU0H0bv45y6csi7POZObe4rXA-wXcachWMrm238CRPiHGVUToJPz0Sfo6ok2ov7rzUJyZOMSnUr8hecsTPHFcJ9/s320/ocr1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Ocean City Racing&#39;in grafikleri oldukça güzel görünüyor.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib72tnaRKS-6z1s6m_y8bWm4Otq_wzNGPInAUmjhBSOJXEpax9Ls6nL3Gas7DxMgfr_JBNRfqmwLipkSiKkFcVNDKtCVE2dqET668jlN8M1yPE7C0EtQ3tIoUffl-Aijsz48fUUJH3PJJe/s1600/ocr3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib72tnaRKS-6z1s6m_y8bWm4Otq_wzNGPInAUmjhBSOJXEpax9Ls6nL3Gas7DxMgfr_JBNRfqmwLipkSiKkFcVNDKtCVE2dqET668jlN8M1yPE7C0EtQ3tIoUffl-Aijsz48fUUJH3PJJe/s320/ocr3.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Ocean City Racing&#39;de araba haricinde de araç kullanabiliyorsunuz.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Bu yazıyı yazmdan önce bansettiğim
birçok oyun geliştiricisine mail attım, cevap verenlerden birisi
Hüseyin Uslu oldu. Cevabı biraz uzunca oldu, o yüzden tamamını
ayrı bir yazı olarak yayınlayacağım. Hüseyin Başkent
Üniversitesi bilgisayar mühendisliği bölümünden mezun.
Programlamaya çok ilgi duyan Hüseyin Global Game Jam&#39;lere katılarak
kendini epey geliştirdikten sonra Minecraft tarzı bir oyun motoru
üstünde çalışmaya başlamış. Motorun ismi Voxeliq. İlk
gördüğünüzde Minecraft klonu sanabilirsiniz. Görünüş itibari
ile çok benziyor olsa da Voxeliq ile birçok farklı şey
yapabilirsiniz, mesela oyun gibi. Evet yukarıda da dedğim gibi
Voxeliq bir oyun motoru. Minecraft&#39;tan bir diğer farkı da
performansı. Açık kaynak olarak yayınlanan bu motorun kodlarını
dilediğiniz gibi kurcalayıp geliştirebilirsiniz. Bütün kodlarını
şuradan indirebilirsiniz: &lt;a href=&quot;https://github.com/raistlinthewiz/voxeliq&quot;&gt;https://github.com/raistlinthewiz/voxeliq&lt;/a&gt;
.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimnJwR4OuEs_yusIbHx5CImnddO6KM33_dxWA-MfYkglIZb8eUBgzQHwJmJilcQrDFOrOYBHstjiBATt_xa_6Sg7iXEC5zvB6ESuo0i3Wd257VFNSzhMZyG2MRZSK1jqQ7qwMuk7st4rIz/s1600/vox.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;181&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimnJwR4OuEs_yusIbHx5CImnddO6KM33_dxWA-MfYkglIZb8eUBgzQHwJmJilcQrDFOrOYBHstjiBATt_xa_6Sg7iXEC5zvB6ESuo0i3Wd257VFNSzhMZyG2MRZSK1jqQ7qwMuk7st4rIz/s320/vox.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Voxeliq Minecraft&#39;ı andırsa da özünde bir oyun motoru.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Hüseyin&#39;in üstünde çalıştığı
bir başka oyun da ArchStone. ArchStone Unity3D ile geliştirilen
ufak bir şans oyunu. Daha ayrınıtı bilgilere şu steden
ulaşabilirsiniz: &lt;a href=&quot;http://www.int6.org/games/archstone/&quot;&gt;http://www.int6.org/games/archstone/&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHXosP1pb3WA_dIv-WZACJeFlfVkPtMULjW0giH2FPGc22Yan0PpQ01o-oG5syOEy93bSzlz9JyoMfsMpoI3W9r9uXoSC-4w_z8sRW0yGOikx7gLSMasinCF473QWCkP8kqjTiGZn5X09N/s1600/arch.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;173&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHXosP1pb3WA_dIv-WZACJeFlfVkPtMULjW0giH2FPGc22Yan0PpQ01o-oG5syOEy93bSzlz9JyoMfsMpoI3W9r9uXoSC-4w_z8sRW0yGOikx7gLSMasinCF473QWCkP8kqjTiGZn5X09N/s320/arch.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Hüseyin&#39;in şu anda üstünde
çalıştığı bir proje daha var, ismi Frenzied. Frenzied gerçek
anlamda Monogame ile geliştirilen bir bulmaca (puzzle) oyunu.
Monogame sayesinde gerçek anlamda multiplatform olan (Windows 8 Store, Windows Phone 7, Windows Phone 8, Android, Windows Desktop, IOS, MacOS, Linux, Ouya) Frenzied yakında tamamlanacak gibi görünüyor.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman, serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjsbztOkRqls0A8UoehjhHuaW80Buhc37vbGwGes8_hIUX9U9P1M43socuOisoUmycbAJGhOFP2u13C4jjGnI2lH4frNWrUFRjqa1Bc7rnfOxLguzJlBRASvE_NvCUNfsRN0ClrNGWXaKX/s1600/frenzied.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjsbztOkRqls0A8UoehjhHuaW80Buhc37vbGwGes8_hIUX9U9P1M43socuOisoUmycbAJGhOFP2u13C4jjGnI2lH4frNWrUFRjqa1Bc7rnfOxLguzJlBRASvE_NvCUNfsRN0ClrNGWXaKX/s320/frenzied.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Hüseyin&#39;in çalışmalarını daha yakından takip etmek için &lt;a href=&quot;http://www.int6.org/&quot;&gt;http://www.int6.org&lt;/a&gt; sitesini ziyaret edebilirsiniz.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Mail atıp da ulaşamadığım bir site
var, Kartoon.gen.tr. Ne yazık ki o siteyi ve içeriğini yapan
arkadaşın ismini de bulamadım ama girerseniz siz de göreceksiniz
ki sitede çok başarılı ve eğlenceli birçok oyun ve animasyon
yer alıyor. Bunların arasında en ünlüsü Abuzittin&#39;in maceraları
sanırım. Abuizittin serisi point &amp;amp; click dediğimiz Monkey
Island tarzı macera oyunlardan oluşuyor. Seri boyunca arkadaşının
nişan yüzüğünü kaybetmesinden mafya işlerine karışmasına
kadar bir çok absürt olay geliyor Abuzittin&#39;in başına.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKoZfs838QlLaW2QAUL2udak6Vzzim5FRqr-81jM5iOnsO_EocxpJa-2AxGvbICmg3oOVAyrY5alLRA45Gi2LjNHyJDK-Mnrinb3fJTSYn-56YVi0fs-DQApJOcYUdK5B6e56vLLnvXYDK/s1600/abu1poster.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKoZfs838QlLaW2QAUL2udak6Vzzim5FRqr-81jM5iOnsO_EocxpJa-2AxGvbICmg3oOVAyrY5alLRA45Gi2LjNHyJDK-Mnrinb3fJTSYn-56YVi0fs-DQApJOcYUdK5B6e56vLLnvXYDK/s320/abu1poster.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;Abuzittin&#39;in maceraları bir yüzükle başlıyor.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Kartoon.org.tr&#39;de bulabileceğiniz
oyunlar arasında kendi içerisinde birçok mini oyunu olan
Virüslerin saldırısı, yazı tabanlı Gizemli Orman, birkaç tane
de ufak oyun var. Hepsi çok eğlenceli yapımlardır, azıcık bile
olsa böyle şeylere ilginiz varsa kaçırmayın derim.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Evet, bir yazının daha sonuna geldik. Türkiye&#39;deki amatör oyun geliştiricileri bu kadar değil tabi, bunlar sadece ilk etapta bulduğum ve ulaşabildğim (en azında bilgi bulabildiğim) insanlardı. Siz de kendinizi amatör de olsa bir oyun geliştiricisi olarak
görüyorsanız bu yazının altına yorum yazın ya da bana bir
şekilde ulaşın, bir sonraki yazıda sizin oyununuzdan ve sizden de
bahsedeyim. Bir dahaki yazıya kadar hoşçakalın.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/1065761454899861067/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2013/02/turkiyede-amator-oyun-sektoru.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/1065761454899861067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/1065761454899861067'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2013/02/turkiyede-amator-oyun-sektoru.html' title='Türkiye&#39;de Amatör Oyun Sektörü'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvuyCziVIc-C1j7Z0QH0MU4t2eNkiNeQBoANanleP5lYArglwYKjKhrX-w0xLDrTjGevvyAsW5Beo9zKy5U42qKewVNnKSb4P7-5p3-xyejfSYyn2CqDJGoTOaOo8pSKoAVYIiMis2oCnA/s72-c/ornito2.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-5778678304934199595</id><published>2013-01-27T13:48:00.004+02:00</published><updated>2013-01-27T13:51:47.594+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="anton"/><category scheme="http://www.blogger.com/atom/ns#" term="anton semchenko"/><category scheme="http://www.blogger.com/atom/ns#" term="ceren tecim"/><category scheme="http://www.blogger.com/atom/ns#" term="feed the boss"/><category scheme="http://www.blogger.com/atom/ns#" term="ggj13"/><category scheme="http://www.blogger.com/atom/ns#" term="global game jam"/><category scheme="http://www.blogger.com/atom/ns#" term="torreng"/><category scheme="http://www.blogger.com/atom/ns#" term="torrenglabs"/><category scheme="http://www.blogger.com/atom/ns#" term="tülin samav"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="unity3d"/><title type='text'>GGJ 2013&#39;te yaptığımız oyun, Feed The Boss</title><content type='html'>Global Game Jam 2013&#39;ün son saatleri... Ceren Tecim ve Tülin Samav ile aralıksız, 48 saat boyunca geliştirdiğimiz oyun sonunda bitti!&lt;br /&gt;
&lt;br /&gt;
Feed The Boss, Stairway To Earth&#39;ten çok farklı değil, amacınız Karanlık Lord&#39;a yaranıp sağ kolu olmak. Bunun için bölüm içinde bulduğunuz kalpleri ona götürmelisiniz. Tabi bunu rakibinizden önce yapmalısınız. Kalbi ilk alan rakibiniz olursa ona vurarak kalbini düşürmesini sağlayabilirsiniz. Kalp sizde iken rakibinize vuramazsınız.&lt;br /&gt;
&lt;br /&gt;
Kontoller:&lt;br /&gt;
&lt;br /&gt;
Sarı Hayalet:&lt;br /&gt;
Zıpla: yukarı yön tuşu&lt;br /&gt;
Sağa: sağ yön tuşu&lt;br /&gt;
Sola: sol yön tuşu&lt;br /&gt;
Vur: sağ shift&lt;br /&gt;
&lt;br /&gt;
Kırmızı Hayalet&lt;br /&gt;
Zıpla: w&lt;br /&gt;
Sağa: a&lt;br /&gt;
Sola: d&lt;br /&gt;
Vur: sol shift&lt;br /&gt;
&lt;br /&gt;
Birkaç tane &amp;nbsp;de ekran görüntüsü koyayım:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2ytdG5poGNvJZzYfhH3d6CWZOF-Zi25LcKGdXa8q-NRTbdshWzy-EM_RtvfqmjaSrmhewnbbBFgM4agSXEBcBYXs8uW3d_usJQdiYVXNqE36XBAd1_bYnJI4R0CnlJngpLnxA411i4eRp/s1600/screen1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2ytdG5poGNvJZzYfhH3d6CWZOF-Zi25LcKGdXa8q-NRTbdshWzy-EM_RtvfqmjaSrmhewnbbBFgM4agSXEBcBYXs8uW3d_usJQdiYVXNqE36XBAd1_bYnJI4R0CnlJngpLnxA411i4eRp/s320/screen1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2VCy8dRHOyElKsO61iukFxKItG4LEBeDC3Ckzb7Au-cMe99BQCTawC11Yx13-c79JkryCBAwL0QONX8fzY8hNXEEM8R8se90TwwWmQ8cCMdOEunnj9d9XcWQVkaadCv0LIzZRYJZRs9cP/s1600/screen3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2VCy8dRHOyElKsO61iukFxKItG4LEBeDC3Ckzb7Au-cMe99BQCTawC11Yx13-c79JkryCBAwL0QONX8fzY8hNXEEM8R8se90TwwWmQ8cCMdOEunnj9d9XcWQVkaadCv0LIzZRYJZRs9cP/s320/screen3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjg_LiLjkYMAp3hdBtUtjie-O1y-nKQL9ESqYc9lEUnFJ1WRI3miW915SficV7ok0ODCRyaYGrKOW2elZI-STu3tbeke7b6SbmWJxz0Ep40Ydv0Emv8UuV-OVq9mVZ6pHmEyMIaqGjIo4fa/s1600/screen4png.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjg_LiLjkYMAp3hdBtUtjie-O1y-nKQL9ESqYc9lEUnFJ1WRI3miW915SficV7ok0ODCRyaYGrKOW2elZI-STu3tbeke7b6SbmWJxz0Ep40Ydv0Emv8UuV-OVq9mVZ6pHmEyMIaqGjIo4fa/s320/screen4png.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvioyjOuqy55Tvcw6YcTXehgYaWBcD1cxRn61Lom89nhky69jF7n5NqfOzz469KV8rMOki-YN__0cjM3E-DJvQcM_YuC1iBGil78YC8kL6jNd0e9RdXVeYcrF81u2uSUUvV-TZUYP8cnfa/s1600/screen2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvioyjOuqy55Tvcw6YcTXehgYaWBcD1cxRn61Lom89nhky69jF7n5NqfOzz469KV8rMOki-YN__0cjM3E-DJvQcM_YuC1iBGil78YC8kL6jNd0e9RdXVeYcrF81u2uSUUvV-TZUYP8cnfa/s320/screen2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://antonsemchenkoprojects.blogspot.com/2013/01/ggj-2013-game-feed-boss.html&quot;&gt;Oyunu bu sayfadan indirebilirsiniz.&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/5778678304934199595/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2013/01/ggj-2013te-yaptgmz-oyun-feed-boss.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/5778678304934199595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/5778678304934199595'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2013/01/ggj-2013te-yaptgmz-oyun-feed-boss.html' title='GGJ 2013&#39;te yaptığımız oyun, Feed The Boss'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2ytdG5poGNvJZzYfhH3d6CWZOF-Zi25LcKGdXa8q-NRTbdshWzy-EM_RtvfqmjaSrmhewnbbBFgM4agSXEBcBYXs8uW3d_usJQdiYVXNqE36XBAd1_bYnJI4R0CnlJngpLnxA411i4eRp/s72-c/screen1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-8086984534615028805</id><published>2013-01-05T01:24:00.000+02:00</published><updated>2013-01-05T01:24:56.679+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="anton"/><category scheme="http://www.blogger.com/atom/ns#" term="anton semchenko"/><category scheme="http://www.blogger.com/atom/ns#" term="particle"/><category scheme="http://www.blogger.com/atom/ns#" term="particle in a box"/><category scheme="http://www.blogger.com/atom/ns#" term="torreng"/><category scheme="http://www.blogger.com/atom/ns#" term="torrenglabs"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="unity3d"/><title type='text'>Particle In A Box son beta sürümü</title><content type='html'>Artık aklıma gelen ve yapmak istediğim her şeyi yaptım. Oyunun düzeltilecek bir tarafını bulamıyorum, o yüzden sanırım son hali böyle olacak. Bundan sonra sadece bölüm yapacağım. Bu sürümde şunları ekledim:&lt;br /&gt;
&lt;br /&gt;
- Bölümler seviye atladıkça açılıyor&lt;br /&gt;
- Arkaplan ekledim ve menülerin görünümlerini değiştirdim&lt;br /&gt;
- &quot;Credits&quot; menüsü ekledim&lt;br /&gt;
- &quot;How to play&quot; menüsünü güncelledim&lt;br /&gt;
&lt;br /&gt;
Daha önce Particle In A Box oynadıysanız options&#39;a girip oyun kayıtlarını silin. Özellikle bundan sonraki geri bildirimler benim için çok önemli. Herhangi bir eksik görürseniz ya da bir öneriniz olursa lütfen haber verin.&lt;br /&gt;
&lt;br /&gt;
Birkaç ekran görüntüsü:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjql9f8EpaO0MP55w5_LLzLWjgQ2l577MN0C39HmvfuqbAxSl-k9_R1T0dPZ4zIF0sJ5fgRCYSq98H9YUeuo06ReV6BrYznLdAVaVng0ft8DHklH8LpcZoS4CKBXZXz1-Q1UQBrlnLRTO_K/s1600/ss4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjql9f8EpaO0MP55w5_LLzLWjgQ2l577MN0C39HmvfuqbAxSl-k9_R1T0dPZ4zIF0sJ5fgRCYSq98H9YUeuo06ReV6BrYznLdAVaVng0ft8DHklH8LpcZoS4CKBXZXz1-Q1UQBrlnLRTO_K/s320/ss4.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdfc6GKSU4HfawaVBWeV4KxA9iRz6tfeCTh_9zncQT2BPtPLtaTu8i5gszDjMs6daIxvY-mCXge3bNywosSZZ0EndB0ntGQdk3qhI8Ht0iTomHnqwMQWS7WRWEjMD9mmpzN3VN44feWuQ2/s1600/ss6.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdfc6GKSU4HfawaVBWeV4KxA9iRz6tfeCTh_9zncQT2BPtPLtaTu8i5gszDjMs6daIxvY-mCXge3bNywosSZZ0EndB0ntGQdk3qhI8Ht0iTomHnqwMQWS7WRWEjMD9mmpzN3VN44feWuQ2/s320/ss6.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiROVY615L-EX36YnnYpe7id1sImN0w7UPruqmm55lMUUlmTwy3HTpNMqdvWhhjJnNhbYTDQm51tffIvu73lHaTywxHfqRdwuWGlYfKtdFn7m2yhtB56tuywkFx9Ivmxn8oSNHDHdI5YHdK/s1600/ss5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiROVY615L-EX36YnnYpe7id1sImN0w7UPruqmm55lMUUlmTwy3HTpNMqdvWhhjJnNhbYTDQm51tffIvu73lHaTywxHfqRdwuWGlYfKtdFn7m2yhtB56tuywkFx9Ivmxn8oSNHDHdI5YHdK/s320/ss5.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Windows ve Android betalarını &lt;a href=&quot;http://antonsemchenkoprojects.blogspot.com/2013/01/particle-in-box-final-beta-version.html&quot;&gt;bu sayfadan&lt;/a&gt; indirebilirsiniz.</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/8086984534615028805/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2013/01/particle-in-box-son-beta-surumu.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/8086984534615028805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/8086984534615028805'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2013/01/particle-in-box-son-beta-surumu.html' title='Particle In A Box son beta sürümü'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjql9f8EpaO0MP55w5_LLzLWjgQ2l577MN0C39HmvfuqbAxSl-k9_R1T0dPZ4zIF0sJ5fgRCYSq98H9YUeuo06ReV6BrYznLdAVaVng0ft8DHklH8LpcZoS4CKBXZXz1-Q1UQBrlnLRTO_K/s72-c/ss4.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-1198929374240649079</id><published>2012-12-19T01:46:00.002+02:00</published><updated>2012-12-19T01:51:54.366+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="anton"/><category scheme="http://www.blogger.com/atom/ns#" term="anton semchenko"/><category scheme="http://www.blogger.com/atom/ns#" term="box"/><category scheme="http://www.blogger.com/atom/ns#" term="particle"/><category scheme="http://www.blogger.com/atom/ns#" term="particle in a box"/><category scheme="http://www.blogger.com/atom/ns#" term="torreng"/><category scheme="http://www.blogger.com/atom/ns#" term="torrenglabs"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="unity3d"/><title type='text'>Particle In A Box beta</title><content type='html'>Sonunda biraz boş zaman bulup Particle In A Box ile uğraşabildim. Başlıktan da anlaşıldığı gibi oyunu beta sürümüne kadar getirdim. Oyunun bu sürümünde getirdiğim en önemli özellik skorlarınızı kaydedebiliyor olmanız. Daha doğrusu skorlar otomatik olarak kaydediliyor, siz istediğiniz zaman silebiliyorsunuz. Bir de fark edeceğiniz gibi menüleri değiştirdim, çok daha güzel ve kullanışlı bir hale getirdim. Son olarak da oyunun Android versiyonunu yaptım ve onun da apk&#39;sını indirip telefonlarınızda ya da tabletlerinizde oynayabilirsiniz. Bu aşamada oyunu daha çok teknik açıdan geliştirdiğim için sadece iki yeni bölüm yapabildim.&lt;br /&gt;
&lt;br /&gt;
http://antonsemchenkoprojects.blogspot.com/2012/12/particle-in-box-alpha.html&lt;br /&gt;
&lt;br /&gt;
Not: Yenilikler sadece yukarıda bahsettiklerimle sınırlı değil, diğerlerini oyunu oynayınca fark edersiniz zaten.&lt;br /&gt;
Not2: Herhangi bir sorunla karşılaşırsanız ya da öneriniz olursa mutlaka yazın.</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/1198929374240649079/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2012/12/particle-in-box-beta.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/1198929374240649079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/1198929374240649079'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2012/12/particle-in-box-beta.html' title='Particle In A Box beta'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-73702549101222163</id><published>2012-11-21T09:38:00.000+02:00</published><updated>2012-11-21T09:43:34.348+02:00</updated><title type='text'>Unity Dersleri</title><content type='html'>Gördüm ki Unity ile oyun geliştirmek çok basit, çok fazla bir şey bilmeye gerek yok. O yüzden Unity dersleri hazırlamaya karar verdim. Daha yeni olduğum için hemen başlamayacağım ama kendimi hazır hissettiğimde ilk dersi yapacağım.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieDcoQqJOuoWZpSysKS3CsDaKEA2QKh0RaAwVpmutUMwyUdmAKrs7UX397bzEdlz5qnJI_cE4BZT0xOfLf4HBgJgBl9yG5FFgRs1lX-7t1ibbPicx8lQnEiYWb3I-o3ePg72AJ76N8gnK5/s1600/unity3d.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieDcoQqJOuoWZpSysKS3CsDaKEA2QKh0RaAwVpmutUMwyUdmAKrs7UX397bzEdlz5qnJI_cE4BZT0xOfLf4HBgJgBl9yG5FFgRs1lX-7t1ibbPicx8lQnEiYWb3I-o3ePg72AJ76N8gnK5/s1600/unity3d.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/73702549101222163/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2012/11/unity-dersleri.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/73702549101222163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/73702549101222163'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2012/11/unity-dersleri.html' title='Unity Dersleri'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieDcoQqJOuoWZpSysKS3CsDaKEA2QKh0RaAwVpmutUMwyUdmAKrs7UX397bzEdlz5qnJI_cE4BZT0xOfLf4HBgJgBl9yG5FFgRs1lX-7t1ibbPicx8lQnEiYWb3I-o3ePg72AJ76N8gnK5/s72-c/unity3d.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-8735186644082772007</id><published>2012-11-20T20:51:00.003+02:00</published><updated>2012-11-25T15:04:47.727+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3d"/><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="anton"/><category scheme="http://www.blogger.com/atom/ns#" term="anton semchenko"/><category scheme="http://www.blogger.com/atom/ns#" term="particle"/><category scheme="http://www.blogger.com/atom/ns#" term="particle in a box"/><category scheme="http://www.blogger.com/atom/ns#" term="torreng"/><category scheme="http://www.blogger.com/atom/ns#" term="unity"/><category scheme="http://www.blogger.com/atom/ns#" term="unity3d"/><title type='text'>Particle In A Box Alpha</title><content type='html'>Unity ile Android için geliştirmeye başladığım oynun, pc alpha versiyonudur. Şimdilik sadece dokuz bölümü var.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJWjuJDMVRCM27ix3SAUWXPzbNvERzGfNi9EK2x4e7uPAIVWxtx_5_Ip8eaBAKcFVHn0szPE1L4z_pOzSPsLNZsnUst8BxdEzBMUbRtdDuzQ74D5D0okT9xS4pY7kfWME-E3otUiAv_5RM/s1600/piab.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJWjuJDMVRCM27ix3SAUWXPzbNvERzGfNi9EK2x4e7uPAIVWxtx_5_Ip8eaBAKcFVHn0szPE1L4z_pOzSPsLNZsnUst8BxdEzBMUbRtdDuzQ74D5D0okT9xS4pY7kfWME-E3otUiAv_5RM/s320/piab.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQHriDxYENo9YxHswRDHcto-K2vxf21uDI8RbLZlFP8MIBY0MJOqvcVBcBCe4zumW74tMIi0TYEQO8GFaoMe1h24uF1zhAtmJJBWAiEg0llLvumzfLvapKI3jEC_aiMPdeM38nTV-DYcsd/s1600/piab2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQHriDxYENo9YxHswRDHcto-K2vxf21uDI8RbLZlFP8MIBY0MJOqvcVBcBCe4zumW74tMIi0TYEQO8GFaoMe1h24uF1zhAtmJJBWAiEg0llLvumzfLvapKI3jEC_aiMPdeM38nTV-DYcsd/s320/piab2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Kontolleri oldukça basit, topun &quot;a&quot;ya basarak yükselmesini sağlıyorsunuz. Bir de &quot;s&quot;ye basarak hızlandırabilirsiniz. Amacınız her bölümdeki bütün topları toplayarak finiş çizgisine ulaşmak.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Oyunu deneyenler şurası zor olmuş, burayı böyle yapsan daha güzel olur, bir de şöyle bir şey ekle şeklinde feedback verirse sevinirim.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;http://antonsemchenkoprojects.blogspot.com/2012/11/particle-in-box-alpha.html&quot;&gt;Oyunu bu sayfaya giderek indirebilirsiniz.&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/8735186644082772007/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2012/11/particle-in-box-alpha.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/8735186644082772007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/8735186644082772007'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2012/11/particle-in-box-alpha.html' title='Particle In A Box Alpha'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJWjuJDMVRCM27ix3SAUWXPzbNvERzGfNi9EK2x4e7uPAIVWxtx_5_Ip8eaBAKcFVHn0szPE1L4z_pOzSPsLNZsnUst8BxdEzBMUbRtdDuzQ74D5D0okT9xS4pY7kfWME-E3otUiAv_5RM/s72-c/piab.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-5030008367755247730</id><published>2012-10-30T20:45:00.001+02:00</published><updated>2012-11-21T09:41:18.982+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="anton"/><category scheme="http://www.blogger.com/atom/ns#" term="anton semchenko"/><category scheme="http://www.blogger.com/atom/ns#" term="anton semchenko portfolyo"/><category scheme="http://www.blogger.com/atom/ns#" term="anton semchenko projeler"/><category scheme="http://www.blogger.com/atom/ns#" term="portfolyo"/><category scheme="http://www.blogger.com/atom/ns#" term="proje"/><category scheme="http://www.blogger.com/atom/ns#" term="projelerim"/><title type='text'>Projelerim</title><content type='html'>Yaptığım ve yapacağım bütün projeleri bir sayfada toplayayım dedim. Şimdilik sadece Stairway to Earth ve Goyun sayma uygulamasını koydum. Yakında şu anda üstünde uğraştığım oyunun da tanıtımını yapacağım. Buyurun siz de bakın:&amp;nbsp;&lt;a href=&quot;http://antonsemchenkoprojects.blogspot.com/&quot;&gt;http://antonsemchenkoprojects.blogspot.com/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/5030008367755247730/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2012/10/projelerim.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/5030008367755247730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/5030008367755247730'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2012/10/projelerim.html' title='Projelerim'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-4403951422665710857</id><published>2012-06-27T02:41:00.000+03:00</published><updated>2012-06-27T04:31:51.257+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oyun"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapma"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapımına giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="programlama dilleri"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame ile oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame.mixer.Sound()"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="python ile oyun yazmak"/><title type='text'>Pygame (4)</title><content type='html'>Herkese tekrar merhaba. Bu sefer arayı fazla açmayım hemen yeni bir ders yazayım dedim. Geçen derste menü yapacağımızda bahsetmiştim, fazla uzatmadan benim kullandığım yöntemi anlatayım.&lt;br /&gt;
&lt;br /&gt;
Yapacağımız şey oyunun döndüğü while döngüsünün içine bir while döngüsü daha eklemek. Menüye gireceğimiz zaman ikinci while&#39;ın şartını doğru yapacağız, işimiz bitince de yine yanlış yaparsak asıl oyunun döndüğü while döngüsü kaldığı yerden devam edecektir. Tabi bunun için öncelikle menünün while döngüsünü yazmamız lazım.&lt;br /&gt;
&lt;br /&gt;
Yapacağımız menüde önce butonları yapalım, sonra içlerine yazı yazarız. Bütün bunları bir sınıf ile halledebiliriz. Bu sınıf çağrıldığında butonun kendisi olan bir dikdörtgen ve içindeki yazıyı döndürecek. O halde sınıf dikdörtgenin boyutlarını, rengini ve yazıyı argüman olarak almalı. Ayrıca işimizi kolaylaştırmak için işlevini de argüman olarak alalım ve basıp basmadığımızı kontrol eden bir fonksiyon yazalım. Hemen hemen her şeyi düşündüğümüze göre sınıfı yazmaya başlayalım:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
class düğme():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, renk, boyut, koordinat, yazı, yazının_rengi, işlevi):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.işlev = işlevi&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.renk = renk&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.boyut = boyut&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.koordinat = koordinat&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.yazı = bizim_font.render(yazı, True, yazının rengi)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect(self.koordinat, self.boyut)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp; def bas(self):&lt;/code&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (x, y) = pygame.mouse.get_pos()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if self.kare.collidepoint((x, y)):&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return False&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Tabi bir önceki derste anlattığım gibi bizim_font&#39;u tanımlamış olmamız lazım. Yukarıda kullandığım pygame.mouse.get_pos() fonksiyonu tahmin edebileceğiniz gibi mouse&#39;un koordinatlarını (x, y) şeklinde döndürüyor. kare.colliedpont((koordinatlar)) fonksiyonu da aynı kare.colliderect() fonksiyonu gibi çalışıyor. Aralarındaki tek fark colliderect iki karenin çarpışıp çarpışmadığını kontrol ediyor, collidepoint ise bir noktanın karenin içinde olup olmadığını kontrol ediyor. Artık düme_ismi.bas() fonksiyonunu çağırdığımız zaman düğmeye basabildiysek True, basamadıysak False değerini döndürecek.&lt;br /&gt;
&lt;br /&gt;
Bundan sonra istediğiniz düğmeyi kolayca yaratabilirsiniz. Hemen yapalım iki tane:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
düğme1 = düğme((255, 255, 255), (120, 40), (çözünürlük[0] / 2 - 60, 100), &quot;Yeni Oyun&quot;, (255, 0, 0), &quot;başla&quot;)&lt;br /&gt;
düğme2 = düğme((255, 255, 255), (90, 40), (çözünürlük[0] / 2 - 45, 145), &quot;Çıkış&quot;, (255, 0, 0), &quot;çık&quot;)&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Arkaplan renkleri beyaz, yazıları kırmızı olan, &quot;Yeni Oyun&quot; ve &quot;Çıkış&quot; diye iki tane düğme yarattık. Şimdi bunları ekrana çizdirelim. Bunu yapmadan önce bir şeyi daha hesaba katmalıyız, ileride bunlar gibi birçok düğme yaratmak isteyebiliriz. O halde hepsini daha kolay yönetebilmek için düğmeler_listesi diye bir liste yaratalım. Bu liste yardımı ile istediğimiz kadar düğmeyi ekrana tek bir fonksiyon ile çizdirebiliriz.&lt;br /&gt;
&lt;br /&gt;
En son ilk while döngümüzün içine (devam şartına bağlı olan döngü) yeni bir while döngüsü koyalım (menü şartına bağlı olan döngü).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
düğmeler_listesi = [düğme1, düğme2]&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
menü = True&lt;br /&gt;
&lt;br /&gt;
while devam:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; while menü:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for event in pygame.event.get():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.MOUSEBUTTONDOWN:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for i in düğmeler_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.bas():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.işlev == &quot;başla&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; menü = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.işlev == &quot;çık&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; menü = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pencere.fill((0, 0, 0)) #menünün arkaplanı siyah olacak&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for i in düğmeler_listesi: #bütün düğmeleri üç satır kod ile çizdirmemize yarayan fonksiyon&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, i.renk, i.kare) #düğmenin arkaplanı olan kareyi çizdiriyoruz&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pencere.blit(i.yazı, i.yazı_koordinat) #düğmenin üstündeki yazıyı yazdırıyoruz&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.display.update()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; time.sleep(0.0025)&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Satırları tek tek açıklayayım. for event ile başlayan sonraki satırlar zaten tanıdık, sadece pygame.MOUSEBUTTONDOWN kısmı farklı ki bu fonksiyon pygame.KEYDOWN&#39;un mouse&#39;a uyarlanmış hali. Mouse&#39;ta bir tuşa basarsan anlamı taşıyor. Sonra yaptığımız listenin faydalarını göremeye başlıyoruz. Düğme sayısı ne olursa olsun hepsini tek bir for döngüsü ile kontrol edebiliyoruz (önemli not: for döngüsünü daha önce anlatmamış olduğumu fark ettim, ilk derse if elif else&#39;ten sonrasına ekledim). Eğer mouse&#39;un herhangi bir düğmesine basarsak, for döngüsü, düğmeler_listesi&#39;ndeki her bir düğmeyi &quot;acaba hangisine basıldı&quot; diye kontrol edecek. Eğer gerçekten bir düğmeye basmışsak &amp;nbsp;ve bas() fonksiyonu True değerini döndürmüşse o zaman oyunumuz tam olarak hangi düğmeye bastığımızı if ile kontrol etmeye başlayacak. Burada işlev değişkenini kullanmak yerine düğmenin üstünde ne yazdığına bakarak da aynı işi yapabilirdik.&lt;br /&gt;
&lt;br /&gt;
Oyun içindeyken menüye girmek istersek daha önce yazdığımız, &quot;for event in pygame ...&quot; kısmına yeni bir tuş ekleyerek bunu yapabilirsiniz.&lt;br /&gt;
&lt;br /&gt;
Şimdiye kadar yazdığınız kod, oyunu ilk açtığınızda karşınıza menü ekranını getirecek ve eğer Yeni Oyun düğmesine basarsanız yeni oyun başlayacaktır. Buna benzer bir kod yazmış olmanız lazım:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
import pygame, time, random&lt;br /&gt;
&lt;br /&gt;
pygame.init()&lt;br /&gt;
&lt;br /&gt;
#### DEĞİŞKENLER ####&lt;br /&gt;
&lt;br /&gt;
çözünürlük = (800, 600)&lt;br /&gt;
devam = menü = True #menü değişkenini burada tanımladım&lt;br /&gt;
son_düşman_ekleme = pygame.time.get_ticks()&lt;br /&gt;
&lt;br /&gt;
pencere = pygame.display.set_mode(çözünürlük)&lt;br /&gt;
&lt;br /&gt;
bizim_font = pygame.font.SysFont(&quot;arial&quot;, 30)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#### CLASSLAR ####&lt;br /&gt;
&lt;br /&gt;
class oyuncu():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, boyut, resim):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.skor = 0&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.can = 10&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.boyut = boyut&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.resim = pygame.image.load(resim)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((350, çözünürlük[1] - self.boyut[1]), self.boyut)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket_iptal(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class düğme():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, renk, boyut, koordinat, metin, yazının_rengi, işlevi):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.işlev = işlevi&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.renk = renk&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.boyut = boyut&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.koordinat = koordinat&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.yazı = bizim_font.render(metin, True, yazının_rengi)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.yazı_koordinat = (koordinat[0] + 3, koordinat[1] + 3)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect(self.koordinat, self.boyut)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def bas(self):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (x, y) = pygame.mouse.get_pos()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if self.kare.collidepoint((x, y)):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class mermi():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global çözünürlük&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, oyuncu):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((oyuncu.kare.left + oyuncu.boyut[0] / 2, çözünürlük[1] - oyuncu.boyut[1]), (2,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class düşman():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pos_x = random.randint(0, çözünürlük[0] - 50)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((pos_x, -50), (50, 50))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#### FONKSİYONLAR ####&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def hareketler():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global oyuncu1, çözünürlük, mermi_listesi&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.sağa and oyuncu1.kare.right &amp;lt; çözünürlük[0]:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.kare.left += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.sola and oyuncu1.kare.left &amp;gt; 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.kare.left -= 1&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in mermi_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.kare.top -= 3&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.bottom &amp;lt; 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.remove(i)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in düşman_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.kare.bottom += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.top &amp;gt; çözünürlük[1]:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.remove(i)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.can -= 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def düşman_ekle():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global son_düşman_ekleme&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if pygame.time.get_ticks() - son_düşman_ekleme &amp;gt; 3000:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; son_düşman_ekleme = pygame.time.get_ticks()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.append(düşman())&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def çarpışma():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global oyuncu1, düşman_listesi, mermi_listesi&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in düşman_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for k in mermi_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.colliderect(k.kare):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.remove(i)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.remove(k)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.skor += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.colliderect(oyuncu1.kare):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.remove(i)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.can -= 1&lt;br /&gt;
&lt;br /&gt;
oyuncu1 = oyuncu((50, 50), &quot;uzay_gemisi.gif&quot;)&lt;br /&gt;
#düğmeleri yaratıyoruz:&lt;br /&gt;
düğme1 = düğme((255, 255, 255), (120, 40), (çözünürlük[0] / 2 - 60, 100), &quot;Yeni Oyun&quot;, (255, 0, 0), &quot;başla&quot;)&lt;br /&gt;
düğme2 = düğme((255, 255, 255), (90, 40), (çözünürlük[0] / 2 - 45, 145), &quot;Çıkış&quot;, (255, 0, 0), &quot;çık&quot;)&lt;br /&gt;
&lt;br /&gt;
#### LİSTELER ####&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mermi_listesi = []&lt;br /&gt;
düşman_listesi = []&lt;br /&gt;
düğmeler_listesi = [düğme1, düğme2] #düğmeler listesini yaratıp içine düğme1 ve düğme2&#39;yi ekledik&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
while devam:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; while menü:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for event in pygame.event.get():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.MOUSEBUTTONDOWN:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for i in düğmeler_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.bas():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.işlev == &quot;başla&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; menü = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.işlev == &quot;çık&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; menü = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pencere.fill((0, 0, 0)) #menünün arkaplanı siyah olacak&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for i in düğmeler_listesi: #bütün düğmeleri üç satır kod ile çizdirmemize yarayan fonksiyon&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, i.renk, i.kare) #düğmenin arkaplanı olan kareyi çizdiriyoruz&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pencere.blit(i.yazı, i.yazı_koordinat) #düğmenin üstündeki yazıyı yazdırıyoruz&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.display.update()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; time.sleep(0.0025)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.can == 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for event in pygame.event.get():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.QUIT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYDOWN:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket(&quot;sola&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket(&quot;sağa&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_SPACE:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.append(mermi(oyuncu1))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYUP:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket_iptal(&quot;sola&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket_iptal(&quot;sağa&quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; hareketler()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; düşman_ekle()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; çarpışma()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pencere.fill((0, 0, 0))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pencere.blit(oyuncu1.resim, oyuncu1.kare)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in mermi_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (255, 255, 255), i.kare)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in düşman_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (255, 255, 255), i.kare)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; can_yazı = bizim_font.render(str(oyuncu1.can), True, (0, 255, 0))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; skor_yazı = bizim_font.render(str(oyuncu1.skor), True, (255, 0, 0))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pencere.blit(can_yazı, (5, 5))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pencere.blit(skor_yazı, (5, 35))&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pygame.display.update()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; time.sleep(0.0025)&lt;br /&gt;
&lt;br /&gt;
pygame.quit()&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
Menü yazılarının arkaplanlarını düzgün ayarladıktan sonra komple kaldırabilirsiniz. O karelerin tek işlevleri yazılara tıklayıp tıklamadığınızı kontrol etmek. pygame.draw.rect(pencere, i.renk, i.kare) satırını silerseniz o çirkin kareler kaybolacaklardır.&lt;br /&gt;
&lt;br /&gt;
En son oyuna ses eklemek kaldı. Bu işlemi de resim eklemeye benzer bir şekilde yapıyoruz:&amp;nbsp;pygame.mixer.Sound(&quot;ses.wav&quot;) komutu ile kullanacağımız sesi kullanıyoruz (ses.wav örnek bir isim, aynı resmi tanımlarken pygame.image.load(&quot;resim.jpg&quot;)&#39;deki resim.jpg gibi). Hemen ates.wav dosyasını çalalım mesela:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
ates_sesi = pygame.mixer.Sound(&quot;ates.wav&quot;)&lt;br /&gt;
ates_sesi.play()&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Evet, her şey bu kadar basit. ates_sesi&#39;ni resimleri tanımladığımız yerde tanımlayalım, mermiyi oluştururken de çalalım, yani ates_sesi.play()&#39;i mermi sınıfının içine bir yere yazalım:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
class mermi():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global çözünürlük&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, oyuncu):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((oyuncu.kare.left + oyuncu.boyut[0] / 2, çözünürlük[1] - oyuncu.boyut[1]), (2,3))&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ates_sesi.play()&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bu derste anlatmak istediklerim de bu kadar. Ses ile ne yapabileceğinizi daha ayrıntılı bir şekilde öğrenmek için &lt;a href=&quot;http://www.pygame.org/docs/ref/music.html&quot; target=&quot;_blank&quot;&gt;müzik&lt;/a&gt; ve &lt;a href=&quot;http://www.pygame.org/docs/ref/mixer.html&quot; target=&quot;_blank&quot;&gt;mixer&lt;/a&gt; dokumentasyonlarına bakabilirsiniz. Bir sonraki derste görüşmek üzere.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/4403951422665710857/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2012/06/pygame-4.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/4403951422665710857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/4403951422665710857'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2012/06/pygame-4.html' title='Pygame (4)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-8486358625225010934</id><published>2012-06-20T06:40:00.000+03:00</published><updated>2012-06-20T23:01:54.753+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="blit"/><category scheme="http://www.blogger.com/atom/ns#" term="blit()"/><category scheme="http://www.blogger.com/atom/ns#" term="class"/><category scheme="http://www.blogger.com/atom/ns#" term="def"/><category scheme="http://www.blogger.com/atom/ns#" term="def()"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapma"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapmak"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapımına giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="programlama dilleri"/><category scheme="http://www.blogger.com/atom/ns#" term="programlama öğrenme"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame ile oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="python ile oyun yazmak"/><title type='text'>Pygame (3)</title><content type='html'>Merhaba arkadaşlar! Okul, sınavlar falan derken uzun zamandır yazı yazmadım. Hazır finaller de bitmiş şimdi tam zamanı dedim.
 En son derste NES&#39;ten bildiğimiz Star Force benzeri bir oyunun taslağını yapmıştık, bu derste de resim ve yazı ekleyeceğiz. İşe yazı ile başlayalım. Önce kullanacağımız fontu tanıtmamız lazım, bunu pencereyi tanımladığımız satırın altında bir yerlerde şu şekilde yapıyoruz:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;bizim_font = pygame.font.SysFont(&quot;arial&quot;, 30)&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Bu komut sistemin mevcut fontlarına bakacak, içlerinden arial isimli fontu bulacak ve istediğimiz zaman 30 piksel büyüklüğünde yazdıracak. Yazdırma işlemi iki adımda olacak:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;yazı_yaz = bizim_font.render(&quot;Trololo&quot;, True, (0, 255, 0))&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;pencere.blit(yazı_yaz, (0, 0))&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
İlk satırda ne yazacağımızı ve hangi renkle yazacağımızı belirledik, ikinci satırda &quot;blit&quot; fonksiyonunu kullanarak yazıları ekrana çizdirdik (resimleri de hemen hemen aynı şekilde çizdireceğiz). Oyuna skor ve can göstergelerini eklemek için gereken her şeyi biliyoruz. Daha önce can sayacını oyuncu sınıfını içine eklemiştik, şimdi aynı şekilde skor sayacını da ekleyelim.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
class oyuncu():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, renk, boyut):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.skor = 0 #skor sayacını buraya ekledik&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.can = 10&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.boyut = boyut&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((350, çözünürlük[1] - self.boyut[1]), self.boyut)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.renk = renk&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket_iptal(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;br /&gt;
Şimdi de skoru arttırması için çarpışma fonksiyonunda düzeltmeler yapalım:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
def çarpışma():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global oyuncu1, düşman_listesi, mermi_listesi&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in düşman_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for k in mermi_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.colliderect(k.kare):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.remove(i)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.remove(k)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.skor += 1 #skoru arttır&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.colliderect(oyuncu1.kare):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.remove(i)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.can -= 1&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Canın azalmasını zaten önceden yapmıştık. Fontumuzu daha önce gösterdiğim şekilde tanımladıktan sonra pygame.display.update() fonksiyonundan hemen önce yazılarımızı yazdıralım:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
#skoru ve canı yazıya çevirme&lt;br /&gt;
&amp;nbsp; &amp;nbsp; can_yazı = bizim_font.render(str(oyuncu1.can), True, (0, 255, 0))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; skor_yazı = bizim_font.render(str(oyuncu1.skor), True, (255, 0, 0))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Yazı yazdırma:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pencere.blit(can_yazı, (5, 5))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pencere.blit(skor_yazı, (5, 35))&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pygame.display.update()&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Gördüğünüz gibi oyuncu1.can&#39;ı ve oyuncu1.skor&#39;u önce &quot;string&quot; tipine çevirdim çünkü render fonksiyonu sayılarla değil, sadece karakterlerle çalışıyor. Daha sonra da can_yazı&#39;yı ve skor_yazı&#39;yı 5, 5 ve 5, 35 koordinatlarına çizdirdim. İsterseniz bir de &quot;while devam:&quot; satırının hemen altına&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
if oyuncu1.can == 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = False&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
ekleyin ki canınız bittiğinde oyun da bitsin. Bu şekilde oyunu açarsanız sol üst köşede yeşil can ve kırmızı skor göstergelerini göreceksiniz. Ayrıca print(oyuncu1.can) satırlarını da silebilirsiniz, onlarla işimiz kalmadı.&lt;br /&gt;
&lt;br /&gt;
Şimdi gelelim resim eklemeye. Aynı yazıda olduğu gibi resmi çizdirmeden önce onu tanımlamalıyız, bunu pygame.image.load(&quot;resmin_adı&quot;) fonksiyonu ile yapıyoruz. Resmin adını yazarken uzantısını da unutmamaya dikkat edin. Eğer resim .py uzantılı dosyanın olduğu klasörde değil de bir alt klasördeyse adresi olduğu gibi yazabilirsiniz. Örnek vereyim, oyunum klasörünün içinde oyun.py dosyası ve resimler diye bir klasör varsa ve uzay_gemizi.jpg resmi resim klasörünün içindeyse kodunuz şu şekilde olmalı: pygame.image.load(&quot;resimler/uzay_gemisi.jpg&quot;)&lt;br /&gt;
&lt;br /&gt;
Ekrana çizdirme işini yine blit ile yapıyoruz. Hemen bir örnek yazayım:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
benim_resmim = pygame.image.load(&quot;resim.gif&quot;)&lt;br /&gt;
pencere.blit(benim_resmim, (15, 15))&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Tabi ki bunları pencereyi tanımladıktan sonra yazmalısınız. Hemen oyuncu sınıfına resim tanımlama işini verelim o halde:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
class oyuncu():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, renk, boyut, resim):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.skor = 0&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.can = 10&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.boyut = boyut&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.resim = pygame.image.load(resim) #resmi burada tanımladık.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((350, çözünürlük[1] - self.boyut[1]), self.boyut)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.renk = renk&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket_iptal(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;oyuncu1 = oyuncu((255, 0, 0), (50, 50), &quot;uzay_gemisi.gif&quot;) #resmi de ekledik&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Artık oyuncu yaratırken renk ve boyutun yanında bir de resim adresi vereceğiz. Resmi pencereye çizdirmek için de&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
pygame.draw.rect(pencere, oyuncu1.renk, oyuncu1.kare)&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;br /&gt;
satırını&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
pencere.blit(oyuncu1.resim, oyuncu1.kare)&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;br /&gt;
ile değiştirmemiz yeterli olacaktır. Artık oyuncu karesinin rengi ile ilgilenmediğimize göre o oyuncu sınıfının içindeki self.renk satırını ve onunla ilgili her şeyi silebiliriz. Kodunuzun son hali böyle bir şey olmalı:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
import pygame, time, random&lt;br /&gt;
&lt;br /&gt;
pygame.init()&lt;br /&gt;
&lt;br /&gt;
#### DEĞİŞKENLER ####&lt;br /&gt;
&lt;br /&gt;
çözünürlük = (800, 600)&lt;br /&gt;
devam = True&lt;br /&gt;
son_düşman_ekleme = pygame.time.get_ticks()&lt;br /&gt;
&lt;br /&gt;
pencere = pygame.display.set_mode(çözünürlük)&lt;br /&gt;
&lt;br /&gt;
bizim_font = pygame.font.SysFont(&quot;arial&quot;, 30) #Fontu yarattık&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#### CLASSLAR ####&lt;br /&gt;
&lt;br /&gt;
class oyuncu():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, boyut, resim): #renk argümanını ve self.renk değişkenini sildik&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.skor = 0&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.can = 10&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.boyut = boyut&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.resim = pygame.image.load(resim)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((350, çözünürlük[1] - self.boyut[1]), self.boyut)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket_iptal(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class mermi():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global çözünürlük&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, oyuncu):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((oyuncu.kare.left + oyuncu.boyut[0] / 2, çözünürlük[1] - oyuncu.boyut[1]), (2,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class düşman():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pos_x = random.randint(0, çözünürlük[0] - 50)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((pos_x, -50), (50, 50))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#### FONKSİYONLAR ####&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def hareketler():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global oyuncu1, çözünürlük, mermi_listesi&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.sağa and oyuncu1.kare.right &amp;lt; çözünürlük[0]:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.kare.left += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.sola and oyuncu1.kare.left &amp;gt; 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.kare.left -= 1&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in mermi_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.kare.top -= 3&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.bottom &amp;lt; 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.remove(i)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in düşman_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.kare.bottom += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.top &amp;gt; çözünürlük[1]:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.remove(i)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.can -= 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def düşman_ekle():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global son_düşman_ekleme&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if pygame.time.get_ticks() - son_düşman_ekleme &amp;gt; 3000:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; son_düşman_ekleme = pygame.time.get_ticks()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.append(düşman())&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def çarpışma():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global oyuncu1, düşman_listesi, mermi_listesi&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in düşman_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for k in mermi_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.colliderect(k.kare):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.remove(i)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.remove(k)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.skor += 1 #skoru arttır&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.colliderect(oyuncu1.kare):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.remove(i)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.can -= 1&lt;br /&gt;
&lt;br /&gt;
oyuncu1 = oyuncu((50, 50), &quot;uzay_gemisi.gif&quot;) #resmi ekledik ve renk değişkenini kaldırdık&lt;br /&gt;
&lt;br /&gt;
#### LİSTELER ####&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mermi_listesi = []&lt;br /&gt;
düşman_listesi = []&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
while devam:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.can == 0: #Can sıfırlandığında oyun bitsin&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for event in pygame.event.get():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.QUIT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYDOWN:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket(&quot;sola&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket(&quot;sağa&quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_SPACE:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.append(mermi(oyuncu1))&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYUP:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket_iptal(&quot;sola&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket_iptal(&quot;sağa&quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; hareketler()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; düşman_ekle()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; çarpışma()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pencere.fill((0, 0, 0))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #pygame.draw.rect(pencere, oyuncu1.renk, oyuncu1.kare)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pencere.blit(oyuncu1.resim, oyuncu1.kare)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in mermi_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (255, 255, 255), i.kare)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in düşman_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (255, 255, 255), i.kare)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #skoru ve canı yazıya çevirme&lt;br /&gt;
&amp;nbsp; &amp;nbsp; can_yazı = bizim_font.render(str(oyuncu1.can), True, (0, 255, 0))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; skor_yazı = bizim_font.render(str(oyuncu1.skor), True, (255, 0, 0))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; # Yazı yazdırma:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pencere.blit(can_yazı, (5, 5))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pencere.blit(skor_yazı, (5, 35))&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pygame.display.update()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; time.sleep(0.0025)&lt;br /&gt;
&lt;br /&gt;
pygame.quit()&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Evet, bir dersin daha sonuna geldik arkadaşlar. Bir sonraki derste menü yapmanın pratik yollarını ve ses eklemeyi öğreteceğim. Kendinize çok iyi bakın.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/8486358625225010934/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2012/06/pygame-3.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/8486358625225010934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/8486358625225010934'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2012/06/pygame-3.html' title='Pygame (3)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-1881477926882832136</id><published>2012-03-06T05:14:00.003+02:00</published><updated>2012-03-11T00:42:07.806+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapma"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapmak"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapımına giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame ile oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="python 3"/><category scheme="http://www.blogger.com/atom/ns#" term="python ile oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="python3"/><title type='text'>Pygame (2)</title><content type='html'>Bu derse başlamadan önce söylemek istediğim bir şey var. Hevesinizi kaçırmak istemem ama ben de daha geçen gün öğrendim ki pygame mario gibi side - scroll oyunları yapmak için hiç uygun değilmiş. Sebebi de blit ve pygame.display.update() fonksiyonları. Arka planı blit ile çizdirip update ile güncellemek çok fazla zaman alıyor ve oyun çok fazla yavaşlıyor. Mario gibi oyunlarda da arka plan normalden çok daha büyük oluyor ve güncellemesi daha da uzun sürüyor. Bu yüzden bugünkü uçak oyununa bir arka plan koymayacağım. Siz isterseniz deneyin, ne kadar yavaşladığını görürsünüz.&lt;br /&gt;
&lt;br /&gt;
Kod yazmaya başlamadan önce dokümentasyon yapalım. Yazacağımız oyunda düşmanlar yukarıdan, rastgele bir yerden düz bir şekilde inecek. Yani bir düşman class&#39;ına ihtiyacımız var. Tabi ki bir oyuncu da olacak, oyuncu sağa sola hareket edip ateş edebilecek. O halde bir oyuncu ve mermi class&#39;ı yaratalım, ya da ikisini bir class&#39;ın içinde de yazabiliriz. while döngüsünün içinde objeleri çizdirmenin dışında üç şey yapacağız; her objenin hareketini hesaplama (yeni pozisyonunu hesaplama), objelerin çarpışması ve yeni düşman ekleme. Düşman bir mermiye çarptığı zaman hem mermi hem düşman silinecek, düşman oyuncuya çarptığı ya da ekranın altına geldiği zaman oyuncunun canı gidecek.&lt;br /&gt;
&lt;br /&gt;
Şimdilik bu kadar yeter. Kodumuza başlayabiliriz. (Not: kodu yazarken bazı yerlerde bir satıra sığmadığı için yeni bir satıra geçilmiş. Ona kafanızı takmayın. Kodu incelerseniz görürsünüz zaten. Bir de kopyalayıp yapıştırırsanız kod çalışacaktır)&lt;br /&gt;
&lt;br /&gt;
import pygame, time, random&lt;br /&gt;
&lt;br /&gt;
pygame.init()&lt;br /&gt;
&lt;br /&gt;
#### DEĞİŞKENLER ####&lt;br /&gt;
&lt;br /&gt;
çözünürlük = (800, 600)&lt;br /&gt;
devam = True&lt;br /&gt;
&lt;br /&gt;
pencere = pygame.display.set_mode(çözünürlük)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#### CLASSLAR ####&lt;br /&gt;
&lt;br /&gt;
class oyuncu():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, renk, boyut):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.can = 10&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.boyut = boyut&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((350, çözünürlük[1] - self.boyut[1]), self.boyut) #çözünürlük[1]&#39;in ne demek&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #olduğunu birazdan açıklarım.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.renk = renk&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket_iptal(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&lt;br /&gt;
#### FONKSİYONLAR ####&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def hareketler():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global oyuncu1, çözünürlük, mermi_listesi&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.sağa and oyuncu1.kare.right &amp;lt; çözünürlük[0]:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.kare.left += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.sola and oyuncu1.kare.left &amp;gt; 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.kare.left -= 1&lt;br /&gt;
&lt;br /&gt;
oyuncu1 = oyuncu((255, 0, 0), (50, 50))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
while devam:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for event in pygame.event.get():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.QUIT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYDOWN:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket(&quot;sola&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket(&quot;sağa&quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYUP:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket_iptal(&quot;sola&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket_iptal(&quot;sağa&quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; hareketler()&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pencere.fill((0, 0, 0))&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, oyuncu1.renk, oyuncu1.kare)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.display.update()&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; time.sleep(0.0025)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;pygame.quit()&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bu kodu yazdığınızda kırmızı renk, 50x50, oyuncu1 adında bir kare çizilecek ve kareyi sağa sola hareket ettirebileceğiz. Bu parametreleri değiştirmek isterseniz oyuncu1 = oyuncu((255, 0, 0), (50, 50)) yerine başka bir şeyler de yazabilirsiniz. Şimdi çözünürlük[1] ve boyut[1] derken ne demek istediğimi anlatayım. Hatırlarsanız listelerde her öğenin bir numarası vardı, listenin ilk elemanın numarası (ya da sırası) 0&#39;idi, ikincinin 1&#39;idi. her ne kadar (800, 600) bir liste olmasa da (tam olarak tupple oluyor bu. Türkçesi demeç, istihza.com&#39;dan bakmanızı öneririm) çok benzer bir yapıdır. çözünürlük[1] dediğimde çözünürlük&#39;ün ikinci elemanına, yani ekranımızın yüksekliğine ulaşmış oluyorum.&lt;br /&gt;
&lt;br /&gt;
Şimdi de ateş etmeyi ekleyelim. Bunun için mermi diye bir class yaratacağım, mermileri mermi_listesi diye bir listede tutacağım ve bu listedeki her elemanın pozisyonunu hareketler() fonksiyonunda hesaplayacağım son olarak da ekrana çizdireceğim.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import pygame, time, random&lt;br /&gt;
&lt;br /&gt;
pygame.init()&lt;br /&gt;
&lt;br /&gt;
#### DEĞİŞKENLER ####&lt;br /&gt;
&lt;br /&gt;
çözünürlük = (800, 600)&lt;br /&gt;
devam = True&lt;br /&gt;
&lt;br /&gt;
pencere = pygame.display.set_mode(çözünürlük)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#### CLASSLAR ####&lt;br /&gt;
&lt;br /&gt;
class oyuncu():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, renk, boyut):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.can = 10&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.boyut = boyut&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((350, çözünürlük[1] - self.boyut[1]), self.boyut)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.renk = renk&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket_iptal(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class mermi(): #mermi diye bir class oluşturduk&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global çözünürlük&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, oyuncu):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((oyuncu.kare.left + oyuncu.boyut[0] / 2, çözünürlük[1] - oyuncu.boyut[1]), (2,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#### FONKSİYONLAR ####&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def hareketler():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global oyuncu1, çözünürlük, mermi_listesi&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.sağa and oyuncu1.kare.right &amp;lt; çözünürlük[0]:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.kare.left += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.sola and oyuncu1.kare.left &amp;gt; 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.kare.left -= 1&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in mermi_listesi: #mermi listesi&#39;ndeki her elemanı üç piksel yukarıya alıyoruz&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.kare.top -= 3&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.bottom &amp;lt; 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.remove(i) #mermi ekran dışına çıkarsa siliyoruz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
oyuncu1 = oyuncu((255, 0, 0), (50, 50))&lt;br /&gt;
&lt;br /&gt;
#### LİSTELER ####&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mermi_listesi = [] #mermilerle daha kolay işlem yapabilmek için bir liste oluşturuyoruz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
while devam:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for event in pygame.event.get():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.QUIT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYDOWN:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket(&quot;sola&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket(&quot;sağa&quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_SPACE: #space&#39;e basınca bir mermi objesi yaratıyoruz&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.append(mermi(oyuncu1)) #ve mermi_listesi&#39;ne eklyoruz&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYUP:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket_iptal(&quot;sola&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket_iptal(&quot;sağa&quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; hareketler()&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pencere.fill((0, 0, 0))&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, oyuncu1.renk, oyuncu1.kare)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in mermi_listesi: #mermi_listesi&#39;ndeki her elemanı çizidiyoruz&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (255, 255, 255), i.kare)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.display.update()&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; time.sleep(0.0025)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;pygame.quit()&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
Burada açıklanacak bir şey yok.&lt;/div&gt;&lt;br /&gt;
Şimdi de aynı şekilde düşman ekleyelim. Tek fark düşmanın her 3 saniyede bir kendiliğinden oluşacak olması. Bunun için pygame.time.get_ticks() fonksiyonundan faydalanacağız. Bu fonksiyon oyun başladığından beri kaç milisaniye geçmiş onu söyleyecek.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import pygame, time, random&lt;br /&gt;
&lt;br /&gt;
pygame.init()&lt;br /&gt;
&lt;br /&gt;
#### DEĞİŞKENLER ####&lt;br /&gt;
&lt;br /&gt;
çözünürlük = (800, 600)&lt;br /&gt;
devam = True&lt;br /&gt;
son_düşman_ekleme = pygame.time.get_ticks() #Bununla son düşmanı en son ne zaman eklendiğine&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#bakacağız&lt;br /&gt;
&lt;br /&gt;
pencere = pygame.display.set_mode(çözünürlük)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#### CLASSLAR ####&lt;br /&gt;
&lt;br /&gt;
class oyuncu():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, renk, boyut):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.can = 10&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.boyut = boyut&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((350, çözünürlük[1] - self.boyut[1]), self.boyut)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.renk = renk&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket_iptal(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class mermi():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global çözünürlük&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, oyuncu):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((oyuncu.kare.left + oyuncu.boyut[0] / 2, çözünürlük[1] - oyuncu.boyut[1]), (2,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class düşman(): #düşman class&#39;ı&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pos_x = random.randint(0, çözünürlük[0] - 50) #x pozisyonu rastgele belirlenecek&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((pos_x, -50), (50, 50))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#### FONKSİYONLAR ####&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def hareketler():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global oyuncu1, çözünürlük, mermi_listesi&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.sağa and oyuncu1.kare.right &amp;lt; çözünürlük[0]:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.kare.left += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.sola and oyuncu1.kare.left &amp;gt; 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.kare.left -= 1&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in mermi_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.kare.top -= 3&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.bottom &amp;lt; 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.remove(i)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in düşman_listesi: #düşman_listesi&#39;ndeki her öğenin hareketini hesaplıyoruz&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.kare.bottom += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.top &amp;gt; çözünürlük[1]:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.remove(i) #düşman_listesi&#39;ndeki bir öğe ekran dışına çıkarsa siliyoruz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def düşman_ekle(): #düşman ekleme fonksiyonu&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global son_düşman_ekleme&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if pygame.time.get_ticks() - son_düşman_ekleme &amp;gt; 3000: #düşman üç saniyede bir gelsin diyoruz&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; son_düşman_ekleme = pygame.time.get_ticks()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.append(düşman())&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
oyuncu1 = oyuncu((255, 0, 0), (50, 50))&lt;br /&gt;
&lt;br /&gt;
#### LİSTELER ####&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mermi_listesi = []&lt;br /&gt;
düşman_listesi = [] #düşmanları daha kolay kontrol edebilmek için liste oluşturduk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
while devam:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for event in pygame.event.get():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.QUIT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYDOWN:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket(&quot;sola&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket(&quot;sağa&quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_SPACE: #space&#39;e basınca bir mermi objesi yaratıyoruz&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.append(mermi(oyuncu1))&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYUP:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket_iptal(&quot;sola&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket_iptal(&quot;sağa&quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; hareketler()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; düşman_ekle() #düşman eklenmesinin gerekli olup olmadığını kontrol ediyoruz&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pencere.fill((0, 0, 0))&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, oyuncu1.renk, oyuncu1.kare)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in mermi_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (255, 255, 255), i.kare)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in düşman_listesi: #düşman_listesi&#39;ndeki her bir objeyi ekrana çizdiriyoruz.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (255, 255, 255), i.kare)&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.display.update()&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; time.sleep(0.0025)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;pygame.quit()&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;Burada da yeni bir şey yok. Şimdi objelerin çarpışıp çarpışmadığına bakacağız. Bunun için çarpışmalar() diye bir fonksiyon yazacağız.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import pygame, time, random&lt;br /&gt;
&lt;br /&gt;
pygame.init()&lt;br /&gt;
&lt;br /&gt;
#### DEĞİŞKENLER ####&lt;br /&gt;
&lt;br /&gt;
çözünürlük = (800, 600)&lt;br /&gt;
devam = True&lt;br /&gt;
son_düşman_ekleme = pygame.time.get_ticks()&lt;br /&gt;
&lt;br /&gt;
pencere = pygame.display.set_mode(çözünürlük)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#### CLASSLAR ####&lt;br /&gt;
&lt;br /&gt;
class oyuncu():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, renk, boyut):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.can = 10&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.boyut = boyut&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((350, çözünürlük[1] - self.boyut[1]), self.boyut)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.renk = renk&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hareket_iptal(self, yön):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yön == &quot;sağa&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sağa = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif yön == &quot;sola&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.sola = False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class mermi():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global çözünürlük&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, oyuncu):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((oyuncu.kare.left + oyuncu.boyut[0] / 2, çözünürlük[1] - oyuncu.boyut[1]), (2,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class düşman():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pos_x = random.randint(0, çözünürlük[0] - 50)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.kare = pygame.Rect((pos_x, -50), (50, 50))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#### FONKSİYONLAR ####&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def hareketler():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global oyuncu1, çözünürlük, mermi_listesi&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.sağa and oyuncu1.kare.right &amp;lt; çözünürlük[0]:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.kare.left += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.sola and oyuncu1.kare.left &amp;gt; 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.kare.left -= 1&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in mermi_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.kare.top -= 3&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.bottom &amp;lt; 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.remove(i)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in düşman_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.kare.bottom += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.top &amp;gt; çözünürlük[1]:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.remove(i)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.can -= 1 #düşman ekran dışına çıkarsa oyuncunun bir canı gider&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(oyuncu1.can)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def düşman_ekle():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global son_düşman_ekleme&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if pygame.time.get_ticks() - son_düşman_ekleme &amp;gt; 3000:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; son_düşman_ekleme = pygame.time.get_ticks()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.append(düşman())&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def çarpışma(): #çarpışma fonksiyonunu yazdık&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global oyuncu1, düşman_listesi, mermi_listesi&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in düşman_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for k in mermi_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.colliderect(k.kare):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.remove(i)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.remove(k)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i.kare.colliderect(oyuncu1.kare):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; düşman_listesi.remove(i)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.can -= 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(oyuncu1.can)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
oyuncu1 = oyuncu((255, 0, 0), (50, 50))&lt;br /&gt;
&lt;br /&gt;
#### LİSTELER ####&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mermi_listesi = []&lt;br /&gt;
düşman_listesi = [] #düşmanları daha kolay kontrol edebilmek için liste oluşturduk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
while devam:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for event in pygame.event.get():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.QUIT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYDOWN:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket(&quot;sola&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket(&quot;sağa&quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_SPACE:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mermi_listesi.append(mermi(oyuncu1))&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYUP:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket_iptal(&quot;sola&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hareket_iptal(&quot;sağa&quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; hareketler()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; düşman_ekle()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; çarpışma() #çarpışma fonksiyonunu çağırıyoruz&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pencere.fill((0, 0, 0))&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, oyuncu1.renk, oyuncu1.kare)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in mermi_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (255, 255, 255), i.kare)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for i in düşman_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (255, 255, 255), i.kare)&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.display.update()&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; time.sleep(0.0025)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;pygame.quit()&lt;br /&gt;
&lt;br /&gt;
Son olarak da çarpışma() fonksiyonunu ekledik. Biraz incelerseniz nasıl çalıştığını anlarsınız.&lt;br /&gt;
&lt;br /&gt;
Pygame&#39;in temeli yaklaşık olarak bu kadar. Bir sonraki derste oyunu biraz daha geliştirip resim, ses falan ekleriz.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/1881477926882832136/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2012/03/pygame-2.html#comment-form' title='3 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/1881477926882832136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/1881477926882832136'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2012/03/pygame-2.html' title='Pygame (2)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-3774472271840442936</id><published>2012-02-20T03:26:00.001+02:00</published><updated>2012-02-29T15:35:05.618+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapma"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapmak"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapımına giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame ile oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame.display.update()"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame.draw"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame.Rect()"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="python 3"/><category scheme="http://www.blogger.com/atom/ns#" term="python ile oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="python3"/><title type='text'>Pygame (1)</title><content type='html'>Bir önceki derste de söylediğim gibi bu derste görsel bir şeyler yapmaya başlayacağız. Bunun için pygame kütüphanesini kullanacağız.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Nedir bu Pygame?&lt;/u&gt;&lt;br /&gt;
Pygame bir grafik kütüphanesidir. Sakın bunu grafik motoru ile karıştırmayın, aynı şey değil. Pygame de Python gibi ücretsiz, açık kaynak kodlu bir yazılımdır. Temelde yaptığı şey kare, çizgi, yuvarlak gibi basit şekilleri çizmek. Sakın bunu azımsamayın! Pek çoğunuzun ismini sık sık duyduğu Metin 2 adlı mmorpg&#39;nin grafikleri pygame ile yapıldı. Gerçi pygame ile üç boyutlu bir oyun yapmak &amp;nbsp;biraz abartıya kaçıyor ama siz de hemen hemen her türlü iki boyutlu oyunu rahatlıkla yapabilirsiniz. Daha fazla örnek isterseniz &lt;a href=&quot;http://www.pygame.org/&quot;&gt;www.pygame.org&lt;/a&gt; sitesini inceleyebilirsiniz.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Kurulum&lt;/u&gt;&lt;br /&gt;
Sitede &lt;a href=&quot;http://www.pygame.org/download.shtml&quot; target=&quot;_blank&quot;&gt;downloads&lt;/a&gt;&#39;a tıklarsanız bir çok pygame sürümü olduğunu göreceksiniz. Siz Python versiyonunuza uygun olanını indirin. Yalnız dikkat edin, 64 bit pygame sürümleri sadece Python 2.7 için mevcut. Eğer bilgisayarınızda Python 3.xx 64 bit kurulu ise onu kaldırıp 32 bit yüklemeniz gerekecek. Doğru sürümü indirdikten sonra kurulum sırasında Python&#39;un kurulu olduğu dosyayı göstermeniz lazım. Genelde otomatik olarak tespit ediliyor ama, onun için çok fazla uğraşmanıza gerek yok.&lt;br /&gt;
&lt;br /&gt;
Her şeyi kurduysanız IDLE&#39;ı açın ve import pygame yazıp enter&#39;a basın. Eğer Python herhangi bir şey yazmazsa her şeyi doğru yapmışsınızdır. Yok eğer bir hata verirse demek ki bir yerde yanlışlık var.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;İlk Adımlar&lt;/u&gt;&lt;br /&gt;
Buraya kadar geldiyseniz başlamaya hazırsınızdır. O halde hemen 800x600 bir ekran yapalım:&lt;br /&gt;
&lt;br /&gt;
import pygame&lt;br /&gt;
pygame.init()&lt;br /&gt;
pencere = pygame.display.set_mode((800, 600))&lt;br /&gt;
pygame.display.update()&lt;br /&gt;
&lt;br /&gt;
Bunları yazarsanız karşınıza siyah bir pencere çıkacak. Burada şunu yaptık: önce pygame modülünü çağırdık, sonra pygame.init() fonksiyonu ile her şeyi varsayılan değerlere ayarladık (bu fonksiyonun tam olarak ne yaptığını bilmiyorum ama mutlaka yazılması lazım). Sonra penceremizi tanımladık. Onu da önce pygame modülünden display adlı bir modülün set_mode() diye bir fonksiyonunu çağırarak. Adından da anlaşıldığı gibi bu fonksiyon ekran ayarını yapıyor. Dikkat ettiyseniz orada çift parantez kullandım. Sebebi basit, set_mode() fonksiyonu birden çok değer alıyor (çözünürlük, derinlik, pencere kenarlarının olup olmaması gibi şeyler, ayrıntılı bilgi için &lt;a href=&quot;http://www.pygame.org/docs/ref/display.html#pygame.display.set_mode&quot; target=&quot;_blank&quot;&gt;buraya&lt;/a&gt; bakabilirsiniz), geriye kalanlar yazılmadığı zaman pygame onları varsayılan olarak ayarlıyor. Eğer başka özellikleri ayarlamak isteseydik pygame.display.set_mode((800, 600), pygame.FULLSCREEN) gibi bir şeyler yazacaktık. Son olarak da update() fonksiyonu var. Aslında update() fonksiyonu argüman olarak kare ya da kareler listesi alır ve her çağrıldığında sadece o kareleri yeniler (örnek: pygame.display.update(kare1, kare2, kare3), ama eğer herhangi bir argüman vermezsek sahnedeki bütün objeleri yeniler. Bu aşamada herhangi bir argüman vermemize gerek yok.&lt;br /&gt;
&lt;br /&gt;
Bu programı çalıştırdığınızda bir sorun fark etmiş olabilirsiniz, sanki çıkan pencere donup da hata veriyormuş gibi. Aslında ortada bir hata yok, sadece pygame&#39;e ekranı çizdikten sonra ne yapması gerektiğini söylemedik, o kadar. En sona pygame.quit() yazarsanız sorun kalmayacaktır. Pencere bir anda çıkıp kapanacak. Bunu engellemek için şimdilik daha önce yaptığımız gibi input() fonksiyonunu kullanabilirsiniz.&lt;br /&gt;
&lt;br /&gt;
Şimdi penceremize biraz renk ekleyelim. Herhangi bir yüzeyi, renk ile doldurmak için yüzey_adı.fill((renk_kodu)) fonksiyonunu kullanacağız. Hemen bir örnek yapalım:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import pygame&lt;br /&gt;
pygame.init()&lt;br /&gt;
pencere = pygame.display.set_mode((800, 600))&lt;br /&gt;
pencere.fill((255, 255, 255))&lt;br /&gt;
pygame.display.update()&lt;br /&gt;
pygame.quit()&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Gördüğünüz gibi penceremizin arka planı artık beyaz. Renk kodu olarak yazdığımız sayılar size bir şey ifade etmiyorsa hemen açıklayayım. RGB kısaltmasını hepiniz duymuşsunuzdur, Red Green Blue&#39;dan gelir. İşte yazdığımız ilk sayı kırmızıya, ikinci sayı yeşile, üçüncüsü de maviye denk gelir. 0 - 255 arasında istediğiniz bir sayı yazabilirsiniz, sayı büyüdükçe renk miktarı da artar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Şimdi de ekrana bir kare çizdirelim.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;import pygame&lt;/div&gt;&lt;div&gt;pygame.init()&lt;/div&gt;&lt;div&gt;pencere = pygame.display.set_mode((800, 600))&lt;/div&gt;&lt;div&gt;kare = pygame.Rect((50, 50), (100, 100))&lt;/div&gt;&lt;div&gt;pencere.fill((255, 255, 255))&lt;/div&gt;&lt;div&gt;pygame.draw.rect(pencere, (0, 255, 0), kare)&lt;/div&gt;&lt;div&gt;pygame.display.update()&lt;/div&gt;&lt;div&gt;pygame.quit()&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Önce pygame.Rect((sol_üst_köşenin_koodrinatları), (karenin_boyutları)) fonksiyonu ile bir kare tanımladık. Burada dikkat etmeniz gereken şey koordinat sisteminin sol üst köşeden başlaması. Yani (0, 0) noktası sol üst köşe, y koordinatı aşağıya gittikçe artar, x koordinatı ise sola gittikçe artar. pencere.fill()&#39;dan sonra da pygame.draw.rect(yüzey, (karenin_rengi), karenin_kendisi) fonksiyonu ile de kareyi pencere adlı yüzeye çizdirdik. pygame.draw.rect()&#39;in pencere.fill()&#39;dan sonra olması öncemli, yoksa ekrana önce kare çizilirdi, sonra da bütün ekran beyaza boyanırdı ve biz kareyi görmezdik.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Şimdi gelelim asıl önemli konuya, kareyi nasıl hareket ettireceğiz? Bunun için bir döngü yaratmalıyız ki python kareyi sadece bir kere çizdirip programı sonlandırmasın. Demek ki bir adet while döngüsüne ihtiyacımız var.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;import pygame, time&lt;/div&gt;&lt;div&gt;pygame.init()&lt;/div&gt;&lt;div&gt;pencere = pygame.display.set_mode((800, 600))&lt;/div&gt;&lt;div&gt;kare = pygame.Rect((50, 50), (100, 100))&lt;/div&gt;&lt;div&gt;devam = 1&lt;/div&gt;&lt;div&gt;while devam == 1:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pencere.fill((255, 255, 255))&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; kare.right += 1&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (0, 255, 0), kare)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.display.update()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; time.sleep(0.025)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Kareyi hareket ettirmek için karenin sağ kenarının koordinatını her döngüde bir piksel arttırdım. Bunu gördüğünüz gibi kare.right ile yaptım. Aynı şekilde kare.left&#39;i de kullanabilirdim. Ya da aşağı - yukarı hareket ettirmek için kare.top ya da kare.bottom&#39;ı da kullanabilirdim. Fark ettiyseniz bir de time modülünü import edip time.sleep() fonksiyonunu kullandım. Bunu yapmamdaki amaç her döngü sonunda bilgisayarın 0.025 saniye duraklaması. Yoksa bilgisayar hem programı çalıştırabildiği kadar hızlı çalıştırır ve muhtemelen biz kareyi görene kadar pencere dışına çıkar hem de her bilgisayarda program işlemciye bağlı olarak farklı hızlarda çalışır. Yetmiyormuş gibi işlemci de gücünün 100%&#39;ünü sadece bunun için harcar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Kare hareket ediyor, güzel ama şimdi de yeni bir sorun daha çıktı ortaya: pencere düzgün kapanmıyor. Hemen çaresine bakalım...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;import pygame, time, sys&lt;/div&gt;&lt;div&gt;pygame.init()&lt;/div&gt;&lt;div&gt;pencere = pygame.display.set_mode((800, 600))&lt;/div&gt;&lt;div&gt;kare = pygame.Rect((50, 50), (100, 100))&lt;/div&gt;&lt;div&gt;devam = 1&lt;/div&gt;&lt;div&gt;while devam == 1:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; for event in pygame.event.get():&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.QUIT:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.quit()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sys.exit()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pencere.fill((255, 255, 255))&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; kare.right += 5&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (0, 255, 0), kare)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.display.update()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; time.sleep(0.025)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Önce sys diye bir modül import ettim, döngüye girdikten sonra da&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; for event in pygame.event.get():&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.QUIT:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.quit()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sys.exit()&lt;/div&gt;&lt;/div&gt;&lt;div&gt;diye bir şey ekledim. Artık çarpıya bastığınızda pencere sorunsuz bir şekilde kapanacaktır. IDLE şöyle bir şey diyebilir:&lt;/div&gt;&lt;div&gt;&lt;div&gt;Traceback (most recent call last):&lt;/div&gt;&lt;div&gt;&amp;nbsp; File &quot;C:/Users/GameOver/Desktop/pencere.py&quot;, line 15, in &amp;lt;module&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; sys.exit()&lt;/div&gt;&lt;div&gt;SystemExit&lt;/div&gt;&lt;/div&gt;&lt;div&gt;aldırmayın, hata falan yok. Şimdilik de bu yazdıklarımı boş verin, ileride ne olduğunu zaten anlayacaksınız.&lt;br /&gt;
&lt;br /&gt;
Biraz beklerseniz karenin ekranın dışına çıktığını fark edeceksiniz. Bunu hemen önleyelim. Kare ekranın sınırına geldiğinde öteki tarafa gitsin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import pygame, time, sys&lt;br /&gt;
pygame.init()&lt;br /&gt;
pencere = pygame.display.set_mode((800, 600))&lt;br /&gt;
kare = pygame.Rect((50, 50), (100, 100))&lt;br /&gt;
devam = 1&lt;br /&gt;
sola_git = True&lt;br /&gt;
while devam == 1:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for event in pygame.event.get():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.QUIT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.quit()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sys.exit()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pencere.fill((255, 255, 255))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if kare.right &amp;gt;= 800:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sola_git = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if kare.left &amp;lt;= 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sola_git = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if sola_git:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.left-= 5&lt;br /&gt;
&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.right += 5&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (0, 255, 0), kare)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pygame.display.update()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; time.sleep(0.025)&lt;br /&gt;
&lt;br /&gt;
Şimdi sola_git diye bir değişken tanımladım ve değerini True yaptım. while döngüsünün içine ise birkaç şart ekledim.&lt;br /&gt;
&lt;br /&gt;
if kare.right &amp;gt;= 800:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; sola_git = True&lt;br /&gt;
&lt;br /&gt;
Bunnu anlamı eğer karenin sağ tarafı ekranın genişliğini (yani x = 800&#39;ü geçerse) geçerse sola_git değişkenini True yap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if kare.left &amp;lt;= 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; sola_git = False&lt;br /&gt;
&lt;br /&gt;
Bunun anlamı da eğer karenin solu ekranın soluna gelirse (yani x = 0&#39;ı geçerse) sola_git değişkeni False. Bundan sonraki if ve elif şartları da sola_git değişkeninin True ya da False olmasına göre karenin x koordinatını 5 arttırır ya da 5 azaltır.&lt;br /&gt;
&lt;br /&gt;
Gelelim bu dersin asıl önemli konusuna; kontroller. Hemen kodu yazayım, sonra gerekli açıklamaları yaparım.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import pygame, time, sys&lt;br /&gt;
pygame.init()&lt;br /&gt;
pencere = pygame.display.set_mode((800, 600))&lt;br /&gt;
kare = pygame.Rect((50, 50), (100, 100))&lt;br /&gt;
devam = 1&lt;br /&gt;
while devam == 1:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for event in pygame.event.get():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.QUIT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.quit()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sys.exit()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYDOWN:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.left -= 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.right += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_UP:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.top -= 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_DOWN:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.bottom += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; pencere.fill((255, 255, 255))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (0, 255, 0), kare)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; pygame.display.update()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; time.sleep(0.025)&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Burada az önceki koda yazdığım sola_git değişkenini ve ona bağlı olan her şeyi sildim, şimdilik ona ihtiyacımız yok. Onun yerine while döngüsünün başındaki for döngüsüne ekleme yaptım. Gördüğünüz gibi çıkış fonksiyonundan hemen sonra if event.type == pygame.KEYDOWN diye bir şey ekledim. Bu &quot;eğer klavyeden bir tuş basılırsa&quot; anlamına gelir. Daha sonra da if event.key == pygame.K_LEFT yazdım, bunun anlamı da &quot;eğer basılan tuş sol olursa&quot;dır. Aynı şeyi sağ, yukarı ve aşağı için yaptım. Klavyedeki bütün tuşlardan bu şekilde girdi alabilirsiniz. Bütün tuşların karşılıklarını &lt;a href=&quot;http://www.pygame.org/docs/ref/key.html&quot; target=&quot;_blank&quot;&gt;buradan&lt;/a&gt; bulabilirsiniz.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Tabi yazdığımız bu oyunda karemiz çok yavaş hareket ediyor ve her hareketi için tuşu bırakıp tekrar basmamız gerekiyor. Basılı tutunca hareket etmesini sağlamanın birkaç yolu var. En basiti while döngüsünden önce&amp;nbsp;pygame.key.set_repeat(zaman_aralığı, basılma_sayısı) satırını eklemek. Zaman aralığı dediğim mili saniye &amp;nbsp;cinsinden geçecek zaman, basılma_sayısı ise o zaman içinde tuşun kaç kere basıldığıdır. Böyle anlatınca anlaşılması biraz zor oluyor ama o satırı kodunuza ekleyip sayılarla biraz oynarsanız hemen anlarsınız. Kısaca karenin basar basmaz durmandan harekete başlaması için&amp;nbsp;pygame.key.set_repeat(1, 1) gibi bir şey yazmanız yeterli olacaktır.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Son olarak da çok önemli bir konu olan çarpışmaya değinmek istiyorum. Başlangıç aşamasında sadece kareleri kullanacağımız için karelerin çarpışmasını anlatacağım sizlere. Pygame&#39;in bunun için çok güzel bir fonksiyonu var: kare1.colliderect(kare2) . Eğer kare1 kare2&#39;ye çarpıyorsa bu fonksiyon True değerini verecektir. Yok eğer çarpmıyorsa False değerini verir. Hemen bir örnek yapalım.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;import pygame, time, sys&lt;/div&gt;&lt;div&gt;pygame.init()&lt;/div&gt;&lt;div&gt;pencere = pygame.display.set_mode((800, 600))&lt;/div&gt;&lt;div&gt;kare = pygame.Rect((50, 50), (100, 100))&lt;/div&gt;&lt;div&gt;kare2 = pygame.Rect((300, 50), (100, 100))&lt;/div&gt;&lt;div&gt;devam = 1&lt;/div&gt;&lt;div&gt;pygame.key.set_repeat(1, 1)&lt;/div&gt;&lt;div&gt;while devam == 1:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; for event in pygame.event.get():&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.QUIT:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pygame.quit()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sys.exit()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.type == pygame.KEYDOWN:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_LEFT:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.left -= 1&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_RIGHT:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.right += 1&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_UP:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.top -= 1&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if event.key == pygame.K_DOWN:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.bottom += 1&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; if kare.colliderect(kare2):&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if kare.right &amp;lt; kare2.left + 2 :&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.right = kare2.left&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif kare.left &amp;gt; kare2.right - 2:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.left = kare2.right&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if kare.top &amp;gt; kare2.bottom - 2:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.top = kare2.bottom&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; elif kare.bottom &amp;lt; kare2.top + 2:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kare.bottom = kare2.top&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pencere.fill((255, 255, 255))&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (0, 255, 0), kare)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.draw.rect(pencere, (255, 0, 0), kare2)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pygame.display.update()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; time.sleep(0.025)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Bu örnekte sadece if kare.colliderect(kare2) şartından sonrasını ekledim. Sanırım çok fazla açıklamaya gerek yok. Eğer kafanız karışırsa bir kağıda orijini sol üst köşe olan bir koordinat sistemi çizin ve yazdığım şartları hayal edin.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Bu ders için bu kadarı yeter sanırım. Sonraki derste basit bir uçak oyunu yapacağız, daha da sonra çeşitli grafikler, resimler, sesler ekleyeceğiz. Kendinize çok iyi bakın.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/3774472271840442936/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2012/02/pygame-1.html#comment-form' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/3774472271840442936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/3774472271840442936'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2012/02/pygame-1.html' title='Pygame (1)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-4683564083479713150</id><published>2012-02-18T04:28:00.000+02:00</published><updated>2012-02-19T02:00:50.081+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="class"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapma"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapmak"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapımına giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="python 3"/><category scheme="http://www.blogger.com/atom/ns#" term="python class"/><category scheme="http://www.blogger.com/atom/ns#" term="python ile oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="python3"/><category scheme="http://www.blogger.com/atom/ns#" term="pythona giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="pythonda ilk adımlar"/><category scheme="http://www.blogger.com/atom/ns#" term="while"/><title type='text'>Python&#39;a devam (4)</title><content type='html'>Herkese merhaba! Biraz uzun bir aradan sonra yeni bir ders yazmaya karar verdim! Hepinizin de gördüğü gibi sonunda çalışan bir oyun yazabildim. Tabi bu oyunu yazarken bir çok şey öğrendim, gaza geldim ve sizlere anlatmaya karar verdim.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;Her şeyden önce koyun sayma uygulaması gibi bir şey yapmayacaksanız dokumentasyon şart! Yani tam olarak oyununuzun içeriği ne olacak, nasıl çalışacak, nerede nasıl bir fonksiyon kullanacaksınız gibi aklınıza gelen her şeyi bir kağıda yazacaksınız (Word belgesine de yazabilirsiniz tabi :P). Bunu yapmazsanız eninde sonunda her şey birbirine girecektir. Stairway to Earth&#39;ü bile bu durumdayken geliştirmek çok zor, çünkü kod çok karıştı ve yazarken ileride şöyle bir şey eklemek istersem nasıl eklerim diye düşünmediğimden herhangi bir şeyi eklemek için çok uğraşmak gerekiyor.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;İkinci öğrendiğim şey ise kullandığınız dil nesne tabanlı programlamaya (object oriented programming) müsaitse (Python gibi) bundan mutlaka faydalanın! Python bu amaç için class (sınıf) diye bir yapı kullanıyor. İşte bu derste de class&#39;lardan bahsedeceğim.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Önce bir class yaratalım:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;class oyuncu():&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; tanım = &quot;Bu bir oyuncu&quot;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ek_bigi = &quot;Oyuncu bir oyunu oynayan kişidir.&quot;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Burada yaptığımız şey oyuncu adında bir sınıf yaratmak oldu. Daha önce öğrendiğimiz def&#39;ten çok farklı değil. Şimdi bu sınıfa ait bir obje yaratalım:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;oyuncu1 = oyuncu()&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Şimdi oyuncu1&#39;i çağırdığımız zaman Python bize&amp;nbsp;&amp;lt;__main__.oyuncu object at 0x02B31650&amp;gt; gibi bir çıktı verecek. Tabi bu aşamada biz bunun ne anlama geldiğini ve bununla ne yapabileceğimizi bilmiyoruz. Boşverin, zaten ben de henüz bilmiyorum, bize asıl lazım olacak şey kendi yazdıklarımız. Her birisine ulaşmak için şöyle bir yol izlemelisiniz: obje_adı.ulaşmak_istediğiniz değer. Yani oyuncu1.tanım yazarsanız &quot;Bu bir oyuncu&quot; çıktısını alırsınız. Aynı şekilde ek_bilgi&#39;ye de ulaşabilirsiniz. Tabi class&#39;ı sadece bir oyuncuyu tanımlamak için kullanmadık. O halde hemen bir oyuncu daha ekleyelim:&lt;br /&gt;
&lt;br /&gt;
oyuncu2 = oyuncu()&lt;br /&gt;
&lt;br /&gt;
Artık iki oyuncumuz var. Ama tahmin edebileceğiniz gibi ikisi de aynı özellikleri taşıyor. İstersek her zaman bu iki değişkeni değiştirebiliriz, mesela oyuncu1.ek_bilgi = &quot;Büyücü&quot; dersek oyuncu1&#39;in ek_bilgi&#39;si artık &quot;Oyuncu bir oyunu oynayan kişidir.&quot; yerine &quot;Büyücü&quot; olacak. Peki bunun daha kolay bir yolu yok mu? Bir obje yarattığımız zaman o objenin diğerlerinden farklı olmalarını nasıl sağlarız? Cevabı çok basit:&lt;br /&gt;
class oyuncu():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; tanım= &quot;Bu bir oyuncu&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ek_bilgi =&amp;nbsp;&quot;Oyuncu bir oyunu oynayan kişidir.&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, oyuncu_adı):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.adı = oyuuncu_adı&lt;br /&gt;
&lt;br /&gt;
oyuncu1 = oyuncu(&quot;Anton&quot;)&lt;br /&gt;
oyuncu2 = oyuncu(&quot;Damla&quot;)&lt;br /&gt;
&lt;br /&gt;
Şimdi oyuncu1.adı yazdığınız zaman &quot;Anton&quot;, oyuncu2.adı yazdığınız zaman ise &quot;Damla&quot; çıktısını alırsınız. Peki __init__() de neymiş? self&#39;i neden kullandık?&lt;br /&gt;
&lt;br /&gt;
__init__() aynı append gibi bir fonksiyon (aslında bunlar gibi özel fonksiyonlara metot deniyor, önceden söyleseydim daha iyi olurdu tabi). Bu metot class&#39;ın değer alabileceğini söylüyor. İlk yazdığım self ise o değişkenin sadece bir objeye ait olduğunu anlatıyor (self zorunlu bir şey değil bu arada, onun yerine ali de yazabilirsiniz ama genelde self yazılır). tanım ve ek_bilgi&#39;nin başında self olmadığı için bu ikisi oyuncu() sınıfını kullanarak yarattığımız her obje için ortak olacaklardır. Yani oyuncu1.tanım ve oyuncu2.tanım aynı şeyi ifade ederken (tabi sonradan değiştirmediyseniz) oyuncu1.adı ile oyuncu2.adı farklı şeyleri ifade edecek.&lt;br /&gt;
&lt;br /&gt;
Az önce fark ettiğiniz gibi def&#39;i kullandım. Bu demek oluyor ki class&#39;ların içine istediğimiz fonksiyonları tanımlayabiliyoruz. O halde oyuncu()&#39;ya yeni bir şeyler ekleyelim&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class oyuncu():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; tanım= &quot;Bu bir oyuncu&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ek_bilgi =&amp;nbsp;&quot;Oyuncu bir oyunu oynayan kişidir.&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def __init__(self, oyuncu_adı, can):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.adı = oyuncu_adı&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.can = can&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def hasar_aldı(hasar):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.can -= hasar&lt;br /&gt;
&amp;nbsp; &amp;nbsp; def can_aldı(can_miktarı):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.can += can_miktarı&lt;br /&gt;
&lt;br /&gt;
oyuncu1 = oyuncu(&quot;Bulrog&quot;, 100)&lt;br /&gt;
oyuncu2 = oyuncu(&quot;zaLim_BÜyÜcü_24&quot;, 10)&lt;br /&gt;
&lt;br /&gt;
devam = 1&lt;br /&gt;
&lt;br /&gt;
while devam:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; girdi = input(&quot;Kim vurdu? &quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if girdi.lower() == &quot;bulrog&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu2.hasar_aldı(1)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; elif girdi.lower() == &quot;zalim_büyücü_24&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oyuncu1.hasar_aldı(150)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Öyle bir oyuncu yok.&quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if oyuncu1.can &amp;lt;= 2 or oyuncu2.can &amp;lt;= 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = 0&lt;br /&gt;
&lt;br /&gt;
Bu şekilde iki oyuncuyu kolaylıkla yönetebiliriz. Belki sadece iki obje varsa buna gerek duymayabilirsiniz ama iki değil de on oyuncu olduğunu düşünün, o zaman hepsi için canlarını, adlarını ve diğer özelliklerini tanımlamak çok uzun sürecektir. Bunun gibi bir çok durumda class&#39;lar hayatınızı kolaylaştıracak.&lt;br /&gt;
&lt;br /&gt;
Evet, artık görsel bir şeyler yapmak için hazırsınız! Bir sonraki derste pygame&#39;den bahsedeceğim, birkaç ders sonra da basit bir uçak ya da araba yarışı oyunu yapacağız. Şimdilik sağlıklı kalın, bu kış aylarında kendinize çok dikkat edin.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/4683564083479713150/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2012/02/pythona-devam-4.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/4683564083479713150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/4683564083479713150'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2012/02/pythona-devam-4.html' title='Python&#39;a devam (4)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-5845522189082070895</id><published>2012-01-29T17:36:00.001+02:00</published><updated>2012-10-28T22:12:29.139+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="anton semchenko"/><category scheme="http://www.blogger.com/atom/ns#" term="damla tıltak"/><category scheme="http://www.blogger.com/atom/ns#" term="goyun"/><category scheme="http://www.blogger.com/atom/ns#" term="koyun sayma"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="python3"/><title type='text'>Goyun sayma uygulaması</title><content type='html'>Uyuyamadığım bir gün yazmaya başladığım basit bir uygulama. Üşengeçliğimden anca bitirebildim. Siz de uyuyamıyorsanız gelin goyunları birlikte sayalım. Saymaya üşeniyorsanız da merak etmeyin, bu uygulama sizin için sayar.&lt;br /&gt;
&lt;u&gt;Türkçe:&lt;/u&gt;&lt;br /&gt;
Kaynak kodları &lt;a href=&quot;http://ifile.it/x95yhgk&quot; target=&quot;_blank&quot;&gt;burada&lt;/a&gt;.&lt;br /&gt;
Windows uygulaması &lt;a href=&quot;http://ifile.it/a6itkhr&quot; target=&quot;_blank&quot;&gt;burada&lt;/a&gt;.&lt;br /&gt;
&lt;u&gt;İngilizce:&lt;/u&gt;&lt;br /&gt;
Kaynak kodları &lt;a href=&quot;https://www.dropbox.com/s/kj57szevt23a6zt/Stairway%20to%20Earth%200.5.rar&quot; target=&quot;_blank&quot;&gt;burada&lt;/a&gt;.&lt;br /&gt;
Windows uygulaması &lt;a href=&quot;https://www.dropbox.com/s/a7xetxwntix0dy7/Stairway%20to%20Earth%200.5%20exe.rar&quot; target=&quot;_blank&quot;&gt;burada&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;u&gt;Önemli not:&lt;/u&gt; Eğer windows versiyonunun indirdiyseniz dosyaları adında Türkçe karakter bulunan bir dosyanın içine koymayın, yoksa &quot;Fatal Python Error&quot; hatasını alırsınız.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;Böyle bir yere koymayın mesela: C:\Users\ölölölçü\Belgelerim\goyun&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;Böyle bir yere koyabilirsiniz ama: C\Program Files\goyun&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/5845522189082070895/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2012/01/goyun-sayma-uygulamas.html#comment-form' title='3 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/5845522189082070895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/5845522189082070895'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2012/01/goyun-sayma-uygulamas.html' title='Goyun sayma uygulaması'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-9112986441069742380</id><published>2012-01-04T08:34:00.000+02:00</published><updated>2012-10-28T22:18:07.345+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="anton"/><category scheme="http://www.blogger.com/atom/ns#" term="anton semchenko"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame"/><category scheme="http://www.blogger.com/atom/ns#" term="semchenko anton"/><category scheme="http://www.blogger.com/atom/ns#" term="Stairway to Earth"/><title type='text'>Stairway to Earth</title><content type='html'>İşte python + pygame kullanarak yazdığım ilk oyun:&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Stairway to Earth&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
Bilgisayarınızda python3 ve pygame yüklü ise &lt;a href=&quot;https://www.dropbox.com/s/kj57szevt23a6zt/Stairway%20to%20Earth%200.5.rar&quot; target=&quot;_blank&quot;&gt;bunu&lt;/a&gt; indirin.&lt;br /&gt;
Değilse ve Windows kullanıyorsanız da &lt;a href=&quot;https://www.dropbox.com/s/a7xetxwntix0dy7/Stairway%20to%20Earth%200.5%20exe.rar&quot; target=&quot;_blank&quot;&gt;bunu&lt;/a&gt; indirin.&lt;br /&gt;
Pygame.org&#39;daki &lt;a href=&quot;http://pygame.org/project-Stairway+to+Earth-2147-.html&quot; target=&quot;_blank&quot;&gt;sayfası&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Youtube &lt;a href=&quot;http://www.youtube.com/watch?v=79OMloybVg0&amp;amp;feature=youtu.be&quot; target=&quot;_blank&quot;&gt;videosu&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Önemli not:&lt;/u&gt; Eğer windows versiyonunun indirdiyseniz dosyaları adında Türkçe karakter bulunan bir dosyanın içine koymayın, yoksa &quot;Fatal Python Error&quot; hatasını alırsınız.&lt;br /&gt;
Böyle bir yere koymayın mesela: C:\Users\ölölölçü\Belgelerim\Stairway to Earth&lt;br /&gt;
Böyle bir yere koyabilirsiniz ama: C\Program Files\Stairway to Earth&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Oyun hakkında&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
Oyun iki kişiliktir, amaç rakibinden önce elma toplayarak 500 puana ulaşmak. Her elma aldığınızda 10 puan alacaksınız. Bir sonraki elmayı 10 saniye içinde alırsanız 20, 5 saniye içinde alırsanız da 40 puan alırsınız. Rakibinizi engellemek amacı ile tuzak kurabilirsiniz. Her tuzak 5 puan değerinde ve beş saniye boyunca duruyor. Rakibiniz tuzağa değerse tuzak kaybolana kadar hareket edemiyor.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Kontroller&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
Adam (Adem): hareket etmek için okları, tuzak kurmak için ise sağ shift tuşunu kullanın.&lt;br /&gt;
Eve (Havva): hareket etmek için wasd tuşlarını, tuzak kurmak için ise sol shift tuşunu kullanın.&lt;br /&gt;
Oyun sırasında ESC&#39;ye basarak menüye ulaşabilirsiniz.</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/9112986441069742380/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2012/01/stairway-to-earth.html#comment-form' title='8 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/9112986441069742380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/9112986441069742380'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2012/01/stairway-to-earth.html' title='Stairway to Earth'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-7553223554892343860</id><published>2011-11-29T14:42:00.000+02:00</published><updated>2011-11-29T15:17:22.677+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="append()"/><category scheme="http://www.blogger.com/atom/ns#" term="extend("/><category scheme="http://www.blogger.com/atom/ns#" term="inventory"/><category scheme="http://www.blogger.com/atom/ns#" term="liste"/><category scheme="http://www.blogger.com/atom/ns#" term="listeler"/><category scheme="http://www.blogger.com/atom/ns#" term="metin tabanlı oyun"/><category scheme="http://www.blogger.com/atom/ns#" term="metin tabanlı oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapma"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapmak"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="python 3"/><category scheme="http://www.blogger.com/atom/ns#" term="python ile oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="remove()"/><category scheme="http://www.blogger.com/atom/ns#" term="while"/><title type='text'>Python&#39;a devam (3)</title><content type='html'>Merhaba arkadaşlar. Bakalım en son nerede kalmıştık... Ah evet, metin tabanlı bir oyun yazmıştık ve oyunu biraz geliştirecektik. Bu derste listelerden bahsedeceğim. Liste dediğimiz şeyi aslında bildiğimiz küme. Kendisini şöyle tanımlayabiliriz:&lt;br /&gt;
&lt;br /&gt;
ilk_listem = []&lt;br /&gt;
&lt;br /&gt;
Tabi bu boş bir liste oldu, buna eleman eklemekten başka bir şey yapmanız mümkün değil. Haydi o zaman dolu bir liste tanımlayalım:&lt;br /&gt;
&lt;br /&gt;
ilk_listem = [1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
Şimdi üç elemanlı bir listemiz oldu. Listeyi böyle tanımlayıp bırakırsak biraz saçma olur tabi, muhtemelen onu çağırmak isteyeceğiz. Bunun için ismini yazmanız yeterli:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; ilk_listem&lt;br /&gt;
[1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
Bir dosyaya kaydedecek olursanız da tahmin edebileceğiniz gibi şöyle bir şey yazmanız gerekir:&lt;br /&gt;
&lt;br /&gt;
ilk_listem = [1, 2, 3]&lt;br /&gt;
print(ilk_listem)&lt;br /&gt;
&lt;br /&gt;
Üstteki iki satırın kayıtlı olduğu dosyayı çalıştırsanız yine [1, 2, 3] çıktısını alacaksınız. Şimdi bu liste ile biraz işlem yapalım. Mesela bir isim eklemeyi deneyebiliriz. Bunun için append() diye bir fonksiyon kullanacağız.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; ilk_listem.append(4)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; ilk_listem&lt;br /&gt;
[1, 2, 3, 4]&lt;br /&gt;
&lt;br /&gt;
Bu şekilde listemize istediğimiz kadar eleman ekleyebiliriz. Buna benzer bir şekilde listeden eleman çıkarabiliriz. Kullanacağımız fonksiyon remove() fonksiyonu.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; ilk_listem.remove(4)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; ilk_listem&lt;br /&gt;
[1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
Buraya kadar bir sorun yoksa ufak bir liste yönetici program yazalım.&lt;br /&gt;
&lt;br /&gt;
yöneticiler_listesi = [&quot;anton&quot;, &quot;tron&quot;, &quot;bill gates&quot;]&lt;br /&gt;
&lt;br /&gt;
print(&quot;Merhaba kullanıcı. İsmin ne?&quot;)&lt;br /&gt;
&lt;br /&gt;
isim = input()&lt;br /&gt;
if isim.lower() in yöneticiler_listesi:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;Listeye yönetici eklemek için 1&#39;e&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;Listeden yönetici silmek için 2&#39;ye basınız&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; işlem = input()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if işlem == &quot;1&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ekle = input(&quot;Eklemek istediğiniz ismi giriniz: &quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; yöneticiler_listesi.append(ekle)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Yöneticiler listesi güncellendi.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Yeni liste: &quot;, yöneticiler_listesi)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; elif işlem == &quot;2&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sil = input(&quot;Silmek istediğiniz ismi giriniz: &quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; yöneticiler_listesi.remove(sil)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Yöneticiler listesi güncellendi.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Yeni liste: &quot;, yöneticiler_listesi)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Öyle bir yönetici yok.&quot;)&lt;br /&gt;
&lt;br /&gt;
Burada bahsetmediğim bir tek &quot;in&quot; işlemcisi var ama onu da tahmin etmek zor değil. &quot;in&quot; işlemcisi yazdığınız elemanın liste içinde olup olmadığını kontrol eder. Tabi bu program sadece bir kere çalışıp kapandığı için çok işe yaramayacaktır. Bunu engellemek için daha önce bahsettiğim def()&#39;i kullanabilirsiniz. Ya da birazdan anlatacağım while döngüsü de işinizi görecektir. Hatta while bu durumda daha kullanışlı olacaktır.&lt;br /&gt;
&lt;br /&gt;
&quot;while&quot; koşula bağlı bir döngüdür. Koşul sağlandığı sürece döngü devam eder. Hemen bir örnek üzerinde göstereyim:&lt;br /&gt;
&lt;br /&gt;
devam = 1&lt;br /&gt;
&lt;br /&gt;
while devam == 1:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;Döngü devam ediyor&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; devam_edelim_mi = input(&quot;Devam edelim mi (e/h): &quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if devam_edelim_mi == &quot;e&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; devam = 0&lt;br /&gt;
print(&quot;Döngü sona erdi&quot;)&lt;br /&gt;
&lt;br /&gt;
Bu programı çalıştırdığınızda devam = 1 satırından sonra program bir döngüye girecek ve &quot;Devam edelim mi?&quot; sorusuna &quot;e&quot; cevabını verdiğiniz sürece döngüden çıkmayacaktır. Şimdi olmasa bile daha kompleks oyunlar yazarken bu döngüden bol bol yararlanacaksınız. Bu derste bahsetmek istediğim birkaç liste fonksiyonu daha var. Onları da kısaca anlatacağım, bir sorunuz olursa yorum yazabilir ya da daha ayrıntılı bir anlatım için istihza.com&#39;a bakabilirsiniz.&lt;br /&gt;
&lt;br /&gt;
extend()&lt;br /&gt;
&lt;br /&gt;
Eğer append() ile aynı anda birden fazla eleman eklemeyi denemişseniz muhtemelen başarısız olmuşsunuzdur. Bu noktada imdadımıza extend() yetişiyor. Kullanımı şu şekilde:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; liste = []&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; liste.extend([&quot;eleman1&quot;, &quot;eleman2&quot;, &quot;eleman3&quot;])&lt;br /&gt;
&lt;br /&gt;
Eğer aynı şekilde append() ile yazarsanız da eklendiğini görürsünüz ancak append() eklediğiniz bir liste olur. Yani liste&#39;nin içine başka bir listeyi bir eleman olarak eklemiş olursunuz. İsterseniz deneyelim:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; liste.append([&quot;yeni eleman&quot;, &quot;yeni eleman 2&quot;, &quot;yeni eleman 3&quot;])&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(liste)&lt;br /&gt;
[&quot;eleman1&quot;, &quot;eleman2&quot;, &quot;eleman3&quot;, [&quot;yeni elman&quot;, &quot;yeni eleman 2&quot;, &quot;yeni eleman 3&quot;]]&lt;br /&gt;
&lt;br /&gt;
Hazır liste içine liste eklemekten bahsetmişken aynı şeyi &quot;+&quot; ile de yapabileceğinizi belirtmeliyim. Bunlar haricinde listelerin birçok fonksiyonu var ama bunlar şimdilik bize yetecektir. Şimdi oyunumuza geçelim. Yaptığım değişiklikleri yorum olarak kodun içine yazdım. IDLE ile açarsanız kırmızı satırları göreceksiniz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#en başa çantamızı ekleyelim ve bölümün başındaki yazıları&lt;br /&gt;
#tekrar tekrar yazdırmamak için bölüm_1_göster ve bölüm_2_göster&lt;br /&gt;
#diye iki değişken tanımlayalım.&lt;br /&gt;
çanta = []&lt;br /&gt;
tahta = False&lt;br /&gt;
bölüm_1_göster = bölüm_2_göster = True&lt;br /&gt;
&lt;br /&gt;
def ana_menü():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;1. Yeni Oyun&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;2. Yardım&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;3. Çıkış&quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; işlem = input()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if işlem == &quot;1&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bölüm_1()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; elif işlem == &quot;2&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; yardım()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; elif işlem == &quot;3&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Oyunumu oynadığınız için teşekkürler.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Yanlış giriş yaptınız.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; yardım()&lt;br /&gt;
&lt;br /&gt;
def yardım():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;Oyunu size sunulan seçeneklerin başındaki&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;numaraları girerek oynayabilirsiniz.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ana_menü()&lt;br /&gt;
&lt;br /&gt;
def bölüm_1():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global çanta, tahta, bölüm_1_göster&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #bu if&#39;in sonunda bölüm_1_göster&#39;i False yapıyoruz&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #bölüm_1()&#39;i bir daha çağırırsak Python burayı atlaycaktır.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if bölüm_1_göster:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Bir odada uyandınız. Oraya nasıl geldiğinizi&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;hatırlamıyorsunz.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bölüm_1_göster = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;1. Kapıyı aç&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;2. Etrafa bak&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #artık sadece tahtayı görmemiz yetmiyor, gördükten sonra&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #onu almamız da gerekiyor.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if tahta:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;3. Tahtayı al.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #yeni öğrendiğimiz &quot;in&quot; ile çantanın &quot;tahta&quot;nın çantada olup&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #olmadığını kontrol ediyoruz. Çantada ise &quot;3. Tahta ile camı&lt;br /&gt;
&amp;nbsp; &amp;nbsp; #kır.&quot; seçeneğini ekliyoruz.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if &quot;tahta&quot; in çanta:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;3. Tahta ile camı kır.&quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; hareket = input()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if hareket == &quot;1&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Kapı kilitli.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bölüm_1()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; elif hareket == &quot;2&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Oda karanlık, kapı kilitli. Dışarıyı&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;göremeyeceğiniz kadar kirlenmiş bir&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;pencere var. Yerde birkaç tahta var.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tahta = True&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bölüm_1()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; elif hareket == &quot;3&quot; and tahta == True:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Tahtayı aldınız.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #burada append() ile tahtayı çantamıza ekliyoruz.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; çanta.append(&quot;tahta&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tahta = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bölüm_1()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; elif hareket == &quot;3&quot; and &quot;tahta&quot; in çanta:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Tahta ile camı kırdınız.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #remove() ile tahtayı çanta&#39;dan siliyoruz.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; çanta.remove(&quot;tahta&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bölüm_2()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; elif hareket == &quot;çanta&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if len(çanta) == 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Çantam boş.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bölüm_1()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Çantamda&quot;, çanta, &quot;var.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bölüm_1()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Yanlış giriş yaptınız.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bölüm_1()&lt;br /&gt;
&lt;br /&gt;
def bölüm_2():&lt;br /&gt;
&amp;nbsp; &amp;nbsp; global bölüm_2_göster&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if bölüm_2_göster:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Pencereden sokağa atladınız. Eski fabrikaların&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;olduğu bir yerdesiniz. Görünüşe göre hepsi terk&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;edilmiş ve etrafta hiç insan yok. Sokağın&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;karşısında bir araba görüyorsunuz.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bölüm_2_göster = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;1. Arabaya doğru koş.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print(&quot;2. Koşarak kaç.&quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; hareket = input()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if hareket == &quot;1&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Arabayı çalıştırdığınız anda bunun bir hata&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;olduğunu anladınız. En yakındaki binadan&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;silahlı üç kişi çıktı. Sizi gördükleri gibi&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;üstünüze ateş açtılar. En son gördüğünüz şey&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;yüzünüze doğrultulmuş bir namlu oldu.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; elif hareket == &quot;2&quot;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;En yakındaki köşeyi dönmeden hemen önce arabanın&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;önünde durduğu binadan silahlı üç kişinin&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;çıktığını gördünüz. O anda ne kadar doğru bir&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;karar verdiğinizi anladınız. Oradan uzaklaşmak&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;beş dakikanızı aldı. Orada her ne olduysa artık&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;sizi ilgilendirmiyordu...&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tahta = False&lt;br /&gt;
&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;Yanlış giriş yaptınız.&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bölüm_2()&lt;br /&gt;
&lt;br /&gt;
ana_menü()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Artık nasıl bir çanta (ya da inventory) oluşturabileceğinizi bildiğinize göre güzel bir oyun yazabilirsiniz. Metin tabanlı oyunlara örnek isterseniz Zork serisini inceleyebilirsiniz.</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/7553223554892343860/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2011/11/pythona-devam-3.html#comment-form' title='6 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/7553223554892343860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/7553223554892343860'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2011/11/pythona-devam-3.html' title='Python&#39;a devam (3)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-6482993570041121712</id><published>2011-01-21T02:32:00.000+02:00</published><updated>2012-06-25T16:15:19.186+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="def"/><category scheme="http://www.blogger.com/atom/ns#" term="def()"/><category scheme="http://www.blogger.com/atom/ns#" term="fonksiyon"/><category scheme="http://www.blogger.com/atom/ns#" term="hesap makinesi"/><category scheme="http://www.blogger.com/atom/ns#" term="merhaba dünya"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapma"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapmak"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="print"/><category scheme="http://www.blogger.com/atom/ns#" term="print()"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="python 3"/><title type='text'>Python&#39;a devam... (2)</title><content type='html'>Son yazımda metin tabanlı bir oyun yazma sözüm vardı. Bunun için bilmeniz gereken iki fonksiyon kaldı: def ve global.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;def&lt;/u&gt;&lt;br /&gt;
def aslında bir fonksiyon tanımlama fonksiyonu. Yani bu fonksiyon sayesinde kendiniz istediğiniz gibi fonksiyon yazabiliyorsunuz. Kullanımı şöyle:&lt;br /&gt;
&lt;br /&gt;
def benim_fonksiyonum():&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“Artık benim de bir fonksiyonum var!”)&lt;br /&gt;
&lt;br /&gt;
Bu şekilde fonksiyonu tanımladık, çarğırmak için ise input()&#39;ta olduğu gibi benim_fonksiyonum() yazmanız yeterli. Peki input() ve print()&#39;te olduğu gibi bir argüman kullanamaz mıyız? Tabi ki de kullanırız. Bunun için fonksiyonu şu şekilde tanımlamanız yeterli:&lt;br /&gt;
&lt;br /&gt;
def merhaba(isim):&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“Merhaba “, isim, “ ben Dünya!”)&lt;br /&gt;
&lt;br /&gt;
merhaba(“Damla”)&lt;br /&gt;
&lt;br /&gt;
Tahmin edebileceğiniz gibi buradan “Merhaba Damla, ben Dünya!” çıktısını alacaksınız. Şimdiye kadar Python&#39;un bahsetmediğim bir özelliğini anlatmak istiyorum. Python kodu okurken satır satır okur, satır atlamaz. Bu yüzden şu şekilde yazarsanız hata verecektir:&lt;br /&gt;
&lt;br /&gt;
merhaba(“Damla”)&lt;br /&gt;
&lt;br /&gt;
def merhaba(isim):&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“Merhaba “, isim, “ ben Dünya!”)&lt;br /&gt;
&lt;br /&gt;
Sıra merhaba(“Damla”) satırına geline kadar merhaba() diye bir fonksiyon tanımlı olmadığı için Python geriye kalan koda bakmadan hata verecektir. Aynı şey değişkenler için de geçerli. Bu yüzden fonksiyonlarınızı ve değişkenlerinizi kodunuzun başında tanımlarsanız daha rahat edersiniz. Diyelim ki fonksiyon dışında bir değişkenimiz var ve onunla bir işlem yapmak istiyorsunuz. Muhtemelen şöyle bir şey yazmayı düşünürsünüz:&lt;br /&gt;
&lt;br /&gt;
değişken = 25&lt;br /&gt;
&lt;br /&gt;
def işlem(x):&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;değişken = x + 5&lt;br /&gt;
&lt;br /&gt;
işlem(değişken)&lt;br /&gt;
print(değişken)&lt;br /&gt;
&lt;br /&gt;
Bu kodu çalıştırdığınızda işlem() fonksiyonunun değişkenin değerini 5 arttırmasını bekliyorsunuz. Oysa değişkeni print() ile bastırdığınızda Python inatla 25 değerini döndürüyor. Buradaki sorun şundan kaynaklanıyor, def ile tanımladığınız fonksiyonun içindeki değişkenler sadece o fonksiyonda tanımlı kalıyor. Yani işlem() içindeki değişken ile baştaki değişken tamamen farklı şeyler. Bu sorunu iki şekilde düzeltebiliriz. İlk yol “global”ı kullanmak:&lt;br /&gt;
&lt;br /&gt;
değişken = 25&lt;br /&gt;
&lt;br /&gt;
def işlem(x):&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;global değişken&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;değişken = x + 5&lt;br /&gt;
&lt;br /&gt;
işlem(değişken)&lt;br /&gt;
print(değişken)&lt;br /&gt;
&lt;br /&gt;
Kodunuzu bu şekilde çalıştırırsanız tam olarak istediğiniz gibi çalışacaktır. İkinci yol da “return”den geçiyor. Şöyle ki:&lt;br /&gt;
&lt;br /&gt;
değişken = 25&lt;br /&gt;
&lt;br /&gt;
def işlem(x):&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;değişken = x + 5&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;return değişken&lt;br /&gt;
&lt;br /&gt;
değişken = işlem(değişken)&lt;br /&gt;
print(değişken)&lt;br /&gt;
&lt;br /&gt;
Şimdi ne yaptık? “return” fonksiyonu herhangi bir değer döndürebilir. Bu durumda işlem() içinde tanımladığımız değişkeni döndürdü ve işlem()&#39;in dışında tanımladığımız değişkene eşitledi. Şimdi fonksyon tanımlarını kullanarak yeni bir hesap makinesi yazalım.&lt;br /&gt;
&lt;br /&gt;
def hesap_makinesi():&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“Toplama işlemi için 1 yazınız.”)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“Çıkarma işlemi için 2 yazınız.”)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“Çarpma işlemi için 3 yazınız.”)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“Bölme işlemi için 4 yazınız.”)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;işlem = input()&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if işlem == “1” or işlem == “2” or işlem == “3” or işlem == “4”:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;a = int(input(“İlk sayıyı giriniz: “)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;b = int(input(“İkinci sayıyı giriniz: “)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“Yanlış giriş yaptınız.”)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;hesap_makinesi()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if işlem == “1”:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(a + b)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;elif işlem == “2”:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(a – b)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;elif işlem == “3”:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(a * b)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;elif işlem == “4”:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(a / b)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“Başka bir işlem yapmak ister misiniz? (e/h): “)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;seçim = input()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if seçim == “e”:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;hesap_makinesi()&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“Hesap makinemi kullandığınız için teşekkürler.”)&lt;br /&gt;
&lt;br /&gt;
hesap_makinesi()&lt;br /&gt;
&lt;br /&gt;
Bu kodu çalıştırdığınızda göreceksiniz ki kullanıcı istemediği taktirde program sona ermiyor. Bunu he defasında hesap_makinesi() fonksiyonunu çağırarak sağlıyoruz. Buraya kadar bir sorun yoksa basit bir metin tabanlı macera oyunu yazmaya hazırsınız demek.&lt;br /&gt;
&lt;br /&gt;
tahta = False&lt;br /&gt;
&lt;br /&gt;
def ana_menü():&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;1. Yeni Oyun&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;2. Yardım&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;3. Çıkış&quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;işlem = input()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if işlem == &quot;1&quot;:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bölüm_1()&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;elif işlem == &quot;2&quot;:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;yardım()&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;elif işlem == &quot;3&quot;:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;Oyunumu oynadığınız için teşekkürler.&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;Yanlış giriş yaptınız.&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;yardım()&lt;br /&gt;
&lt;br /&gt;
def yardım():&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;Oyunu size sunulan seçeneklerin başındaki&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;numaraları girerek oynayabilirsiniz.&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;ana_menü()&lt;br /&gt;
&lt;br /&gt;
def bölüm_1():&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;global tahta&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;Bir odada uyandınız. Oraya nasıl geldiğinizi&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;hatırlamıyorsunz.&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;1. Kapıyı aç&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;2. Etrafa bak&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if tahta == True:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;3. Tahta ile camı kır.&quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;hareket = input()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if hareket == &quot;1&quot;:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;Kapı kilitli.&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bölüm_1()&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;elif hareket == &quot;2&quot;:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;Oda karanlık, kapı kilitli. Dışarıyı&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;göremeyeceğiniz kadar kirlenmiş bir&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;print(&quot;pencere var. Yerde birkaç tahta var.&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;tahta = True&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bölüm_1()&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;elif hareket == &quot;3&quot; and tahta == True:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;Tahta ile pencereyi kırdınız.&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bölüm_2()&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;Yanlış giriş yaptınız.&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bölüm_1()&lt;br /&gt;
&lt;br /&gt;
def bölüm_2():&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;Pencereden sokağa atladınız. Eski fabrikaların&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;olduğu bir yerdesiniz. Görünüşe göre hepsi terk&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;edilmiş ve etrafta hiç insan yok. Sokağın&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;karşısında bir araba görüyorsunuz.&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;1. Arabaya doğru koş.&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;2. Koşarak kaç.&quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;hareket = input()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if hareket == &quot;1&quot;:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;Arabayı çalıştırdığınız anda bunun bir hata&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;olduğunu anladınız. En yakındaki binadan&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;silahlı üç kişi çıktı. Sizi gördükleri gibi&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;üstünüze ateş açtılar. En son gördüğünüz şey&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;yüzünüze doğrultulmuş bir namlu oldu.&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ana_menü()&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;elif hareket == &quot;2&quot;:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;En yakındaki köşeyi dönmeden hemen önce arabanın&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;önünde durduğu binadan silahlı üç kişinin&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;çıktığını gördünüz. O anda ne kadar doğru bir&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;karar verdiğinizi anladınız. Oradan uzaklaşmak&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;beş dakikanızı aldı. Orada her ne olduysa artık&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(&quot;sizi ilgilendirmiyordu...&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;tahta = False&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ana_menü()&lt;br /&gt;
&lt;br /&gt;
ana_menü()&lt;br /&gt;
&lt;br /&gt;
Şimdi burada ne yaptık adım adım inceleyelim. “tahta = False”un ne olduğunu açıklamadım sanırım ama çok da zor bir şey değil. “tahta” bildiğimiz değişken “False” değeri ise tahmin edebileceğiniz gibi “yanlış” anlamına geliyor. Eğer liseden mantık konusunu hatırlarsanız oradaki 0&#39;a denk geliyor. Tabi bunun tersi de “True” değeri. Burada dikkat etmeniz gereken nokta ikisinin de büyük harfle yazıldığı. Onun haricinde yeni bir şey yok. Böyle bir şey yazarken dikkat etmeniz bir başka şey ise ilk fonksiyonunuzu (bu durumda ana_menü() fonksiyonu) kodunuzun en sonunda çağırmanız gerektiği. Daha önce de söylediğim gibi Python kodu okurken satır atlamaz, bu yüzden ana_menü() fonksiyonunu çağırdığımız satırın altında kalan hiçbir kod çalışmayacak.&lt;br /&gt;
&lt;br /&gt;
ana_menü() fonksiyonunda değişik bir şey yok, şimdiye kadar hepsini anlattım zaten. Bir tek bölüm_1()&#39;de en başta sadece kapıyı aç ve etrafa bak. Kapıyı aç dediğimiz zaman kapı kilitli mesajını alıyoruz. Ancak etrafına bak dersek tahta değişkeni True değerini alıyor ve bir daha bölüm_1() fonksiyonu çağrılıyor. Bu defa tahta = True şartı sağlandığı için üçüncü seçenek açılıyor ve camı kırarak dışarı çıkabiliyoruz. İkninci bölümde hangi seçeneği seçerseniz seçin oyun sona erecek, tahta yine False değerini alacak ve ana menü açılacak. Tahtayı false yapmazsak ve kullanıcı oyunu kapatmadan bir daha oynamak isterse birinici bölümde tahta True olduğu için üçüncü seçenek açık olacaktır.&lt;br /&gt;
&lt;br /&gt;
Evet, şimdilik bu kadar. Bir dahaki derste oyunumuzu biraz geliştireceğiz. Kendinize iyi bakın.</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/6482993570041121712/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2011/01/son-yazmda-metin-tabanl-bir-oyun-yazma.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/6482993570041121712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/6482993570041121712'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2011/01/son-yazmda-metin-tabanl-bir-oyun-yazma.html' title='Python&#39;a devam... (2)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-779577569818290116</id><published>2011-01-09T18:22:00.000+02:00</published><updated>2013-02-17T22:11:44.772+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="input()"/><category scheme="http://www.blogger.com/atom/ns#" term="int()"/><category scheme="http://www.blogger.com/atom/ns#" term="merhaba dünya"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapmak"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapımına giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="print()"/><category scheme="http://www.blogger.com/atom/ns#" term="programlama öğrenme"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="python 3"/><category scheme="http://www.blogger.com/atom/ns#" term="pythona giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="pythonda ilk adımlar"/><title type='text'>Python&#39;a Giriş (1)</title><content type='html'>&lt;b&gt;Önsöz&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Daha önce kısa yoldan oyun yapımını öğretme sözü vermiştim. Bu yüzden Python&#39;un ayrıntılarından bahsetmek yerine ilk aşamada gerekli olan fonksiyonlarıdan bahsedeceğim. Hem zaten Python için çok güzel Türkçe bir kaynak var: &lt;a href=&quot;http://www.istihza.com/&quot;&gt;www.istihza.com&lt;/a&gt;. Eğer ilk oyununuzu yaptıktan sonra hala bu işle uğraşmaya kararlıysanız ve bunun sizin için ideal bir iş olduğunu düşünüyorsanız benim anlattıklarımla yetinmeyin, o siteyi mutlaka inceleyin.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Python&#39;da İlk Adımlar&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Tahmin edebileceğiniz gibi önce sitesine gidip onu indirmemiz lazım: www.python.org . Siteye girdiğinizde göreceksiniz ki birçok Python sürümü var, en önemlileri Python 2.xx ve 3.xx. Aralarında çok büyük olmasa da bazı farklar var. Benim kişisel tercihim ve anlatacağım sürüm 3. sürümü. 3. sürümünü tercih etmemin en büyük sebebi Türkçe karakterleri destekliyor olması. Tahminimce nasıl indirip kuracağınızı çözersiniz, o yüzden bu kısmı atlıyorum.&lt;br /&gt;
Kurduktan sonra Başlat menüsünde Python3.1&#39;in (ya da sizinki hangisi ise) altında IDLE&#39;ı çalıştırın. Karşınıza Python&#39;un sürümü ile başlayan ve “&amp;gt;&amp;gt;&amp;gt;” ile biten bir ekran çıkacaktır. İşte burası Python&#39;un çalıştığı yer. Bütün programlama işini buradan halledebilirsiniz. Tabi ki buraya yazdıklarınızı kaydedemeyeceğiniz için böyle bir şey yapmayacaksınız ama kaydetme işine daha sonra değineceğiz.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Print() fonksiyonu&lt;/u&gt;&lt;br /&gt;
Her programlama dersinin girişinde olduğu gibi ekrana yazı yazdırmaktan başlayalım. Ekrana herhangi  bir şey yazdırmak için print() fonksiyonunu kullanmamız yeterli. Bu noktada dikkat etmeniz gereken nokta eğer bir yazı bastıracaksanız tırnak içine almanız gerektiği. Şöyle orijinal bir örnek yapalım:&lt;br /&gt;
&lt;br /&gt;
print(“Merhaba Anton, ben Dünya!”) yazın ve enter&#39;a basın.&lt;br /&gt;
&lt;br /&gt;
Yazdığınız tam olarak şöyle görünmeli:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(“Merhaba Anton, ben Dünya!”)&lt;br /&gt;
Merhaba Anton, ben Dünya!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eğer cümlenizi tırnak arasına almayı unuttuysanız Python şöyle bir hata verecektir:&lt;br /&gt;
&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
File &quot;&lt;pyshell&gt;&quot;, line 1, in &lt;module&gt;&lt;br /&gt;
print(asd)&lt;br /&gt;
NameError: name &#39;Merhaba Anton, ben Dünya!&#39; is not defined&lt;br /&gt;
&lt;br /&gt;
Bir sayı bastırmak istediğinizde tırnakları kullanmanıza gerek yok&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(23)&lt;br /&gt;
23&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
İşlemler ve değer atama&lt;br /&gt;
Python&#39;u hesap makinesi olarak kullanmanız da mümkün. Fazla uzatmadan iki ile üçü toplayalım:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; 2 + 3&lt;br /&gt;
5&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eğer isterseniz önce her sayıya bir isim verirsiniz (daha doğrusu isme bir sayı verirsiniz):&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a = 2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b = 3&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a + b&lt;br /&gt;
5&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aynı şekilde a + b toplamına da başka bir isim verebiliriz:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a = 2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b = 3&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; c = a + b&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; c&lt;br /&gt;
5&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aynı çıktıları print() fonksiyonunu kullanarak da elde edebiliriz:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(2 + 3)&lt;br /&gt;
5&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ya da:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(a + b)&lt;br /&gt;
5&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ya da:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(c)&lt;br /&gt;
5&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yazmamız mümkün.&lt;br /&gt;
&lt;br /&gt;
Aynı şekilde bir yazıyı da bir harfe atayabiliriz:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a = “Merhaba Dünya, ben Anton!”&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(a)&lt;br /&gt;
Merhaba Dünya, ben Anton!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tabi bu atamaları yaparken sadece harf ile sınırlı değilsiniz, “a” yerine “cümle” de yazabilirsiniz.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;input() fonksiyonu&lt;/u&gt;&lt;br /&gt;
Ekrana istediğimizi bastırabiliyoruz artık! Ne mutlu bize! Peki ya kullanıcıdan bir girdi almak istersek? İşte o zaman devreye input() fonksiyonu giriyor. Hemen bir deneme yapalım:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; input()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gördüğünüz gibi input() deyince program öylece kalıyor. Peki neden? Çünkü bizden bir değer girmemizi bekliyor. Hemen bir şeyler yazalım öyleyse:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; input()&lt;br /&gt;
Kara Murat Benim!&lt;br /&gt;
&#39;Kara Murat Benim!&#39;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
input() fonksiyonu yazdığımızı aynen bastırdı. Şimdi de bir değişkene isim vermeye çalışalım:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; isim = input()&lt;br /&gt;Damla&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Şimdi “isim” yazdığınızda Python size “Damla” çıktısını verecektir:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; isim&lt;br /&gt;
&#39;Damla&#39;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
İsterseniz bir de nasıl bir girdi beklediğimizi soralım kullanıcıya. Bunun için input(“açıklama”) şeklinde bir açıklama girebilirsiniz.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; isim = input(“Bir isim giriniz: “)&lt;br /&gt;
Bir isim giriniz: Damla&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; isim&lt;br /&gt;
&#39;Damla&#39;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bu noktada print() fonksiyonuna dönmek istiyorum. print()&#39;i kullanarak aynı anda birkaç argümanı birleştirerek bastırabilirsiniz. Bunu da şu şekilde yapabilirsiniz:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;print(“Merhaba ” + isim + “, ben Dünya!”)&lt;br /&gt;
Merhaba Damla, ben Dünya!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dikkatinizi çekti mi bilmiyorum, ama burada “+” işaretinin işlevi değişmiş. Bu sadece print() için geçerli olan bir durum değil, sayı haricinde herhangi bir şey ile kullanıldığında o şeyleri yan yana ekler. Şöyle bir örnek yapalım:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a = “Aaa! ”&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b = “Kim gelmiş!”&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a + b&lt;br /&gt;
&#39;Aaa! Kim gelmiş!”&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aynı durum sayı haricinde her karakter için geçerli olduğundan şöyle bir şey görürseniz şaşırmayın:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; “2” + “3”&lt;br /&gt;
&#39;23&#39;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tırnak arasına yazıldıkları için Python 2&#39;yi ve 3&#39;ü sayı olarak değil de bir harf gibi algılıyor. Şimdi dönelim input()&#39;a. Az önce gördüğünüz gibi input() sayı değil de girdiyi karakter gibi algılıyor. Bu durumu düzeltmek için ne yapmalıyız? Cevap int() fonksiyonunda saklı. Önce şöyle bir şey yazalım:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a = input(“Bir sayı girin: “)&lt;br /&gt;
Bir sayı girin: 12&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b = input(“Bir sayı daha girin: “)&lt;br /&gt;
Bir sayı daha girin: 43&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a + b&lt;br /&gt;
&#39;1243&#39;&lt;br /&gt;
&lt;br /&gt;
Tıpkı beklediğimiz gibi Python 12 ve 43 sayılarını birer karakter olarak algıladı ve yan yana yazdı. Şimdi aynı şeyi int() ile deneyelim:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a = input(“Bir sayı girin: “)&lt;br /&gt;
Bir sayı girin: 12&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b = input(“Bir sayı daha girin: “)&lt;br /&gt;
Bir sayı daha girin: 43&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; int(a)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; int(b)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a + b&lt;br /&gt;
55&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bu örnekte int() fonksiyonu karakter olarak görünen 12 ve 43&#39;ü sayıya çevirdi. Aynı şey şu şekilde de yazılabilir:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a = int(input(“Bir sayı girin: “))&lt;br /&gt;
Bir sayı girin: 42&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b = int(input(“Başka bir sayı girin: “))&lt;br /&gt;
Başka bir sayı girin: 14&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a + b&lt;br /&gt;
56&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Olur da bir sayıyı karaktere dönüştürmek isterseniz str() fonksiyonunu kullanabilirsiniz. str() fonksiyonu int() ile tamamen aynı şekilde çalışıyor.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Kayıt olayı&lt;/u&gt;&lt;br /&gt;
Bu kadar şeyi yazdıktan sonra kaybolmalarını istemezsiniz herhalde? O halde hemen file&#39;ın altındaki “New Window”a tıklayalım (ya da ctrl + n). Karşımıza beyaz bir pencere çıkacak. Hemen yazmak istediklerimizi yazalım oraya. Mesela:&lt;br /&gt;
&lt;br /&gt;
isim = input(“İsminiz nedir? “)&lt;br /&gt;
print(“Hoşgeldin ” + isim + “!”)&lt;br /&gt;
&lt;br /&gt;
Sonra yine File&#39;ın altındaki “Save” seçeneğine tıklıyoruz (ya da ctrl + s). Kaydedeceğimiz yeri seçip dosya adının sonuna “.py” yazarak kaydediyoruz. Bundan sonra iki seçeneğiniz var; ya kaydettiğiniz dosyaya çift tıklayarak açarsınız ya da Run&#39;ın altındaki “Run Module”e tıklarsınız (ya da f5). Eğer çift tıklayarak dosyayı açtıysanız ismi yazdıktan hemen sonra ekranın kapandığını göreceksiniz. Aslında Python önce “Hoşgeldin isim” (artık isme ne yazdıysanız)&#39;i yazdırıyor, ardından bir işlem olmadığı için kendisini sonlandırıyor. Bunu önlemek için en sona input() ekleyebilirsiniz. Hatta input(“Çıkmak için herhangi bir tuşa basınız”) gibi bir açıklama bile girebilirsiniz.&lt;br /&gt;
&lt;br /&gt;
Öyle tahmin ediyorum ki buraya kadar gelmek yarım saatinizi almamıştır. Şimdi size basit bir hesap makinesi yazmaktan bir adım uzakta olduğunuzu söylesem nasıl hissedersiniz? Evet, Python&#39;da her şey gerçekten bu kadar kolay.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;if, elif ve else&lt;/u&gt;&lt;br /&gt;
Bir hesap makinesi yazacağız dedik, kullanıcıdan girdi almayı biliyoruz, o girdiyi işlemeyi biliyoruz. Peki programın girdiye göre davranmasını nasıl sağlayacağız? Cevap if, else ve elif&#39;te. Hemen bir örnek ile açıklayım, önce yeni bir sayfa açalım ve şunları yazalım:&lt;br /&gt;
&lt;br /&gt;
print(“Toplama işlemi için 1 yazın.”)&lt;br /&gt;
print(“Çıkarma işlemi için 2 yazın.”)&lt;br /&gt;
print(“Çarpma işlemi için 3 yazın.”)&lt;br /&gt;
print(“Bölme işlemi için 4 yazın.”)&lt;br /&gt;
&lt;br /&gt;
işlem = input()&lt;br /&gt;
&lt;br /&gt;
a = int(input(“İlk sayıyı giriniz: “))&lt;br /&gt;
b = int(input(“İkinci sayıyı giriniz: “))&lt;br /&gt;
&lt;br /&gt;
if işlem == “1”:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(a + b)&lt;br /&gt;
elif işlem == “2”:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(a – b)&lt;br /&gt;
elif işlem == “3”:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(a * b)&lt;br /&gt;
elif işlem == “4”:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(a / b)&lt;br /&gt;
else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“Geçersiz işlem”)&lt;br /&gt;
&lt;br /&gt;
input(“Programı kapatmak için bir tuşa basınız”)&lt;br /&gt;
&lt;br /&gt;
Burada if&#39;e kadar her şeyi biliyorsunuz zaten. Sıra if&#39;e geldiğinde Python if&#39;ten sonra yazdığım şarta bakıyor, işlem “1”e eşit mi? Eğer eşit ise print(a + b) diyor ve sonraki şartlara bakmıyor. Yok eğer eşit değil print(a + b)&#39;yi atlıyor ve sonraki şarta bakıyor, eğer işlem “2”ye eşit ise print(a – b) işlemini yapıyor. Bu şekilde 4&#39;e kadar geliyor, eğer işlem 4&#39;e de eşit değilse else&#39;te tanımlı olan işlemi yapıyor, yani ekrana “Geçersiz işlem” yazdırıyor. Burada dikkat etmeniz gereken iki nokta var. Birincisi işlem şuna eşit mi derken “=” yerine “==” kullanmak. Bunun sebebi “=”in bir değeri başka bir değere eşitliyor olması, “==”in ise küçüktür ya da büyüktür gibi bir işlemci olması. İkincisi de bıraktığım boşluklar. İki noktadan sonra tanımladığınız işlemleri aynı sayıda boşluk bırakarak yazmak zorundasınız. Onu da şöyle bir örnek ile açıkayım:&lt;br /&gt;
&lt;br /&gt;
a = input()&lt;br /&gt;
if a == “1”:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“a 1&#39;e eşitmiş”)&lt;br /&gt;
else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“a 1 değildi”)&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“Trololo”)&lt;br /&gt;
&lt;br /&gt;
input(“Programı sonlandırmak için bir tuşa basınız”)&lt;br /&gt;
&lt;br /&gt;
Burada eğer a&#39;ya 1 değerini verirseniz “a 1&#39;e eşitmiş” satırı bastırılacak. Yok eğer başka herhangi bir değer girerseniz de önce “a 1 değildi” yazacak daha sonra “Trololo” yazacak. Bir de şöyle bir şey deneyelim:&lt;br /&gt;
&lt;br /&gt;
a = input()&lt;br /&gt;
if a == “1”:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“a 1&#39;e eşitmiş”)&lt;br /&gt;
else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“a 1 değildi”)&lt;br /&gt;
print(“Trololo”)&lt;br /&gt;
&lt;br /&gt;
input(“Programı sonlandırmak için bir tuşa basınız”)&lt;br /&gt;
&lt;br /&gt;
Bu durumda da a ne olursa olsun “Trololo”yu bastıracak. Yani print(“Trololo”) satırı if – else&#39;in dışında olacak. Eğer if&#39;in altına bir if daha yazmak isteseydim bir boşluk daha bırakmam gerekecekti. Bu durum her “:” yazdığınızda geçerli oluyor. Hemen bir örnek vereyim hatta:&lt;br /&gt;
&lt;br /&gt;
a = int(input())&lt;br /&gt;
&lt;br /&gt;
if 1 &amp;lt; a &amp;lt; 4:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if a == 2:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print(“a = 2”)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;elif a == 3:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print(“a = 3”)&lt;br /&gt;
else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;print(“a 1 ve 4 arasında değil”)&lt;br /&gt;
&lt;br /&gt;
input(“Programı sonlandırmak için bir tuşa basınız”)&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&lt;br /&gt;&lt;/module&gt;&lt;/pyshell&gt;
&lt;pyshell&gt;&lt;module&gt;&lt;br /&gt;&lt;/module&gt;&lt;/pyshell&gt;
&lt;pyshell&gt;&lt;module&gt;&lt;u&gt;for döngüsü&lt;/u&gt;&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&lt;br /&gt;&lt;/module&gt;&lt;/pyshell&gt;
&lt;pyshell&gt;&lt;module&gt;for döngüsü Python&#39;nun çok önemli bir öğesidir. Sanırım bunu bir örnekle açıklamak daha kolay olacaktır.&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&lt;br /&gt;&lt;/module&gt;&lt;/pyshell&gt;
&lt;pyshell&gt;&lt;module&gt;for eleman in &quot;elemanlar listesi&quot;:&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&amp;nbsp; &amp;nbsp; print(elaman)&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&lt;br /&gt;&lt;/module&gt;&lt;/pyshell&gt;
&lt;pyshell&gt;&lt;module&gt;Bu komutu çalıştırırsanız şöyle bir çıktı alırsınız:&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;e&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;l&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;e&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;m&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;a&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;n&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;l&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;a&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;r&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&lt;br /&gt;&lt;/module&gt;&lt;/pyshell&gt;
&lt;pyshell&gt;&lt;module&gt;l&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;i&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;s&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;t&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;e&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;s&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;i&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&lt;br /&gt;&lt;/module&gt;&lt;/pyshell&gt;
&lt;pyshell&gt;&lt;module&gt;Burada for komutunu kullanarak &amp;nbsp;&quot;elemanlar listesi&quot; satırındaki öncelikle ilk harfe eleman ismini verdik, daha sonra print() komutu ile ekrana bastırdık, daha sonra ikinci harfe geçip ona elaman ismini verdik ve bastırdık. Bunu sonuna kadar yaptıktan sonra for döngüsü bitti ve Python koda kaldığı yerden devam etti. Aynı şeyi daha sonra anlatacağım listelerle de yapabilirsiniz, zaten for daha çok listelerle birlikte kullanılıyor. Özellikle birçok öğeye aynı işlemi yapmak isterseniz çok kullanışlı olabiliyor. Asıl faydasını oyun yaparken göreceksiniz. İsterseniz bir cümlede bir harfin kaç kere geçtiğini bulan bir program yazalım ki for döngüsü biraz daha iyi anlaşılsın.&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&lt;br /&gt;&lt;/module&gt;&lt;/pyshell&gt;
cümle = &quot;Örnek cümlemiz böyle bir şey olsun. Burada belli bir harften kaç tane olduğunu sayacağız.&quot;&lt;br /&gt;
print(cümle)&lt;br /&gt;
&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;harf = input(&quot;Saymak istediğiniz harfi yazın: &quot;)&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&lt;br /&gt;&lt;/module&gt;&lt;/pyshell&gt;
&lt;pyshell&gt;&lt;module&gt;sayaç = 0&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;for harfler in cümle:&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&amp;nbsp; &amp;nbsp; if harf == harfler:&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sayaç = sayaç + 1&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&lt;br /&gt;&lt;/module&gt;&lt;/pyshell&gt;
&lt;pyshell&gt;&lt;module&gt;print(&quot;Örnek cümlemizde&quot;, harf, &quot;harfinden&quot;, sayaç, &quot;tane var.&quot;)&lt;/module&gt;&lt;/pyshell&gt;&lt;br /&gt;
&lt;pyshell&gt;&lt;module&gt;&lt;br /&gt;&lt;/module&gt;&lt;/pyshell&gt;
&lt;pyshell&gt;&lt;module&gt;Sanırım burada yaptıklarımız anlaşılıyor. Önce örnek cümlemizi bastırdık, sonra kullanıcıdan bir karakter girmesini istedik. Karakter sayısını tutması için sayaç diye bir değişken tanımlayıp sıfıra eşitledik. Daha sonra for&#39;un içinde if ile harfler&#39;e atanmış olan her bir harfin kullanıcıdan aldığımız karakter ile aynı olup olmadığını kontrol ettik. Aynı olduğu taktirde de sayacı 1 arttırdık, for döngüsü bitince de print() ile sayacı bastırdık, böylece kullanıcının girdiği karakterin cümle içinde kaç kere geçtiğini bulduk.&lt;br /&gt;
&lt;br /&gt;
Evet arkadaşlar, şimdilik benden bu kadar. En yakın zamanda ikinci dersi de ekleyeceğim ve hatta o dersin sonunda metin tabanlı bir oyun yazabileceksiniz! Bir sonraki derse kadar metin tabanlı oyunlar hakkında bir fikir edinmek isterseniz Zork&#39;u inceleyebilirsiniz. Haydi kendinize iyi bakın!&lt;/module&gt;&lt;/pyshell&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/779577569818290116/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2011/01/pythona-giris.html#comment-form' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/779577569818290116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/779577569818290116'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2011/01/pythona-giris.html' title='Python&#39;a Giriş (1)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-1346257337369158187</id><published>2011-01-09T18:20:00.000+02:00</published><updated>2011-03-16T15:14:16.503+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oyun"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapmak"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yapımına giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="programlama dilleri"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>İlk Adımlar 2 (oyun yapımı)</title><content type='html'>&lt;b&gt;Haydi Bir Oyun Yapak!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
İtiraf edin, birçoğunuzun böyle bir hayali var ya da en azından vardı. Belki çocukken tek hayaliniz buydu, herkesin oyununuzu konuştuğunu hayal ederdiniz falan. Daha sonra ilk bilgisayarınız alındığında “oyun yapacağım uleyn!” gazı ile oturmuşsunuzdur başına ama daha sonra ne yapacağınızı bilemediniz ya da bunun çok zor olduğunuzu fark ettiniz. Şimdi içinizdeki o çocuk ölmediyse, o gazınız geçmediyse, hala o hevesiniz varsa size iyi iki haberim var: size nasıl bir oyun yapacağınızı anlatacağım ve bu iş sandığınız kadar zor değil. Bu yazıyı okuduktan sonra oyun yapımı konusunda az da olsa bir fikriniz olacaktır.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;İşe Başlarken&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
“c++ öğrenip kırayzise rakip bir oyun yapacağım, var mısın?” diye bir gazla arkadaşlarınızı topladıysanız biraz hevesinizi kıracağım, bir iki ayda adam akıllı c++ öğrenmeniz çok zor ve Crisys gibi bir oyun yapmak için yaklaşık yüz kişilik bir şirkete, iki – üç yıla ve 15 – 20 milyon dolara ihtiyacınız var. Bütün bunlara sahip olsanız bile ilk projenizin bu kadar başarılı olması çok ama çok düşük bir ihtimal. Bunun yerine size çok daha gerçekçi bir hedef teklif ediyorum: Mario&#39;ya rakip bir oyun yapın! Ya da Monkey Island&#39;a.&lt;br /&gt;
“Off, ne var ki onda? Hem kim oynar öyle bir şey?” dediğinizi duyar gibi oldum. Her şeyden önce Mario çok çok iyi bir oyun. 1985&#39;ten beri neredeyse aynı formulü uygulayarak piyasaya oyunları sürülüyor ve Modern Warfare 2&#39;den çok satıyorsa o oyunda bir hayır vardır. Ayrıca son zamanlarda Mario gibi basit grafikli ve çok eğlenceli olan onlarca oyun var. O oyunları yazanların da sizden çok bir farkı yok. Örnek isterseniz Geometry Wars, VVVVVV, Braid, Super Meat Boy, Word of Goo... bu liste böyle uzar gider. Özellikle işe ilk başladığınızda hedefi gerçekçi tutmakta fayda var. Hem oyunlarda önemli olan grafik falan değil, önemli olan eğlence.&lt;br /&gt;
Yukarıda yazdıklarımı kabullendiyseniz size bir tavsiyem daha var, olaya c++ ile başlmayın. Tabi ki c++ bügün en yaygın kullanılan dil ve tabi ki bütün profesyonel oyun şirketleri bu dili kullanıyor. Ancak siz daha yolun başındasınız ve yapacağınız projeler için çok daha basit diller de var. Benim (ve tanıdığım birçok bilgisayar mühendisinin, oyun yapımcısının) tavsiyem Python. Python öğrenilmesi ve kullanılması en basit dillerden bir tanesi. Hem programlamanın mantığını çözmeniz, bu konuda tecrübe kazanmanız için ideal bir dil. C++&#39;a göre tek eksisi hızı. Tabi sizin bu hız farkını değerlendirebilmeniz için programlama konusunda epey bir deneyimli olmanız lazım. Bir arkadaşımın dediği gibi, hızlı çalıştıracağız diye programı bitirememe riskine girmeye gerek yok.&lt;br /&gt;
Python&#39;dan daha kolay bir şey varsa o da oyun yapımı için hazırlanan programlarla oyun yapmak. FPS Maker, Adventure Game Studio (AGS) gibi programları kullanabilirsiniz. Bir zamanlar AGS&#39;ye azıcık ucundan bir bakmıştım ve çok başarılı bir program olduğunu söyleyebilirim, ileride onun için de ders hazırlayabilirim.&lt;br /&gt;
Şimdi ilk dersimize geçelim isterseniz...</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/1346257337369158187/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2011/01/ilk-admlar.html#comment-form' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/1346257337369158187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/1346257337369158187'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2011/01/ilk-admlar.html' title='İlk Adımlar 2 (oyun yapımı)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7933148804027728913.post-260491769316643006</id><published>2011-01-09T13:41:00.001+02:00</published><updated>2011-03-16T15:12:04.539+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="inceleme"/><category scheme="http://www.blogger.com/atom/ns#" term="inceleme yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="inceleme yazısı"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun dünyası"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun dünyasına giriş"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun incelemesi yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yazarlığı"/><category scheme="http://www.blogger.com/atom/ns#" term="oyun yazmak"/><category scheme="http://www.blogger.com/atom/ns#" term="yazarlık"/><category scheme="http://www.blogger.com/atom/ns#" term="yazı yazmak"/><title type='text'>İlk Adımlar (yazarlık)</title><content type='html'>&lt;title&gt;&lt;/title&gt; 	 	&lt;style type=&quot;text/css&quot;&gt;
	&lt;!--
		@page { margin: 0.79in }
		P { margin-bottom: 0.08in }
	--&gt;
	
&lt;/style&gt;   &lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;&lt;br /&gt;
Hoşgeldiniz arkadaşlar. Buraya uğradığınıza göre oyun dünyası ile yakından ilgilisinizdir. Hatta belki işi biraz abartıp profesyonel bir oyuncu, bir yazar ya da bir oyun yapımcısı olmak istiyorsunuz. Benim amacım size elimden geldiği kadar yardım etmektir. Sakın öyle çok şey bildiğimi sanmayın, sadece bu konularda okuduğum birçok yazı var ve biraz da tecrübeye sahibim. Şimdi siz de hazırsanız ve iyice gaza gelmişseniz gazınız tükenmeden kısa yoldan nasıl oyun dünyasına giriş yapabilirsiniz ondan bahsedelim.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Giriş&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
“Kısa yoldan oyun dünyasına giriş” dedim de sakın yanlış anlamayın, iki günde profesyonel yazar ya da oyun geliştiricisi olmayacaksınız. Sadece ne ile uğraştığınız konusunda bir fikir edineceksiniz. Bunu yaparken de belki yazarlığın veya oyun yapımcılığının size göre olmadığını keşfedersiniz, belki de hayatınızın amacının bu olduğuna karar verirsiniz. Dilerseniz ilk olarak yazarlıktan bahsetmek istiyorum.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ulan Gece Gündüz Oyun Oynayarak Para Kazanoyorsunuz Haa!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Evet, sanırım oyun yazarlarının en sık duydukları cümlelerden bir tanesi bu olsa gerek. Birçok genç de sadece çok oyun oynadığı için oyun eleştirmenliğinin ona göre olduğunu düşünür. Tabi çok oyun oynamış olmak bu iş için gerekli bir kriter ancak birçoğunun atladığı kısım “yazı” kısmı.&lt;br /&gt;
İşte ilk tavsiye, profesyonel bir oyun yazarı olmak istiyorsanız dil bilgisi derslerini iyi dinleyin. Bundan daha önemli bir şey varsa o da bol bol kompozisyon yazmanız. Temel dil bilgisi kurallarını öğrenmeniz bir iki haftanızı alacaktır ancak akıcı, anlaşılır ve sade bir dille yazı yazmayı öğrenmek için bolca pratiğe ihtiyacınız var. Bu noktada eleştirilere de açık olmalısınız. Hatalarınızı görmezden gelirseniz kendinizi geliştiremezsiniz. Yazmanın yanı sıra bol bol okumayı da ihmal etmeyin. Okumaktan kastım sadece dergiler değil tabi, kitapların ve çeşitli makalelerin yazı yeteneğinizi (ve aslında daha da önemlisi kendinizi) geliştirirken size çok yardımı olacaktır. Ayrıca oyunlarda sık sık popüler eserlere göndermeler ve onlardan alıntılar yapılır. Bunları yakalamanız incelemelerinizi zenginleştirecek ve okunması daha zevkli hale getirecektir. Aynı şey filmler için de geçerli tabi.&lt;br /&gt;
Dil bilgisi kurallarının yanı sıra dikkat etmeniz gereken bir başka nokta yazının fanboyluktan uzak olması. Bu hem oyunun kötü hem de iyi yanlarını anlatırken geçerli. Kendimden örnek vereyim, şahsen God of War oyunlarını bir türlü sevemedim, sarmadı. İlk oyunu genel kültür olsun diye oynadım. İkincisinin başında da neredeyse uyuya kalıyordum. Bir tek Ghost of Sparta&#39;yı oynarken zevk aldım diyebilirim. Bana sorarsanız oyunda adam akıllı bir senaryo falan da yok (ki en çok buna dikkat ederim oyunlarda) ama eğer bunları bir incelemeye yazarsam ve on üzerinden dört ya da beş gibi bir not verirsem bir ton küfür yemekle kalırım. Neredeyse bütün dünyanın beğendiği bir oyunu kötülemenin bir manası yok. Bunun gibi zevkinize hitab etmeyen oyunların kötü incelemelerini yazmaktansa hiç yazmayın daha iyi (mesela ben genel olarak spor oyunlarını da sevmiyorum ama bu onların kötü olduğunu göstermez).&lt;br /&gt;
Bunların yanı sıra incelenecek bir oyunun hakkını vermelisiniz. On dakika oynayarak bir oyun konusunda en fazla ufak bir fikir sahibi olursunuz. Oyunun bütün eksi ve artılarını görmek için hiç olmazsa bir kez bitirmeniz iyi olacaktır.&lt;br /&gt;
Bu konuda son bir şey söylemek istiyorum, mutlaka kurallara uymanız gerekmiyor tabi ki. İnsanlar aynı formatta yazılmış yazıları okumaktan bir süre sonra sıkılacaklardır ama unutmayın ki bir kuralı çiğneyecekseniz önce onu öğrenmelisiniz, ancak öğrendikten sonra onun gerekliliğini tartışabilirsiniz.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ben Yazımı Yazdım Ki!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Tamam, yazınızı yazdınız, hatalarınızı düzelttiniz, arkadaşlarınıza okuttunuz ve onlar çok beğendi. Tabi ki inceleme yazısını sadece arkadaşlarınıza okutmak için yazmamışsınızdır. Eserinizi daha geniş kitlelere ulaştırmak için ne yapmalısınız? Tabi ki internete koymalısınız! Asıl soru nereye. Bu konudaki tavsiyem paylaşım forumlarına koymamanız. Paylaşım forumlarının size kazandıracağı tek şey “emeğine sağlık aga” gibi “teşekkür” mesajları ve +rep olacaktır. Oysa siz bir profesyonel yazar olmak istiyorsunuz. Bunun için daha ciddi bir şeyler yapmalısınız. İşe bir blog açarak başlayabilirsiniz. Google&#39;a “bedava blog” yazmanız yeterli olacaktır. Karşınıza birçok bedava blog sitesi çıkacaktır.&lt;br /&gt;
İkinci seçenek bir oyun sitesi kurmak ya da varolan bir siteye yazı göndermek. Tabi TRGamer ya da Merlinin Kazanı gibi siteler başvurunuzu kabul etmeyebilir, onların zaten güzel kadroları var. Bunun yerine biraz daha mütevazi olun ve başka siteler bulmaya çalışın. Hiç olmadı ufak bir araştırma ve bir haftalık çalışma ile kendi sitenizi açabilirsiniz.&lt;br /&gt;
Üçüncü seçenek de benim şahsi tercihim incelemeleri Oyungezer&#39;in sitesine yollamak. Hem yukarıda anlattıklarımdan daha kolay olacaktır, hem de bu sayede çok daha geniş kitlelere ulaşabilirsiniz. Benim yaptığım da buydu, kısa bir süre sonra birkaç yerden (tabi hepsi amatör sitelerdi) teklif geldi (ulan reklam gibi oldu ya, kendimi o saçma ekzersiz aletlerin reklamlarında oynuyormuş gibi hissettim :P).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Son Olarak&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Evet, benim tecrübelerim bu noktada bitiyor sanırım. Gördüğünüz gibi yazarlık yapmak o kadar da kolay bir iş değil. Hem ciddi bir yerde çalışacak olursanız yazılarınızı yetiştirmeniz gereken bir tarih, belki de karakter sınırı olacaktır. Ha bir de söylemeyi unuttum, oyun dünyasının her işinde olduğu gibi yazarlıkta da başarılı olmak istiyorsanız bunu sevgi ile yapmalısınız. Bir sonraki yazıya kadar kendinize iyi bakın.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonsemchenko.blogspot.com/feeds/260491769316643006/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://antonsemchenko.blogspot.com/2011/01/ilk-adimlar.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/260491769316643006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7933148804027728913/posts/default/260491769316643006'/><link rel='alternate' type='text/html' href='http://antonsemchenko.blogspot.com/2011/01/ilk-adimlar.html' title='İlk Adımlar (yazarlık)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>