‫Tekrar hoş geldiniz.
‫Ve bu videoda, biraz meydan okuyacaksınız ve tic tac toe yaratmalısınız.
‫Burada gördüğünüz gibi, sadece bir konsol oyunu, bir form oyunu ya da buna benzer bir şey değil, sadece bir konsol oyunu.
‫Burada görebileceğiniz gibi, dokuz değer veya dokuz alan ve oyuncu ile, birinci oyuncu daha sonra bir alan seçebilir, ikinci oyuncu
‫bir alan seçebilir ve bu böyle devam eder.
‫Örneğin, bir alanı var, bir giriyorum ve şimdi bir oh oluyor.
‫Yani bu sıfır değil, oh o zaman sıra ikinci oyuncuda ve ben beş gireceğim.
‫Şimdi beşin yerini bir x'in aldığını ve yalnızca görebildiğiniz sayıların hala mevcut olduğunu görebilirsiniz.
‫Diyelim ki birinci oyuncu olarak tekrar beşe girdim.
‫Bana yanlış giriş olduğunu söyleyecektir.
‫Lütfen başka bir alan kullanın.
‫Pekala, üç tane kullanacağım.
‫Diyelim ki ikinci oyuncu sadece sayı girilmesi gerektiğini anlamıyor ve sadece G ya da başka bir
‫şey giriyor.
‫Sonra "Lütfen bir numara girin" diyor.
‫Yanlış giriş, lütfen başka bir alan kullanın.
‫Değil mi?
‫Yani hala dönecek bir oyuncu.
‫Peki ne yapacak?
‫Kazanmaya çalışacak.
‫Yani bu çok yakın olacak.
‫İkinci oyuncu.
‫Kazanacak ve biz de seninle oynayacağız.
‫Arka arkaya üç orta yaptı ve oyunu sıfırlamak için lütfen herhangi bir tuşa basın.
‫Herhangi bir tuşa basacağım.
‫Ve öyleyiz.
‫Yeni bir turumuz var.
‫Bu yüzden bir sıfırlama işlevi de oluşturmalısınız.
‫Pekala, hepsi bu kadar.
‫Bunu inşa etmeye çalış.
‫İki DX dizisi kullanmanız gerekecek, switch ve case ve metotları ve son videolarda değindiğimiz birçok farklı
‫şeyi kullanmanız gerekecek.
‫Yani bu biraz zaman alacak ve sizin çözümünüz benimkinden çok farklı görünebilir.
‫Ve evet, genel olarak, eğer bir yere varamazsanız, eğer bu sizin için çok zorsa, endişelenmeyin.
‫Basitçe takip edebilir ve geçtiğim tüm adımları anlamaya çalışabilirsiniz ve yaptığım
‫her şeyi açıklayacağım.
‫Ancak en iyisi gerçekten kendi başınıza denemenizdir, çünkü kendi başınıza denediğinizde,
‫becerinizi çok fazla artıracak çözümler bulacaksınız, çünkü sadece yaparak en çok şeyi öğreneceksiniz ve sadece izleyerek o kadar çok
‫şey öğrenemeyeceksiniz.
‫Yani bu gerçekten önemli.
‫Hatalarla karşılaştığınız ve bunları kendiniz düzelttiğiniz sürece, işte o zaman öğrenme gerçekten devreye girer.
‫İşte bu yüzden kendiniz denemeniz gerçekten çok önemli.
‫Tamam.
‫Bu yüzden umarım videoyu şimdi duraklatır ve denersiniz ve bu biraz zaman alabilir.
‫Yani 5 dakika içinde işiniz bitmemeli.
‫Belki de haklısınız ve bunu yapabilirsiniz.
‫Ancak aksi takdirde, seçtiğiniz çözüme bağlı olarak bu işlem bir saatten fazla, hatta 2 saatten fazla
‫sürebilir.
‫Ve dediğim gibi, bu sorunu çözmenin birçok farklı yolu var.
‫Ve şu ana kadar öğrendiklerimize oldukça yakın olduğunu düşündüğüm bir tane var.
‫Yani hepimizin şimdiye kadar öğrendiği işlevselliği kullanıyor.
‫Yani çok yeni bir şey yok.
‫Ve evet, bu yüzden şimdi devam edip uygulamayı oluşturacağım.
‫Tamam.
‫Dediğim gibi, umarım bunu kendi başınıza yaratmayı denemişsinizdir.
‫Bu yüzden yeni bir proje dosyası oluşturacağım.
‫Proje.
‫Ve ben buna tic tac toe egzersizi diyeceğim.
‫Ve sonra bir kez daha bir konsol uygulaması olacak.
‫Tamam, şimdi kimde bir tane olduğunu ve bu tür şeyleri kontrol ettiğim karmaşık bir mantık yapmadan önce, çok basit bir
‫şekilde başlayacağım.
‫Önce oyun alanımızı oluşturacağım ve bununla konsol yazısını bile kastediyorum.
‫Bu yüzden yeni bir yöntem oluşturacağım ve buna public static void set field adını vereceğim ve bunu yalnızca ana yöntemim
‫içinde kullanabilmek için statik yapacağım.
‫Aksi takdirde, set alanını kullanmak için egzersiz yapmak üzere bir nesne oluşturmam gerekirdi.
‫Ancak statik hale getirmek tamamen iyidir.
‫Şimdi set field metodumun içinde, konsolun sağ satırını yazmam gerekiyor ve bu biraz şöyle
‫görünecek.
‫Yani tırnak işaretleri, bir sürü boş alan, sonra bir boru, bazı boş alanlar ve yine bazı boş alanlar.
‫Yani bu ilk satır.
‫Sonra sağ çizgiyi tekrar konsollayın.
‫Ayrıca bkz. W çift dokunuşunu da kullanabilirsiniz.
‫Bu daha hızlı versiyon ve ardından iki boş nokta veya boş alan ve yine bir boru.
‫Ve sonra burada yaptığım şey, sayıları görüntüleyebilmemiz için onu hazırlamak.
‫Ve görüntülemek istediğim sayılar nelerdir?
‫Bu, daha sonra kullanmamız veya daha sonra yaratmamız gereken bir şey.
‫Bu yüzden şimdilik sadece bir, iki ve üç diyeceğim.
‫Ancak daha sonra bunu değiştirmemiz gerekecek.
‫Bu yüzden sayıları değişkenlerle değiştirmek için bunu listeme ekleyeceğim.
‫Tamam.
‫Şimdi, buna benzer bir rol oluşturmam gerekiyor.
‫Ancak burada alt çizgi kullanacağım ve daha sonra bunun yeterli olmadığını veya iyi görünmediğini görürsek, bunu daha
‫sonra kolayca değiştirebiliriz.
‫Tamam.
‫Evet.
‫Hemen hemen bu kadar.
‫Bunu şimdi birden fazla kez yapmamız gerekiyor.
‫Aslında bunu kopyalayacağım.
‫Hepsini kopyalayacağım.
‫Ve işte buradayız.
‫Ve son olarak, bundan bir sıra daha.
‫Hepsi bu kadar olmalı.
‫Bir göz atalım.
‫Bu metoda set field diyelim ve konsolda nasıl göründüğüne bakalım.
‫Aslında konsolu çalıştırmamız gerekiyor, ancak kırmızı çizgi veya kırmızı tuş daha da iyi.
‫Hadi çalıştıralım.
‫Ve işte buradayız.
‫Henüz tam olarak yerleştirilmedi, o yüzden bir göz atalım.
‫Tamam.
‫Buradaki tek sorun beş taneye ihtiyacım olması.
‫Puan mesafesi.
‫Yani beş boş yer var.
‫Aynısından.
‫Bir, iki, üç, dört, beş.
‫Bu çok iyi.
‫Şimdi bunu kullanalım ve bunun olduğu satırları değiştirelim.
‫Yani burada biraz test var, bilirsiniz, iyi görünmesini sağlamakla ilgili ve bazı testler
‫söz konusu.
‫Bu yüzden aynı yaklaşımı burada da kullanacağım ve bu iki satırı kopyalayıp yerlerini değiştireceğim.
‫Pekala, şimdi burada, her iki yönde de iki tane olmalı.
‫Hadi test edelim.
‫Ve işte buradayız.
‫Şimdiden çok daha iyi görünüyor.
‫Bir, iki, üç.
‫Dediğim gibi, bu numaralar daha sonra değiştirilmelidir.
‫Ama sahayı zaten bu şekilde ayarlayabiliriz.
‫Dolayısıyla, bunun daha sonra alanı sıfırlamamıza zaten yardımcı olacağını düşünebilirsiniz.
‫Tamamdır.
‫Şimdi, bunu elde ettiğimize göre, alanı gerçekten oluşturmamız gerekiyor.
‫Ve oyun alanı, programlama açısından bir alan olmalı, oyun alanını yaratmalıdır.
‫Ve yapacağı şey statik ya da aslında oyun alanı yaratmak değil, ama oyun
‫alanı statik karakter olacak.
‫Yani burada tam sayılar veya dizeler de kullanabilirsiniz.
‫Ancak karakterler, kaynak açısından en verimli olanlardır.
‫Bir oyun alanı çağıracağım ve burada farklı sıralara ihtiyacım var.
‫Yani bir, iki ve üç ile bir sıra ve sonra bir
‫sonraki ile aynı şey.
‫Yani dört, beş, altı ve diğerleri.
‫Bu yüzden bir saniye içinde numaraları değiştireceğim.
‫Yani bu dört, beş, altı, yedi.
‫Aslında, bu yedi, sekiz ve dokuz.
‫İşte buradayız.
‫Burası bizim oyun alanımız.
‫Şimdi yapmamız gereken şey, buradaki sayıları buradaki oyun alanıyla değiştirmek.
‫Genel olarak oyun alanımız başlangıçta bu şekilde görünmelidir ve daha sonra buradaki sayıları değiştirmek
‫istiyoruz.
‫Kullanıcı tarafından.
‫Tamam.
‫Yani burada bir yerine kullandığımız şey aslında belirli bir pozisyondaki bu oyun alanıdır.
‫Yani aslında burada o kısımdan kurtuluyoruz.
‫Şimdi biraz daha iyi görmeniz gerekiyor.
‫Yani bu oyun alanı ve oyun alanının sıfır, virgül sıfır konumunda olması gerekiyor.
‫Tamam.
‫Ve şimdi aynı şeyi ikisi için de yapıyoruz.
‫Yani sıfır, virgül bir ve sıfır virgül iki.
‫İkinci sırada ise bir sıfır, bir, bir ve bir, iki var.
‫Bunun ne anlama geldiğinden emin değilseniz.
‫Yani bu sıfırıncı sıra.
‫Bu birinci sıra.
‫Ve bu da ikinci sıra.
‫Evet.
‫Bu Rosie Rowe.
‫İşte, o zaman bu gerçek bir tane.
‫Şimdi de aynı şeyi ikinci satır için yapmamız gerekiyor.
‫Yani bu iki sıfır olacak.
‫Bu iki tane olacak.
‫Ve son olarak, iki, iki, iki, iki.
‫Şimdi tekrar başlayalım.
‫Ve yine aynı sonucu elde etmeliyiz.
‫İşte buradayız.
‫Bir, iki, üç, vesaire.
‫Harika.
‫Yani şimdi oyun alanımız ya da oyun sahamız hazır.
‫Şimdi kullanıcı girdisini nasıl alabileceğimizi kontrol edelim.
‫Bu nedenle ihtiyacımız olan şey yaratmaktır.
‫Oyuncumuz olacak bir değişken.
‫Diyelim ki birinci oyuncuyla başladık.
‫Bu yüzden iki oyuncu olarak ayarladık ve daha sonra bunun neden iki olarak ayarlanmasının mantıklı olduğunu göreceksiniz.
‫Sonra kullanıcı girdisine ihtiyacımız var ve girdi sıfırdır ve bunu sıfır olarak ayarlayacağım çünkü buradaki alanların
‫hiçbiri sıfır değildir.
‫Bu yüzden sıfır kullanarak kullanmak burada harika.
‫Ve son olarak, girdinin doğru olup olmadığını kontrol eden bir boolean'a ihtiyacımız var, çünkü doğru
‫değilse, oyuncuyu bilgilendirmek ve doğru girdiyi almaya çalışmak istiyoruz.
‫Pekala.
‫Şimdi elimizde büyük ya da çok uzun bir do while so do oluşturmamız gerekiyor.
‫Ve birçok satırdan sonra vahşi bir ifadeye sahibiz.
‫Ve burada sadece kullanacağım.
‫Doğru.
‫Neden do ile true kullanıyorlar.
‫Çünkü kullanıcının oyunuma her zaman bir şeyler girebilmesini istiyorum.
‫Ve bu durumda burada otomatikleştirilmeyecek bazı kodlar çalıştırıyorum.
‫Kullanıcı girdisine bağlıdır.
‫Yani bu sonsuz bir döngü değil, ama oyunu oynadığımız sürece her zaman doğru olacak.
‫İşte bu yüzden bir süre yapmamız gerekiyor.
‫Doğru.
‫Tamam.
‫Daha sonra kontrol etmemiz gereken şey, oynaması gereken kişi birinci oyuncu mu yoksa ikinci oyuncu mu, yani
‫sıra kimde?
‫Oyuncu ikiye eşitse, oyuncuyu bir olarak ayarlayın ve diğer.
‫Aslında burada başka bir şey kullanabiliriz.
‫Oyuncu ikiye eşittir, bu nedenle ya els kullanabilir ya da bizim durumumuzda oyuncunun yalnızca iki değeri olabiliyorsa else kullanabilirsiniz.
‫Ancak bir şeyler ters gider ve bir nedenle oyuncu ikiye çıkarılırsa, o zaman her zaman olacak veya artacaktır.
‫Ve bu sorun her zaman iki oyuncu arasında yaşanacak.
‫Bu yüzden, eğer oyuncu bire eşitse, ikinci oyuncuya geçileceğinden emin olacağım.
‫Şimdi, sıranın kimde olduğuna bağlı olarak bir switch case deyimi çalıştırmam gerekiyor.
‫O yüzden oyuncu değiştir diyeceğim.
‫Sıranın kimde olduğuna bağlı olarak, biraz kod çalıştıralım.
‫Diyelim ki dava bir.
‫Yani sıra oyuncuda.
‫Ve aslında, buraya biraz kod eklememe izin verin.
‫Kodu şu kadar süre çalıştırın.
‫Program çalışıyor.
‫Eğer oyuncu tek kıçlıysa, ne yapmak istiyoruz?
‫Kontrol etmek istiyoruz.
‫Neye girdi?
‫Ve numarayı atayın.
‫O numaraya X atayın.
‫İşte burada oyun alanımız var.
‫Yani bu bir, iki, üç.
‫Ve şimdi istediğim şey, eğer oyuncu bir ise, o zaman bunun bir X ile değiştirilmesini istiyorum.
‫Örneğin bir tanesine girerse.
‫Bunu yapmak için burada başka bir switch oluşturuyorum, switch input çünkü girdiye bağlı olarak bu durumu kontrol
‫etmek istiyorum.
‫Bir Yani oyuncu bir oyuncuya mı girdi yoksa sıfır pozisyonunda oyun alanına mı girdi sıfır bir x ile değiştirilmeli
‫ve sonra kırmak istiyoruz.
‫O zaman işimiz bitti.
‫Bu arada burada hala şikayet ediyor.
‫Bunun nedeni, buradaki anahtar döngüsünden çıkmamamız ve şimdi çıkmamız ve şimdi mutlu olmamızdır.
‫Bu yüzden oyun alanını bir x ile değiştiriyorum ve burada şikayet ediyor çünkü string kullandım ve çalıştığından
‫emin olmak için şimdi CHA kullanıyorum.
‫Gördüğünüz gibi geçmiş bir kesme işareti.
‫Karakterler için oradalar ve bildiğiniz gibi oyun alanında çok sayıda karakter var.
‫Yani 2 boyutlu bir karakter dizisi.
‫Bu yüzden bu şekilde kullanmam gerekiyor.
‫Tamam.
‫Bu birinci vaka için.
‫Şimdi de aynı şeyi elimizdeki farklı vakalar için yapmam gerekiyor.
‫Peki ikinci vaka için, orada neye ihtiyacımız var?
‫Vaka üç bir için sıfır bire ihtiyacımız var.
‫Aslında dördüncü vaka için sıfır iki durumundayız.
‫Bir sıfır olmalı.
‫Beşinci vaka.
‫Bir ve bir.
‫Burada ne yaptığımdan emin değilseniz, tekrar kontrol edin.
‫Roe sıfır.
‫Yani burası sıfırıncı pozisyon.
‫Bu pozisyon sıfır bir, bu pozisyon sıfır iki ve bu şekilde devam eder.
‫Yani burada yaptığım şey bu.
‫Bu yüzden onları doğru değerlerle değiştiriyorum.
‫Yani yedi iki ve sıfırda, sekiz iki ve birde ve dokuz iki ve ikide.
‫Yani öyle olacak.
‫Birinci oyuncu bir değer girerse ne olur?
‫Ve her zaman bir X ile değiştirecek.
‫Şimdi yapabileceğimiz şey, tüm bu kodu kopyalamak ve aynı şeyi ikinci oyuncu için yapmak, değil mi?
‫Yani diyebiliriz ki, tamam, bunu kopyalayalım ve sonra ikinci oyuncu için çalıştıralım.
‫Aslında, bunun neden en iyi yaklaşım olmadığını görmeniz için size bunu göstereceğim.
‫Bu yüzden buraya bir vaka daha ekleyeceğim.
‫Case, bu iki.
‫Ve şimdi bizim de bundan kurtulmamız gerekiyor.
‫Yani aslında bu ara burada.
‫Burada olmalı ve burada da mola vermeliyiz.
‫Ve başka bir switch durumumuz var, bu yüzden bu kodu buraya kopyalayabilirim ve buraya yapıştırabilirim.
‫Ancak basitçe kontrol eden bir yöntem oluşturmanın daha güzel bir yolu var.
‫Oyuncu bir mi yoksa oyuncu iki mi, aslında sadece bir X veya O döndürecektir.
‫Şimdi devam edelim ve bu yöntemi oluşturalım.
‫Public static void, x veya O girin.
‫Basit tutacağım.
‫Ve burada ihtiyacım olan şey bir tamsayı.
‫Bu yüzden bir tamsayıya ihtiyacım var ve bunu bir oyuncu olarak adlandıracağım.
‫Şimdi yapacağım şey, bu kodu buradan kesip çıkarmak.
‫Bu yüzden ifadeyi değiştirin, bunu burada keseceğim ve artık burada buna ihtiyacım olmayacak.
‫Yine de oyuncuya ihtiyacım olacak.
‫Ve yapacağım şey yeni bir karakter yaratmak olacak.
‫Oyuncu işareti ve bunu şimdilik boş bir işaret veya boş olmayan boş bir karakter olarak ayarlayacağım.
‫Ve burada bir boşluk var.
‫Şimdi eğer oyuncu bire eşitse, o zaman aslında bunu burada tek bir satırda yapabiliriz.
‫Oyuncu işareti olacak.
‫X.
‫Aksi takdirde, bir oyuncu ikiye eşitse, oyuncu işareti bu durumda y veya o olacaktır.
‫Ve şimdi.
‫Kullanıcı girdisine de ihtiyacımız var.
‫Bu yüzden girdiye ihtiyacım olacak.
‫Peki giriş ne tür bir girişti?
‫Girdi bir tamsayıydı, değil mi?
‫Bu yüzden burada int input kullanacağım ve şimdi buradaki X'i oyuncu tarafıyla değiştiriyorum.
‫Tamam.
‫Şimdi yapabileceğimiz şey, buradaki sahil kodunu iki kez çalıştırmak yerine bu yöntemi kullanabiliriz.
‫Pekala, artık bu yönteme sahip olduğumuza göre, switch case'e ihtiyacımız bile kalmadı çünkü
‫burada zaten bir oyuncumuz var.
‫Yani oyuncu bir diyoruz ve sonra kodu burada çalıştırabiliyoruz.
‫Hadi yapalım şunu.
‫Oynatıcıyı buraya ayarlayalım.
‫Ve burada biraz daha uzun bir metne sahip olduğumuz için, küme parantezlerini kullanmamız gerekiyor ya da çalıştırmak
‫istediğimiz çok satırlı bir kodumuz var.
‫Bu yüzden bu işe girmemiz gerekiyor.
‫Tamam.
‫Şimdi devam edebilirim ve buradaki tüm switch case ifadesinden kurtulabilirim ve burada yalnızca yöntemimi
‫çağırmam gerekir.
‫Yani çağrı yönteminin adı x veya O girin idi ve burada önce oyuncu X veya O girin diyecek.
‫Pekala, oyuncu ve ardından giriş olacak ve bu da giriş olacak.
‫Bu yüzden sadece oyuncu ve girdinin burada elde etmek istediğim şey olduğunu söylüyorum.
‫Ben de aynı şeyi oyuncu için yapıyorum.
‫Ve bunun yapacağı şey basitçe X veya O olarak ayarlamak olacaktır.
‫Ve kodu benim için düzgün bir şekilde çalıştıracak.
‫Bu arada, bu Tudou'dan kurtulabiliriz çünkü onu zaten değiştirdik, yani artık ona
‫ihtiyacımız yok.
‫Tamam.
‫Şimdi kullanıcı girdisini kontrol edelim çünkü bunu henüz yapmıyoruz.
‫Bu yüzden burada başka bir do while do while oluşturmak istiyorum.
‫Peki bu süre ne kadar?
‫Peki durum nedir?
‫Doğru girdi yanlıştır.
‫Girdi yanlış olduğu sürece devam etmek ve tekrar denemek istiyorum.
‫Bu yüzden burada oyuncudan kodunu girmesini ve evet, devam etmesini isteyeceğiz.
‫Şimdi bu konsola gireceğim.
‫Doğru.
‫Ve sıfır pozisyonundaki oyuncu.
‫Yani sıra hangi oyuncuda ise alanınızı seçin ve şimdi kullanıcının girdisini almamız gerekiyor.
‫Bu yüzden input convert to int 32 kullanacağım ve console dot read line kullanacağım.
‫Bu yüzden kullanıcının girişini almak ve bunu bizim girişimize dönüştürmek istiyorum.
‫Yani bu dizeyi kullanacak ve ondan bir tamsayı oluşturup girişte saklayacak.
‫Ve şimdi devam edip girdi kullanabiliriz, ancak burada zaten girdi kullanma şeklimiz var, ancak bu bir do while döngüsü
‫olduğu için sorun değil.
‫Böylece bu girdiye ulaşacak ve ben de girdiğimiz girdiyle değiştireceğim.
‫Yani önce sıfır olacak, sonra tekrar kontrol edecek ve ardından girdiğimiz değer
‫olacak.
‫Tamam.
‫Yani buradaki anahtarımız bu olacak.
‫Ve şimdi çalıştıralım.
‫Bakalım neler olacak.
‫Tamam.
‫Böylece biz varız ve az önce yazdığımız metni göstermiyor.
‫Yani tüm bu satır.
‫Doğru.
‫Ama enter tuşuna basarsam, o zaman görünüyor.
‫Bunun nedeni de okuma anahtarının hala burada olması.
‫Bu yüzden alan okuma anahtarını ayarlayın.
‫Programımızda ya da oyunumuzda neler olduğunu görebilmemiz için bunu daha önce yapmıştık.
‫Ve eğer şimdi ondan kurtulursam, iyi olacağız.
‫Evet.
‫Oyuncu bir Alanınızı seçin ve örneğin sadece bir tane gireceğim, şimdi Oyuncu alanınızı
‫seçin diyor ve ben bu farklı alanları kullanacağım.
‫Şimdi henüz gerçekleşmeyen şey, metnimizin henüz güncellenmemiş olması.
‫Yani bu, ilgilenmemiz gereken bir şey.
‫Şimdi, bunu yapmak için konsolumuzu temizlememiz gerekiyor.
‫Yani burada console dot clear gerçekleşecek ve şimdi yapmamız gereken şey, bu do döngüsünde olduğumuz her seferinde
‫alanımızı ayarlamak.
‫Bu yüzden set alanı main içinde sadece bir kez çalıştırılmamalı, do döngüsü içinde olduğumuz
‫her seferde çalıştırılmalıdır.
‫Bu da basitçe alanı buraya ayarlayacağımız anlamına gelir.
‫Şimdi tekrar çalıştıralım.
‫Kelime lütfen alanınızı seçin ve ben sadece altı diyelim kullanacağım.
‫Şimdi dönme zamanı, dördü girelim ve şimdi altının aniden girildiğini görebiliriz.
‫Bir dahaki sefere bir şey girdiğimde dört tane girilmesi gerekiyor ve işte buradayız.
‫Dolayısıyla, geç güncellenmesinin kullanıcı girdikten sonra güncellenmemesi, ancak daha sonra güncellenmesi
‫sorunumuz devam ediyor.
‫Şimdi bunu nasıl çözebileceğimizi kontrol edelim.
‫Bunun nedeni de Set Field'ın oyuncuyu kontrol etmeden önce olmasıdır.
‫Hadi yapalım şunu.
‫Şimdi oyuncuyu kontrol ediyoruz ve sonra set alanını yapıyoruz.
‫Şimdi tekrar çalıştıralım.
‫Bakalım, bir alan seçelim.
‫Beş numaralı alanı seçeceğim ve şimdi sıfır olduğunu görüyoruz ya da aslında oh şimdi
‫ikinci oyuncu altıyı seçecek, bu bir X.
‫Şimdi üç O olacak, iki X olacak ve bu böyle devam edecek.
‫Yani bu işlevselliğe sahibiz.
‫Ancak hala eksik olan şey, kullanıcının izin verilen bir şeyi girip girmediğini kontrol etme yeteneğidir.
‫Çünkü hala yapabileceğim şey geçersiz kılmak.
‫Diyelim ki birinci oyuncu bunu tekrar seçmek için bir oyuncu seçti.
‫Şimdi görebileceğiniz gibi O'dan X'e koştu.
‫Yani birinci oyuncu diyecek ki, tamam, şimdi bu alana sahip olmak istiyorum, böylece onu girecek.
‫Şimdi yapmamız gereken şey, bir oyuncunun zaten bir şey girip girmediğini kontrol etmemiz ve girdiyse,
‫diğer oyuncunun bu alanı geçersiz kılmasına izin vermesini veya izin verilmesini istemememizdir.
‫Yani bu do while döngüsünde yapmamız gereken bir şey çünkü burada girdinin doğru olup olmadığını
‫kontrol ediyoruz ve kullanıcı doğru bir değer girmediyse girdiyi yanlış olarak ayarlayabiliriz.
‫Bu arada, hazır başlamışken, burada yaşadığımız bir sorunu da çözebiliriz.
‫Diyelim ki bir G girersem, programım çöküyor.
‫Dolayısıyla, bir hata oluşturan bu girdiye sahibim, bu yüzden bunu bir try ve catch ile alabiliriz, böylece sorunu bir
‫try catch ile çözebiliriz.
‫Ve bu çok, çok basit bir yakalama denemesi olacak.
‫Bu yüzden konuyu daha karmaşık hale getirmeyeceğim.
‫Ve yapacağım tek şey.
‫Konsolun sağ satırına yazacağım.
‫Lütfen bir numara girin.
‫Yani şimdi birisi bunu tekrar yaparsa, herhangi bir şey gireceğim.
‫Henüz çökmüyor, ancak daha sonra sıfırlandığı için konsola da yazmıyor.
‫Yoksa değil mi?
‫Evet, hemen hemen sıfırlanıyor çünkü burada bir çıkış ifadesi istemiyoruz.
‫Şimdi yapmamız gereken şey, en azından o oku düzeltmek.
‫Şimdi girişin bir ve oyun alanı olup olmadığını kontrol etmemiz gerekiyor.
‫O pozisyonda.
‫Yani sıfırda, yani bir konumunda, hala bir karakteri vardır ve burada başka bir paranteze ihtiyacımız vardır.
‫Demek durum bu.
‫Ardından girişi ayarlayın.
‫Doğru.
‫Doğruya.
‫Ve şimdi aynı şeyi sahip olduğumuz her bir alan için yapmamız gerekiyor.
‫Aksi takdirde, girdi ikiye eşitse ve oyun alanı o sahada o konumda hala açıksa, sıfır
‫olacaktır.
‫Bir hala iki.
‫O zaman lütfen devam edin ve girişi ayarlayın.
‫Doğruya doğru.
‫Ve burada bir eşittir işaretini daha kaçırıyorum.
‫Her bir vakayı yakalayabilmemiz için şimdi birden çok kez kopyalayıp yapıştırmamız gereken şey budur.
‫Yani üç, dört, beş, altı.
‫Ve burada.
‫Burada bir hatayla karşılaştım.
‫Yedi.
‫Sekiz.
‫Ve dokuz.
‫Ve şimdi, elbette, bu pozisyonları burada da değiştirmem ve bu karakterleri ayarlamam gerekiyor.
‫Yani yedi, sekiz, dokuz.
‫Şimdi elimizde üç tane a02 var.
‫Dört bir sıfırdaydı.
‫Sonra beş 1111'deydi aslında altı bir ikideydi.
‫O bir 20'ydi.
‫İki bir ve iki ikide.
‫Yani şimdi her şey yolundayken tüm doğru durumlara sahibiz ve şimdi burada bir LS'ye ihtiyacımız var.
‫Yani başka bir şey doğru değil.
‫Bu yüzden kullanıcıyı bu konuda bilgilendirmek istiyoruz.
‫Yani konsol nokta sağ satır yeni bir satır yanlış giriş.
‫Lütfen başka bir alan kullanın ve doğru girdinin yanlış olarak ayarlandığından da emin olabiliriz.
‫Yani aslında burada yapabileceğimiz şey bir bölge oluşturmak.
‫Bu yüzden o bölgeyi arayacağım ve bitecek.
‫Bu parçadan hemen sonra burada ve bölgede.
‫İzin verin yapayım.
‫Şimdi de bu bölgenin ne yaptığı hakkında bilgi vermek istiyorum.
‫Ve bir alanın zaten alınmış olup olmadığını test ediyor veya sınıyor, çünkü tüm bu bölgenin arkasındaki veya burada sahip olduğumuz
‫tüm bu do while kodunun arkasındaki fikir bu, tamam, bu alan alınmış mı değil mi?
‫Eğer alındıysa, başka bir şey yapın.
‫Eğer alınmadıysa, devam edin.
‫Şimdi tekrar çalıştıralım.
‫Bakalım.
‫Birinci oyuncu bir tane kullanır.
‫İkinci oyuncu bir tanesini tekrar kullanmaya çalışır ve yanlış giriş olduğunu söyler.
‫Lütfen başka bir alan kullanın.
‫O yüzden iki tane kullanıyor.
‫Şimdi bunu kullanalım.
‫Tamam.
‫Gördüğünüz gibi, farklı değerleri kolayca girebiliyorum ve her şey yolunda görünüyor.
‫Ancak sizin de görebileceğiniz gibi, birinci oyuncu zaten iki kez kazandı, bu yüzden burayı geçti.
‫Bu yüzden bir sonraki kontrol etmemiz gereken şey bu.
‫Bu yüzden bir kazanan olup olmadığını kontrol etmemiz gerekiyor.
‫Ve yeni bir bölge oluşturalım.
‫Kazananı kontrol ettiğimiz set alanının hemen altında.
‫İşte yeni bölge.
‫Ve bölgeyi doğrudan ve bölgeyi bitireceğim.
‫Ve burada tüm kod kontrol kazanma koşuluna sahip.
‫Peki bunu nasıl yapacağız?
‫Farklı oyuncuların hangi karakterlere sahip olduğunu kontrol etmemiz gerekiyor.
‫Biz de bu oyuncuya imza attırdık.
‫Bir oyuncu için X, iki oyuncu için O.
‫Şimdi kontrol etmemiz gereken şey.
‫Ya da aslında doğru yol bu muydu?
‫Evet.
‫Birinci oyuncu için X ise, ikinci oyuncu için O'dur.
‫Yani bunlar doğru karakterler.
‫Burada kontrol etmemiz gereken şey ya bir dizi ile kullanacağım ya da bir dizi ile yapacağım.
‫Oyuncu karakterleri bir X ve bir O'dur.
‫Ve şimdi oyuncu karakterlerindeki her bir oyuncu karakteri için sahip olduğum her karakter için kazanma koşulunu kontrol etmek istiyorum.
‫Yani bunun yapacağı şey, bir X için doğru olup olmadığını veya bir O için doğru olup olmadığını kontrol etmektir.
‫Yani burada basitçe kontrol ediyoruz, tamam, birinci oyuncu mu kazanıyor yoksa ikinci oyuncu mu?
‫Bunu da oyun alanı sıfırın oyuncu karakterine eşit olup olmadığını kontrol ederek yaparız.
‫Ve Playfield sıfır
‫bir.
‫Oyuncu karakterine eşittir ve ayrıca sıfır ikideki oyun alanı oyuncu karakterine eşittir.
‫Eğer durum buysa, devam edin ve biraz kod çalıştırın.
‫Bu yüzden buraya şimdilik şöyle bir şey yazacağım, bakalım bir kazananımız var mı?
‫Pekala, çok çok daha uzun olan if deyiminin tamamını yazmadan önce bunu test etmek istiyorum.
‫Yani birinci oyuncu ilk sırayı kazanacak çünkü burada girdiğimiz tek sıra bu.
‫Dolayısıyla, bu satırdaki üç alan için de karakterin aynı olması durumunda.
‫Bir kazananımız var.
‫Yani burada ayarladığımız hemen hemen tek şey bu.
‫O yüzden diyeceğim ki, tamam, birinci oyuncu bir olacak.
‫İkinci oyuncu birinci oyuncu için iki, beş ve üç olacak ve kazanan belli olacak.
‫İlk satırın sıfırlarla ya da Oh'larla dolu olduğunu görüyorsunuz, yani bir kazananımız var.
‫Ve şimdi yapmamız gereken şey, bunu sahip olabileceğimiz tüm farklı koşullarla değiştirmemiz gerekiyor.
‫Yani tüm farklı pozisyonlarla ve oyuna bakarsanız, sadece tekrar açacağım.
‫Olası kazanma koşulları bir, iki, üç, dört, beş, altı, yedi, sekiz, dokuz şeklindedir.
‫O zaman 753159147258 ve 369 var.
‫Yani bir, iki, üç var.
‫Yani altı.
‫Artı iki.
‫Yani bir kazananımızın olduğu sekiz farklı koşulumuz var ve burada yapmamız gereken de aşağı yukarı
‫bu.
‫Bu yüzden bunu farklı seçeneklerle sekiz kez oluşturmamız gerekiyor.
‫O yüzden bunu burada keseceğim.
‫Ve her seferinde bir veya işareti kullanmamız gerekir çünkü bunlar veya kazanma koşullarıdır.
‫O yüzden bunu altı kez daha yapacağım.
‫Yani bir, iki, üç, dört, beş, altı, yedi, sekiz var.
‫Bu çok iyi.
‫Ve şimdi, dediğim gibi, farklı koşullar sıfır, sıfır ve benzeridir.
‫Şimdi bir bir, 011 ve bir iki ile aynı şey ve sonra üçüncü bir sıra 222021 ve iki iki, sonra yukarıdan aşağıya
‫doğru giden yatay olanlarımız var.
‫Yani sıfır sıfır, sonra bir sıfır ve iki sıfır.
‫O zaman elimizde.
‫Bir ve bir, aslında.
‫Sıfır ve bir.
‫Üzgünüm, sıfır bir.
‫On bir bir ve 1202, iki, bir ve iki, iki.
‫Ve şimdi de çapraz olanlar var.
‫Yani sıfır sıfır.
‫O zaman sıfırdan kontrol edeyim.
‫Sonra bir, bir ve iki, iki.
‫Ve son olarak, elimizde.
‫Bir, iki, bir, bir.
‫Ve.
‫İki sıfır.
‫Yani sahip olduğumuz sekiz koşul bunlar olmalıdır.
‫Ve şimdi sadece kimin bir tane olduğunu kontrol etmemiz gerekiyor.
‫Burada kontrol ettiğimiz şey bu uzun ifade.
‫Eğer.
‫Oyuncu, karakter veya oyuncu karakteri bir x'e eşittir.
‫İkinci oyuncuda bir tane olduğunu biliyoruz.
‫Yani konsol kırmızı çizgi yeni bir çizgi oyuncu iki bir tane var.
‫Ve burada aslında bu şekilde çok dikkatli olmam gerekiyor.
‫Tamam.
‫Yani bu tek vaka.
‫Diğer durumda ise diğer oyuncuda bir tane vardır.
‫Bu yüzden burada ls kullanacağım ve oyuncu 1'de bir tane olduğunu söyleyecek.
‫Ben de burada oyunun dışına çıkmak istiyorum.
‫O zaman buraya gir.
‫Şimdi çalıştıralım ve bunu gerçekten yeniden üretip üretemeyeceğimize bakalım.
‫Diyelim ki diyagonal olana sahip olmak istiyoruz.
‫Yani bir, iki, beş, üç, dokuz ve birinci oyuncunun bir tane olduğunu görüyoruz.
‫Şimdi istediğimiz şey oyunu sıfırlamak ve yeni bir tur oluşturmaya izin vermek.
‫Böylece oyuncu tekrar koşabilmeli ve tekrar oynayabilmelidir.
‫Ayrıca henüz beraberlik konusunu ele almadık, dolayısıyla beraberlik konusunu da ele almamız gerekiyor.
‫Ama önce, bir kazananımız olduğunda sahayı sıfırlayalım.
‫Yapmak istediğim şey, ayrılmadan önce alanı sıfırlamak.
‫Yani burada alanı sıfırlamak ve bir alanı ayarlamak için zaten bunun için bir fonksiyonumuz veya bir metodumuz var.
‫Tam da bunu yapan bu set field yöntemini oluşturduk.
‫Sahayı bir kez daha belirliyor.
‫Ancak henüz yapmadığı şey, oyun alanımızı sıfırlamaz çünkü oyun alanımız şu anda belirli bir değere ayarlanmıştır.
‫Yani bu bir X olabilir, bu bir O olabilir ve benzeri.
‫Dolayısıyla, her zaman sıfırlayabildiğimizden emin olmak için bunu kopyalamamız gerekir.
‫Ve bu standart versiyon ve ben buna oyun alanı başlangıcı diyeceğim.
‫Yani başlangıçta bu şekilde ve sürekli olarak geçersiz kıldığımız şey bu.
‫Şimdi sıfırlama işlemini yapacak başka bir yönteme ihtiyacımız var.
‫Ve sıfırlama yöntemi public static void reset field olarak adlandırılacaktır.
‫Burada yapmam gereken şey, öncelikle oyun alanımı başlangıçtaki oyun alanına ayarlamam gerekiyor.
‫Yani başlangıçta nasıldı ve sonra alanımı ayarlayabilirim, şimdi oyuncu bir alana sahip olduğunda oyunu sıfırlayalım
‫ve bu burada.
‫Yani birinci oyuncuda bir tane, ikinci oyuncuda bir tane var.
‫Şimdi şurayı sıfırlayalım, alanı sıfırlayalım.
‫Ve bu arada, belki de oyuncuya veya kullanıcıya oyunu sıfırlayabileceklerini de söylemeliyiz.
‫Bu yüzden konsolun sağ satırına geçin lütfen ve oyunu sıfırlamak için herhangi bir tuşa basın.
‫Ve burada sadece şunu söylüyoruz.
‫Kırmızı tuşu konsol haline getirin ve ardından oyunu sıfırlayın.
‫Tamam.
‫Hadi test edelim.
‫Alanınızı seçin.
‫1 ila 5 üç dokuz.
‫Birinci oyuncuda bir tane var.
‫Oyuncu, oyunu sıfırlamak için lütfen herhangi bir tuşa basın.
‫Herhangi bir tuşa basıyorum ve işte oradalar.
‫Oyunu sıfırladık ve şimdi oyuncular iki tur dönüyor.
‫Burada da görebileceğiniz gibi.
‫Alanınızı seçin.
‫Şimdi tekrar deneyelim.
‫Gördüğünüz gibi, şimdi farklı bir düzenimiz var.
‫OYUNCU iki Bir olarak, oyunu sıfırlamak için lütfen herhangi bir tuşa basın.
‫Harika.
‫Eğer buraya yanlış bir şey yazarsam yine bu hatayı alıyorum ama sorun değil.
‫Ve istediğim de tam olarak buydu.
‫Ben de yakaladım.
‫Hatayı bununla yakaladım.
‫Yakalamayı dene.
‫Şimdi geriye tek bir şey kaldı ve o da beraberlik.
‫Ve bu sorunu çözmenin birçok yolu vardır.
‫En kolayı ise turn adı verilen bir değişken yaratmaktır ve bu
‫değişken sadece oynadığımız turn sayısını tutacaktır.
‫Son dönüşler sıfıra eşittir.
‫Yani başlangıçta sıfır dönüşümüz var ve alanı her sıfırladığımızda veya alanı ayarladığımızda dönüşleri
‫bir artırmak istiyoruz.
‫Çünkü bu yöntem.
‫Ne zaman aranıyor?
‫Set alanını kontrol edelim.
‫Bu do while döngüsüne her girdiğimizde çağrılır.
‫Ve bu yalnızca kullanıcı tarafından doğru bir giriş yapıldığında geçerlidir.
‫Şimdi bu dönüş alanına sahipsek, dönüş alanını sıfırladığımıza da dikkat etmemiz gerekir.
‫Tüm sahamızı saha saha sıfırladıktan sonra, yani bu bizim oyunumuzun sahası gibi.
‫Ancak global bir değişken olduğu için dönüşler bir alandır, değil mi?
‫Bu yüzden oyunu sıfırladığımızda dönüşleri de sıfırlamak istiyorum.
‫Yani burada alanı sıfırlayın, dönüşler sıfıra eşittir diyoruz ya da aslında daha kesin olmak gerekirse çünkü dönüşleri zaten bir artırıyoruz, bunu
‫hemen sonra yapmamız gerekiyor.
‫Şimdi sadece bu koşulun doğru olup olmadığını kontrol etmemiz gerekiyor.
‫Yani burada kazanan bir koşulumuz vardı, eğer başka bir şey varsa.
‫Ve işte bu if ifadesi.
‫Burada da WL beyanı var.
‫Eğer bir kazananımız yoksa, berabere kalırız.
‫Ya da daha kesin olmak gerekirse, eğer dönüşler ona eşitse, o zaman bir beraberliğimiz var demektir.
‫Yani burada söylediklerimizle burada yaptıklarımız aynı.
‫Bizim de oyundan çıkmamız ve oyunu sıfırlamamız gerekiyor.
‫Yani alanı sıfırlayın ve.
‫Oyuncuyu kazanan olmadığı konusunda bilgilendirmeliyiz.
‫Bu yüzden çizimi buraya metin olarak gireceğim.
‫Pekala, şimdi oyundaki bir sorunu çözüyoruz, bu yüzden öncelikle bir beraberlik alalım.
‫Önce çekilişi kontrol edelim.
‫Yani, bir, iki, üç, dört.
‫Altı beş.
‫Sekiz, dokuz ve yedi.
‫Ve beraberliği aldığımızı görüyoruz.
‫Sorun değil.
‫Oyunu sıfırlamak için herhangi bir tuşa basın.
‫Bu da işe yarar.
‫Şimdi tekrar deneyelim.
‫Aslında, çizmek değil, kazanmak.
‫Ve iki numaralı oyuncunun bir olduğunu görüyoruz.
‫Enter tuşuna basıyorum ve oyunumuz sıfırlanmıyor ve bunun buradaki statik değişkenimizle ilgisi var.
‫Yani bu karakter oyun alanı ilk ve yapmam gereken şey, buradan kurtulmam ve onu statik
‫hale getirmem ve aslında sıfırlama alanımızın içinde olacak bir yerel değişken oluşturmam gerekiyor.
‫Bu yüzden ilk olarak bu oyun alanını oluşturacağım ve bunu oyun alanıma ayarlayacağım.
‫Şimdi bunu bir kez daha test edelim.
‫Bir, iki, üç, dört, beş, altı, yedi.
‫Play One'da bir tane var.
‫Tamam, şimdi bir, iki, üç, dört, beş, altı, yedi.
‫İkinci oyun bir tuşun altındadır ve sıfırlandığını görürsünüz.
‫Şimdi, çözdüğüm veya test ettiğim ve hala küçük bir hata olduğunu gördüğüm
‫bir şey iki, bir, üç.
‫Dört, sonra beş, altı ve sekiz.
‫Ve gördüğünüz gibi, oyuncunun bir tane olduğu bir durumumuz var, ancak burada yakalanmamış
‫ya da yakalanmamış.
‫Gördüğünüz gibi ikinci oyuncuda bir tane var.
‫Yani birinci oyuncuda 000 ya da sıfır olsa bile.
‫Dolayısıyla burada benim koşullarımda hala küçük bir sorun var ve siz bunu daha önce anlamış olabilirsiniz.
‫Bu yüzden size bunu nasıl düzelteceğinizi göstereceğim.
‫Buradaki koşul da bu olmalıdır.
‫Yani sıfır bir, o zaman bir bir ve bu bir iki olmamalı, iki bir olmalı.
‫Şimdi bunu tekrar test edelim.
‫Bakalım bu durumu yakalayabilecek miyiz?
‫Yani bir, iki, üç, beş, dört, sekiz.
‫Ve biz iki oyuncuyu bir olarak görüyoruz.
‫Tamam, o zaman elimizde bir tane var.
‫Evet, hepsi bu kadar.
‫Oyunumuz çalışıyor ve yapması gerekeni yapıyor.
‫Elbette hala geliştirebileceğiniz bazı şeyler var.
‫Örneğin, bu karakter işareti.
‫Yani bir girdi veriyoruz ve bu girdiyi bir kez daha kontrol ediyoruz ve bir karakter işareti oluşturuyoruz vb.
‫Ama bunu daha da kolaylaştırabiliriz.
‫Yani burada oyuncunun kendisini ele almıyoruz.
‫Ancak aldığımız şey, oyuncu karakteri veya oyuncu işareti olan bir karakterdir.
‫Yani bu da aynı şey olabilir.
‫Yani oyuncu işareti daha mantıklı çünkü onu burada kullandık.
‫Böylece tüm bu kodu burada oluşturmamıza gerek kalmaz.
‫O zaman bundan kurtulalım.
‫Bunun yerine bu yöntemi çağırdığımızda, ki burada bunu yapıyoruz, karakteri teslim ediyoruz.
‫Birinci oyuncu için sanırım oh, ikinci oyuncu için de X demiştik.
‫Bu da aynı şeyi yapacaktır.
‫Ve şimdi kod satırlarımızı biraz azalttık ve hatta devam edip kodu daha da geliştirebilirsiniz.
‫Ancak bu, bu kursta şimdiye kadar öğrendiklerinize dayanarak yazabilmeniz gerektiğini düşündüğüm
‫bazı kodlardı.
‫Tamam.
‫Sizin durumunuzda çok farklı görünse de umarım bunu yapmayı başarırsınız.
‫Ve lütfen devam edin ve çözümünüzü paylaşın.
‫Ya da buradaki çözümümü alıp geliştirdiyseniz, lütfen devam edin ve bunu da paylaşın.
‫Evet, hepsi bu kadar.
‫Oldukça uzun bir video, bunu biliyorum ama umarım bundan çok şey öğrenmişsinizdir.
‫Ve bunu kendiniz yapmasanız bile, sadece takip ettiniz ve inşa etmeye çalıştınız.
‫Farklı bir konuyu ele alacağımız bir sonraki videoda görüşmek üzere.
‫Orada görüşürüz.