{"id":28431,"date":"2025-08-29T19:00:27","date_gmt":"2025-08-29T16:00:27","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/"},"modified":"2025-08-29T19:00:27","modified_gmt":"2025-08-29T16:00:27","slug":"c-ve-sfml-ile-sifirdan-tetris-gelistirme","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/","title":{"rendered":"C++ ve SFML ile S\u0131f\u0131rdan Tetris Geli\u015ftirme"},"content":{"rendered":"<p>C++ ve SFML ile S\u0131f\u0131rdan Tetris Geli\u015ftirme<\/p>\n<p>Bu makale, C++ programlama dili ve SFML k\u00fct\u00fcphanesini kullanarak Tetris oyununu s\u0131f\u0131rdan nas\u0131l geli\u015ftirece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayacakt\u0131r.  Karma\u015f\u0131kl\u0131\u011f\u0131 ortadan kald\u0131rarak,  temelden ileri seviye konulara kadar geni\u015f bir yelpazede bilgi sunmay\u0131 hedeflemekteyiz.  \u00d6\u011frenme yol haritan\u0131z\u0131 belirleyerek,  tecr\u00fcbe seviyenize uygun b\u00f6l\u00fcmleri inceleyebilirsiniz.  Kod \u00f6rnekleri ve g\u00f6rsellerle desteklenen bu rehber, hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 olacakt\u0131r.<\/p>\n<h2>\u00d6\u011frenme Yol Haritas\u0131: Tetris&#8217;i S\u0131f\u0131rdan \u0130n\u015fa Etmek<\/h2>\n<p>Bu rehber, Tetris geli\u015ftirme yolculu\u011funu \u00fc\u00e7 a\u015famaya b\u00f6ler: Yeni Ba\u015flayan, Orta ve \u0130leri D\u00fczey.<\/p>\n<h3>Yeni Ba\u015flayan: Temel Kavramlar ve Kurulum<\/h3>\n<p>\u00d6ncelikle, C++ ve SFML&#8217;nin temellerini anlaman\u0131z gerekiyor.  C++&#8217;\u0131n temel veri tipleri (integer, float, boolean), de\u011fi\u015fkenler, d\u00f6ng\u00fcler (for, while), ko\u015fullu ifadeler (if, else if, else) ve fonksiyonlar gibi konulara hakim olmal\u0131s\u0131n\u0131z. SFML&#8217;nin ise pencere olu\u015fturma, olay i\u015fleme, grafik \u00e7izim ve metin i\u015fleme gibi temel fonksiyonlar\u0131n\u0131 \u00f6\u011frenmeniz gerekmektedir.  Bu a\u015famada, basit bir pencere a\u00e7\u0131p kapama, kare \u00e7izme gibi temel SFML uygulamalar\u0131 yaparak kendinizi geli\u015ftirebilirsiniz.  Daha fazla bilgi i\u00e7in <a href=\"https:\/\/fatihsoysal.com\">fatihsoysal.com<\/a> sitesindeki C++ ve SFML kaynaklar\u0131n\u0131 inceleyebilirsiniz.<\/p>\n<p>Kurulum a\u015famas\u0131nda, \u00f6ncelikle C++ derleyicisi (\u00f6rne\u011fin, g++ veya Visual Studio) ve SFML k\u00fct\u00fcphanesini bilgisayar\u0131n\u0131za kurman\u0131z gerekiyor.  SFML&#8217;nin websitesinden en g\u00fcncel s\u00fcr\u00fcm\u00fcn\u00fc indirip, derleyicinize uygun \u015fekilde kurulumunu tamamlay\u0131n.  Kurulumdan sonra, basit bir &#8220;Hello World!&#8221; program\u0131 yazarak kurulumun do\u011fru olup olmad\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz.<\/p>\n<h3>Orta Seviye: Tetris Oyun Alan\u0131 ve Bloklar\u0131n Olu\u015fturulmas\u0131<\/h3>\n<p>Bu a\u015famada, Tetris oyun alan\u0131n\u0131 olu\u015fturaca\u011f\u0131z.  Oyun alan\u0131n\u0131 bir 2 boyutlu dizi (veya vekt\u00f6r) ile temsil edebilir, her h\u00fccrenin dolu veya bo\u015f olup olmad\u0131\u011f\u0131n\u0131 bu dizi i\u00e7erisinde tutabiliriz.  Bloklar\u0131 ise farkl\u0131 \u015fekillerde (I, J, L, O, S, T, Z) temsil eden bir yap\u0131 (struct veya class) olu\u015fturaca\u011f\u0131z.  Her blo\u011fun konumunu, \u015feklini ve rengini bu yap\u0131 i\u00e7erisinde saklayabiliriz.  SFML&#8217;nin <code>RectangleShape<\/code> fonksiyonunu kullanarak, bloklar\u0131m\u0131z\u0131 ekranda g\u00f6rselle\u015ftirebiliriz.<\/p>\n<p>Bloklar\u0131n d\u00fc\u015f\u00fc\u015f mekani\u011fini uygulamak i\u00e7in, her bir blok i\u00e7in bir zamanlay\u0131c\u0131 kullanabiliriz.  Bu zamanlay\u0131c\u0131 belirli bir s\u00fcre sonra blo\u011fu bir a\u015fa\u011f\u0131 indirecektir. Oyuncunun sol, sa\u011f ve a\u015fa\u011f\u0131 y\u00f6n tu\u015flar\u0131yla blo\u011fu hareket ettirebilmesi i\u00e7in SFML&#8217;nin olay i\u015fleme mekanizmas\u0131n\u0131 kullanmal\u0131y\u0131z.  A\u015fa\u011f\u0131daki kod blo\u011fu, bir blo\u011fun konumunu g\u00fcncellemek i\u00e7in nas\u0131l kullan\u0131labilece\u011fini g\u00f6stermektedir:<\/p>\n<pre><code class=\"language-cpp\">\/\/ Blok yap\u0131s\u0131\nstruct Block {\n  int x, y;\n  int shape; \/\/ Blok \u015feklini temsil eden say\u0131\n  sf::Color color;\n};\n\n\/\/ Blo\u011fun konumunu g\u00fcncelleme\nvoid updateBlock(Block& block) {\n  block.y++;\n}<\/pre>\n<p><\/code><\/p>\n<h3>\u0130leri Seviye: \u00c7arp\u0131\u015fma Alg\u0131lama, Dizi Doldurma ve Oyun Skoru<\/h3>\n<p>Bloklar oyun alan\u0131n\u0131n alt\u0131na veya ba\u015fka bloklara \u00e7arpt\u0131\u011f\u0131nda, \u00e7arp\u0131\u015fma alg\u0131lama mekanizmas\u0131 devreye girmelidir.  Bu mekanizma, blo\u011fun konumunu kontrol ederek, bir \u00e7arp\u0131\u015fma olup olmad\u0131\u011f\u0131n\u0131 tespit eder.  \u00c7arp\u0131\u015fma durumunda, blok mevcut konumunda sabitlenir ve yeni bir blok olu\u015fturulur.  Oyun alan\u0131n\u0131n alt sat\u0131r\u0131n\u0131 kontrol ederek, dolu sat\u0131rlar\u0131 temizleme ve oyun skorunu g\u00fcncelleme i\u015flemleri yap\u0131lmal\u0131d\u0131r.  Bunun i\u00e7in, dolu sat\u0131rlar\u0131 tespit eden bir fonksiyon ve skoru g\u00fcncelleyen bir fonksiyon geli\u015ftirmeniz gerekecektir.  Bu a\u015famada, algoritma optimizasyonu ve performans iyile\u015ftirmeleri \u00f6nemli hale gelecektir.<\/p>\n<p>\u00d6rne\u011fin, dolu sat\u0131rlar\u0131 tespit etmek i\u00e7in, her sat\u0131r\u0131 tek tek kontrol edebilir ve t\u00fcm h\u00fccrelerin dolu olup olmad\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz.  E\u011fer t\u00fcm h\u00fccreler dolu ise, o sat\u0131r\u0131 temizleyebilir ve \u00fcst sat\u0131rlar\u0131 a\u015fa\u011f\u0131ya kayd\u0131rabilirsiniz.  Performans a\u00e7\u0131s\u0131ndan daha iyi bir \u00e7\u00f6z\u00fcm, her sat\u0131r i\u00e7in dolu h\u00fccre say\u0131s\u0131n\u0131 takip etmek ve dolu sat\u0131r say\u0131s\u0131n\u0131 do\u011frudan kontrol etmek olabilir.  Bu yakla\u015f\u0131m, daha az i\u015flem gerektirir ve oyunun performans\u0131n\u0131 art\u0131r\u0131r. <\/p>\n<h2>C++ ile Tetris Geli\u015ftirme: Ad\u0131m Ad\u0131m Uygulama<\/h2>\n<p>\u015eimdi, temel bir Tetris oyununu nas\u0131l olu\u015fturaca\u011f\u0131m\u0131za daha detayl\u0131 bakal\u0131m.  Bu b\u00f6l\u00fcmde, kod \u00f6rnekleri ve a\u00e7\u0131klamalar\u0131 ile Tetris geli\u015ftirme s\u00fcrecini ad\u0131m ad\u0131m ele alaca\u011f\u0131z.<\/p>\n<h3>1. Proje Kurulumu ve SFML Entegrasyonu<\/h3>\n<p>\u00d6ncelikle, bir C++ IDE (Integrated Development Environment) veya metin edit\u00f6r\u00fc ve derleyici (g++ veya Visual Studio) kurman\u0131z gerekmektedir.  Ard\u0131ndan, SFML k\u00fct\u00fcphanesini indirip projenize eklemeniz gerekmektedir.  Bu i\u015flem, k\u00fct\u00fcphane dosyalar\u0131n\u0131 projenizin include dizinine ekleyip, linkleme ayarlar\u0131n\u0131 yapmay\u0131 i\u00e7erir.<\/p>\n<h3>2. Oyun Penceresi ve Oyun Alan\u0131 Olu\u015fturma<\/h3>\n<p>SFML'nin <code>sf::RenderWindow<\/code> s\u0131n\u0131f\u0131n\u0131 kullanarak bir pencere olu\u015fturun.  Oyun alan\u0131n\u0131 2 boyutlu bir dizi veya vekt\u00f6r kullanarak temsil edin.  Her h\u00fccrenin boyutunu ve renklerini belirleyin.<\/p>\n<pre><code class=\"language-cpp\">#include <SFML\/Graphics.hpp>\n#include <vector>\n\nint main() {\n  sf::RenderWindow window(sf::VideoMode(800, 600), \"Tetris\");\n\n  \/\/ Oyun alan\u0131 (10x20)\n  std::vector<std::vector<int>> gameBoard(20, std::vector<int>(10, 0));\n\n  \/\/ Oyun d\u00f6ng\u00fcs\u00fc\n  while (window.isOpen()) {\n    \/\/ ...\n  }\n\n  return 0;\n}<\/pre>\n<p><\/code><\/p>\n<h3>3. Bloklar\u0131n Olu\u015fturulmas\u0131 ve Hareketi<\/h3>\n<p>Bloklar\u0131 temsil eden bir s\u0131n\u0131f olu\u015fturun.  Bloklar\u0131n \u015fekillerini, renklerini ve konumlar\u0131n\u0131 bu s\u0131n\u0131f i\u00e7inde saklay\u0131n.  Klavyeden gelen inputlar\u0131 kullanarak bloklar\u0131n hareketini kontrol edin. <\/p>\n<h3>4. \u00c7arp\u0131\u015fma Alg\u0131lama ve Sat\u0131r Temizleme<\/h3>\n<p>Bloklar\u0131n oyun alan\u0131n\u0131n kenarlar\u0131na veya di\u011fer bloklara \u00e7arpmas\u0131n\u0131 alg\u0131layan bir fonksiyon yaz\u0131n.  Dolu sat\u0131rlar\u0131 tespit edip temizleme ve puan\u0131 g\u00fcncelleme i\u015flemini ger\u00e7ekle\u015ftirin.<\/p>\n<h3>5. Oyun D\u00f6ng\u00fcs\u00fc ve G\u00f6r\u00fcnt\u00fcleme<\/h3>\n<p>Ana oyun d\u00f6ng\u00fcs\u00fc i\u00e7inde, bloklar\u0131 g\u00fcncelleyin, \u00e7arp\u0131\u015fmalar\u0131 kontrol edin, dolu sat\u0131rlar\u0131 temizleyin ve oyunu ekranda g\u00f6sterin.  <code>sf::Event<\/code> kullanarak kullan\u0131c\u0131 giri\u015flerini i\u015fleyin.<\/p>\n<h2>Performans Optimizasyonu ve \u0130leri Seviye Teknikler<\/h2>\n<p>Geli\u015ftirdi\u011finiz Tetris oyununun performans\u0131n\u0131 optimize etmek i\u00e7in \u00e7e\u015fitli teknikler kullanabilirsiniz.  \u00d6rne\u011fin, oyun alan\u0131n\u0131 temsil etmek i\u00e7in kullan\u0131lan veri yap\u0131s\u0131n\u0131n se\u00e7imini dikkatlice yapmal\u0131s\u0131n\u0131z.  2 boyutlu bir dizi veya vekt\u00f6r yerine, daha verimli bir veri yap\u0131s\u0131 kullanarak performans\u0131 art\u0131rabilirsiniz.  Ayr\u0131ca, gereksiz hesaplamalar\u0131 azaltmak i\u00e7in kodunuzu optimize etmeniz gerekmektedir.  \u00d6rne\u011fin, \u00e7arp\u0131\u015fma alg\u0131lamas\u0131 i\u00e7in kullan\u0131lan algoritmay\u0131 daha verimli bir algoritma ile de\u011fi\u015ftirerek performans\u0131 art\u0131rabilirsiniz.  Daha fazla bilgi i\u00e7in <a href=\"https:\/\/fatihsoysal.com\">fatihsoysal.com<\/a> adresini ziyaret edebilirsiniz.<\/p>\n<p>\u0130leri seviye teknikler aras\u0131nda, \u00e7ok i\u015f par\u00e7ac\u0131kl\u0131 programlama,  grafiksel optimizasyonlar (\u00f6rne\u011fin, sprite sheet kullan\u0131m\u0131) ve daha sofistike AI  (yapay zeka) uygulamalar\u0131 yer almaktad\u0131r. \u00c7ok i\u015f par\u00e7ac\u0131kl\u0131 programlama, oyunun farkl\u0131 b\u00f6l\u00fcmlerini farkl\u0131 i\u015f par\u00e7ac\u0131klar\u0131nda \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 sa\u011flayarak performans\u0131 art\u0131rabilir.  \u00d6rne\u011fin, grafiksel i\u015flemleri ve oyun mant\u0131\u011f\u0131n\u0131 ayr\u0131 i\u015f par\u00e7ac\u0131klar\u0131nda \u00e7al\u0131\u015ft\u0131rabilirsiniz.  Sprite sheet kullan\u0131m\u0131 ise, oyun grafiklerini tek bir g\u00f6r\u00fcnt\u00fcde birle\u015ftirerek \u00e7izim i\u015flemlerinin say\u0131s\u0131n\u0131 azalt\u0131r ve performans\u0131 art\u0131r\u0131r.   Daha geli\u015fmi\u015f bir Tetris oyunu i\u00e7in, yapay zeka kullanarak bilgisayara kar\u015f\u0131 oynama \u00f6zelli\u011fi ekleyebilirsiniz.  Bu \u00f6zelli\u011fi geli\u015ftirmek i\u00e7in, minimax algoritmas\u0131 gibi yapay zeka algoritmalar\u0131n\u0131 kullanabilirsiniz.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131: Vaka Analizi<\/h2>\n<p>Tetris geli\u015ftirirken kar\u015f\u0131la\u015f\u0131labilecek baz\u0131 ger\u00e7ek d\u00fcnya senaryolar\u0131n\u0131 ele alal\u0131m. \u00d6rne\u011fin, oyunun farkl\u0131 ekran \u00e7\u00f6z\u00fcn\u00fcrl\u00fcklerinde d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in, oyun alan\u0131n\u0131n boyutlar\u0131n\u0131 ve bloklar\u0131n\u0131n boyutlar\u0131n\u0131 ekran \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fcne g\u00f6re \u00f6l\u00e7eklendirmeniz gerekebilir.  Bunun i\u00e7in, ekran \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fcn\u00fc dinamik olarak alg\u0131layan ve oyun alan\u0131n\u0131 buna g\u00f6re ayarlayan bir sistem geli\u015ftirmeniz gerekmektedir. Bir ba\u015fka senaryo ise, oyunun farkl\u0131 i\u015fletim sistemlerinde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamakt\u0131r.  Bu i\u015flem, kodun farkl\u0131 i\u015fletim sistemleri i\u00e7in uyumlu hale getirilmesini gerektirir.  Ayr\u0131ca, oyunun farkl\u0131 donan\u0131m \u00f6zelliklerinde sorunsuz \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in, performans optimizasyonlar\u0131na dikkat etmeniz gerekmektedir.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Bu makalede, C++ ve SFML kullanarak Tetris oyununu s\u0131f\u0131rdan geli\u015ftirmenin temel ad\u0131mlar\u0131n\u0131 ve ileri seviye tekniklerini ele ald\u0131k.  Ad\u0131m ad\u0131m ilerleyerek, temel bir Tetris oyunundan daha geli\u015fmi\u015f \u00f6zelliklere sahip bir oyuna kadar geni\u015f bir yelpazede bilgi edindiniz.  Umar\u0131m bu rehber, sizlere C++ ve oyun geli\u015ftirme alan\u0131nda yeni ufuklar a\u00e7m\u0131\u015ft\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular:<\/h3>\n<ul>\n<li><strong>Soru 1:<\/strong> SFML'yi nereden indirebilirim?  <strong>Cevap:<\/strong> SFML'nin resmi web sitesinden indirebilirsiniz.<\/li>\n<li><strong>Soru 2:<\/strong> Oyunun performans\u0131n\u0131 nas\u0131l art\u0131rabilirim? <strong>Cevap:<\/strong> Veri yap\u0131lar\u0131 se\u00e7imi, kod optimizasyonu, \u00e7ok i\u015f par\u00e7ac\u0131kl\u0131 programlama gibi teknikleri kullanarak performans\u0131 art\u0131rabilirsiniz.<\/li>\n<li><strong>Soru 3:<\/strong> Oyunu farkl\u0131 ekran \u00e7\u00f6z\u00fcn\u00fcrl\u00fcklerinde nas\u0131l \u00e7al\u0131\u015ft\u0131rabilirim? <strong>Cevap:<\/strong> Oyun alan\u0131n\u0131n boyutlar\u0131n\u0131 ve bloklar\u0131n\u0131n boyutlar\u0131n\u0131 ekran \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fcne g\u00f6re \u00f6l\u00e7eklendirmeniz gerekmektedir.<\/li>\n<li><strong>Soru 4:<\/strong> Oyunun farkl\u0131 i\u015fletim sistemlerinde nas\u0131l \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirim? <strong>Cevap:<\/strong> Kodun farkl\u0131 i\u015fletim sistemleri i\u00e7in uyumlu hale getirilmesi gerekmektedir.  Platform ba\u011f\u0131ms\u0131z kod yazmaya \u00f6zen g\u00f6sterin.<\/li>\n<li><strong>Soru 5:<\/strong>  Bloklar\u0131n \u015fekillerini nas\u0131l tan\u0131mlayabilirim? <strong>Cevap:<\/strong> Her blok i\u00e7in bir dizi veya vekt\u00f6r kullanarak blok par\u00e7alar\u0131n\u0131n konumlar\u0131n\u0131 tan\u0131mlayabilirsiniz.  Bu diziler, blok \u015fekillerini temsil eder. <\/li>\n<\/ul>\n<p>Yazar: Fatih Soysal<\/p>\n","protected":false},"excerpt":{"rendered":"C++ ve SFML ile S\u0131f\u0131rdan Tetris Geli\u015ftirme Bu makale, C++ programlama dili ve SFML k\u00fct\u00fcphanesini kullanarak Tetris oyununu&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-28431","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C++ ve SFML ile S\u0131f\u0131rdan Tetris Geli\u015ftirme<\/title>\n<meta name=\"description\" content=\"Bu makale, C++ programlama dili ve SFML k\u00fct\u00fcphanesini kullanarak Tetris oyununu s\u0131f\u0131rdan nas\u0131l geli\u015ftirece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayacakt\u0131r. Karma\u015f\u0131kl\u0131\u011f\u0131 ortadan kald\u0131rarak, temelden ileri seviye konulara kadar geni\u015f bir yelpazede bilgi sunmay\u0131 hedeflemekteyiz. \u00d6\u011frenme yol haritan\u0131z\u0131 belirleyerek, tecr\u00fcbe seviyenize uygun b\u00f6l\u00fcmleri inceleyebilirsiniz. Kod \u00f6rnekleri ve g\u00f6rsellerle desteklenen bu rehber, hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 olacakt\u0131r.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C++ ve SFML ile S\u0131f\u0131rdan Tetris Geli\u015ftirme\" \/>\n<meta property=\"og:description\" content=\"Bu makale, C++ programlama dili ve SFML k\u00fct\u00fcphanesini kullanarak Tetris oyununu s\u0131f\u0131rdan nas\u0131l geli\u015ftirece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayacakt\u0131r. Karma\u015f\u0131kl\u0131\u011f\u0131 ortadan kald\u0131rarak, temelden ileri seviye konulara kadar geni\u015f bir yelpazede bilgi sunmay\u0131 hedeflemekteyiz. \u00d6\u011frenme yol haritan\u0131z\u0131 belirleyerek, tecr\u00fcbe seviyenize uygun b\u00f6l\u00fcmleri inceleyebilirsiniz. Kod \u00f6rnekleri ve g\u00f6rsellerle desteklenen bu rehber, hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 olacakt\u0131r.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-29T16:00:27+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"C++ ve SFML ile S\u0131f\u0131rdan Tetris Geli\u015ftirme\",\"datePublished\":\"2025-08-29T16:00:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/\"},\"wordCount\":1527,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/\",\"name\":\"C++ ve SFML ile S\u0131f\u0131rdan Tetris Geli\u015ftirme\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-08-29T16:00:27+00:00\",\"description\":\"Bu makale, C++ programlama dili ve SFML k\u00fct\u00fcphanesini kullanarak Tetris oyununu s\u0131f\u0131rdan nas\u0131l geli\u015ftirece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayacakt\u0131r. Karma\u015f\u0131kl\u0131\u011f\u0131 ortadan kald\u0131rarak, temelden ileri seviye konulara kadar geni\u015f bir yelpazede bilgi sunmay\u0131 hedeflemekteyiz. \u00d6\u011frenme yol haritan\u0131z\u0131 belirleyerek, tecr\u00fcbe seviyenize uygun b\u00f6l\u00fcmleri inceleyebilirsiniz. Kod \u00f6rnekleri ve g\u00f6rsellerle desteklenen bu rehber, hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 olacakt\u0131r.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C++ ve SFML ile S\u0131f\u0131rdan Tetris Geli\u015ftirme\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C++ ve SFML ile S\u0131f\u0131rdan Tetris Geli\u015ftirme","description":"Bu makale, C++ programlama dili ve SFML k\u00fct\u00fcphanesini kullanarak Tetris oyununu s\u0131f\u0131rdan nas\u0131l geli\u015ftirece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayacakt\u0131r. Karma\u015f\u0131kl\u0131\u011f\u0131 ortadan kald\u0131rarak, temelden ileri seviye konulara kadar geni\u015f bir yelpazede bilgi sunmay\u0131 hedeflemekteyiz. \u00d6\u011frenme yol haritan\u0131z\u0131 belirleyerek, tecr\u00fcbe seviyenize uygun b\u00f6l\u00fcmleri inceleyebilirsiniz. Kod \u00f6rnekleri ve g\u00f6rsellerle desteklenen bu rehber, hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 olacakt\u0131r.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/","og_locale":"tr_TR","og_type":"article","og_title":"C++ ve SFML ile S\u0131f\u0131rdan Tetris Geli\u015ftirme","og_description":"Bu makale, C++ programlama dili ve SFML k\u00fct\u00fcphanesini kullanarak Tetris oyununu s\u0131f\u0131rdan nas\u0131l geli\u015ftirece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayacakt\u0131r. Karma\u015f\u0131kl\u0131\u011f\u0131 ortadan kald\u0131rarak, temelden ileri seviye konulara kadar geni\u015f bir yelpazede bilgi sunmay\u0131 hedeflemekteyiz. \u00d6\u011frenme yol haritan\u0131z\u0131 belirleyerek, tecr\u00fcbe seviyenize uygun b\u00f6l\u00fcmleri inceleyebilirsiniz. Kod \u00f6rnekleri ve g\u00f6rsellerle desteklenen bu rehber, hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 olacakt\u0131r.","og_url":"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-08-29T16:00:27+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"8 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"C++ ve SFML ile S\u0131f\u0131rdan Tetris Geli\u015ftirme","datePublished":"2025-08-29T16:00:27+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/"},"wordCount":1527,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/","url":"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/","name":"C++ ve SFML ile S\u0131f\u0131rdan Tetris Geli\u015ftirme","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-08-29T16:00:27+00:00","description":"Bu makale, C++ programlama dili ve SFML k\u00fct\u00fcphanesini kullanarak Tetris oyununu s\u0131f\u0131rdan nas\u0131l geli\u015ftirece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayacakt\u0131r. Karma\u015f\u0131kl\u0131\u011f\u0131 ortadan kald\u0131rarak, temelden ileri seviye konulara kadar geni\u015f bir yelpazede bilgi sunmay\u0131 hedeflemekteyiz. \u00d6\u011frenme yol haritan\u0131z\u0131 belirleyerek, tecr\u00fcbe seviyenize uygun b\u00f6l\u00fcmleri inceleyebilirsiniz. Kod \u00f6rnekleri ve g\u00f6rsellerle desteklenen bu rehber, hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 olacakt\u0131r.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/c-ve-sfml-ile-sifirdan-tetris-gelistirme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"C++ ve SFML ile S\u0131f\u0131rdan Tetris Geli\u015ftirme"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/28431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=28431"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/28431\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=28431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=28431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=28431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}