Masa oyunlarının sırları: tic-tac-toe'da nasıl kazanılır. Tic-tac-toe'da yenilemeyen bir bot nasıl yazılır veya Minimax kuralına giriş Tic-tac-toe oynama taktikleri

Tic-tac-toe'da yenilemeyecek bir bot nasıl yazılır veya Minimax kuralına giriş

Yüzlerce tic-tac-toe oyunundan sonra şunu merak etmiş olmanız oldukça mümkündür: en uygun algoritma nedir? Ama eğer buradaysanız, muhtemelen bu oyunun bir uygulamasını da yazmayı denemişsinizdir. Daha da ileri gideceğiz ve tic-tac-toe'da yenilmesi imkansız olacak bir bot yazacağız. “Neden?” sorunuzu tahmin ederek cevap vereceğiz: Algoritma sayesinde.

Profesyonel bir satranç oyuncusu gibi, bu algoritma, ister zafer, ister yenilgi, ister beraberlik olsun, oyunun sonuna ulaşana kadar rakibin hareketlerini birkaç hamle ilerisinde hesaplar. Bu son duruma gelindiğinde, AI kendisine galibiyet için pozitif (bizim durumumuzda +10), mağlubiyet için negatif (-10) ve beraberlik için nötr (0) puan verecektir.

Algoritma aynı zamanda oyuncunun hamleleri için de benzer hesaplamalar yapıyor. AI hareket ederse en yüksek puana sahip hamleyi, oyuncu hareket ederse en düşük puana sahip hamleyi seçecektir. Bu stratejiyi kullanarak minimax yenilgiyi önler.

Bu oyunu oynamayı deneyin.

Minimax algoritması en kolay şekilde özyinelemeli bir fonksiyon olarak tanımlanır:

  1. son durum bulunursa bir değer döndürür (+10, 0, -10),
  2. sahadaki tüm boş hücrelerden geçer,
  3. her biri için minimax fonksiyonunu çağırır (özyineleme),
  4. elde edilen değerleri değerlendirir
  5. ve en iyi olanı döndürür.

Özyinelemeye aşina değilseniz, Harvard CS50 kursundan bu dersi izlemelisiniz:

Minimax'ın nasıl çalıştığını anlamak için uygulamasını yazalım ve davranışını modelleyelim. Bunu sonraki iki bölümde ele alacağız.

Minimax uygulaması

Oyunun sona erdiği bir duruma bakacağız (aşağıdaki resme bakın). Minimaks olası tüm oyun durumlarından geçtiği için (ve yüzbinlerce tane var), oyun sonunu dikkate almak mantıklıdır - bu şekilde daha az sayıda özyinelemeli işlev çağrısını (toplamda 9) izlememiz gerekecek.

Bırakın yapay zeka çarpılarla, kişi ise sıfırlarla oynasın.

Alanla çalışmayı kolaylaştırmak için onu hücrelerin içeriğine eşit değerlere sahip 9 öğeden oluşan bir dizi olarak ilan edelim. Yukarıdaki resimde olduğu gibi içini çarpı işaretleri ve ayak parmaklarıyla dolduralım ve adına origBoard adını verelim.

Var origBoard = ["O",1,"X","X",4,"X",6,"O","O"];

Daha sonra aiPlayer ve huPlayer değişkenlerini tanımlayacağız ve onlara sırasıyla "X" ve "O" değerlerini atayacağız.

Ayrıca kazanma kombinasyonlarını arayan ve arama başarılı olursa gerçek değeri döndüren bir fonksiyona ve mevcut hücrelerin indekslerini saklayan bir fonksiyona ihtiyacımız olacak.

/* kartın başlangıç ​​durumu O | | X --------- X | | X --------- | O | O */ var origBoard = [“O”,1 ,”X”,”X”,4 ,”X”, 6 ,”O”,”O”]; // kişi var huPlayer = “O”; // AI var aiPlayer = “X”; // tahtadaki boş hücrelerin indekslerinin bir listesini döndürür function emptyIndices(board)( return board.filter(s => s != "O" && s != "X"); ) // kazanan kombinasyonları hesaba katarak endeksler işlevi kazanma(tahta, oyuncu)( if((tahta == oyuncu && tahta == oyuncu && tahta == oyuncu) || (tahta == oyuncu && tahta == oyuncu && tahta == oyuncu) || (tahta = = oyuncu && tahta == oyuncu && tahta == oyuncu) || (tahta == oyuncu && tahta == oyuncu && tahta == oyuncu) || (tahta == oyuncu && tahta == oyuncu && tahta == oyuncu) | | (tahta == oyuncu && tahta == oyuncu && tahta == oyuncu) || (tahta == oyuncu && tahta == oyuncu && tahta == oyuncu) || (tahta == oyuncu && tahta == oyuncu && tahta = = oyuncu)) ( true değerini döndür; ) else ( false değerini döndür; ))

O halde iki argümanla bir minimax fonksiyonu tanımlayalım: newBoard ve player. Daha sonra sahadaki boş hücrelerin indekslerini bulup, boşunaSpots değişkenine aktaracağız.

// ana minimax işlevi fonksiyon minimax(newBoard, player)( // mevcut hücreler var boşunaSpots = emptyIndices(newBoard);

Ayrıca son durumları takip etmemiz ve uygun değerleri döndürmemiz gerekiyor. "Sıfır" kazanırsa, "çapraz" - +10 ise -10 döndürmeniz gerekir. AvailSpots dizisinin boyutu sıfırsa, boş hücre kalmaz, oyun berabere biter ve sıfırın döndürülmesi gerekir.

// terminal durumunu kontrol ediyoruz (kazanma/kaybetme/beraberlik) //ve buna göre bir değer döndürme if (kazanan(yeniBoard, huPlayer))( return (score:-10); ) else if (kazanan(yeniBoard, aiPlayer)) ( return (score:10); ) else if (availSpots.length === 0)( return (score:0); )

Bundan sonra boş hücrelerin her birinden puan toplamanız gerekiyor. Bunu yapmak için bir dizi hareket oluşturacağız ve bir döngüdeki tüm boş hücrelerden geçerek her hareketin indekslerini ve noktalarını hareket nesnesine yerleştireceğiz.

Daha sonra origBoard'da sayı olarak saklanan boş hücrenin indeksini, move nesnesinin index özelliğine eşitliyoruz. Daha sonra mevcut oyuncu olarak yeni newBoard alanının boş bir hücresine gideceğiz ve diğer oyuncudan minimax fonksiyonunu ve ortaya çıkan newBoard alanını çağıracağız. Bundan sonra minimax fonksiyonunun döndürdüğü nesnenin skor özelliğini, taşıma nesnesinin skor özelliğine yerleştirmeniz gerekir.

Minimax bir terminal durumu bulamazsa, bir terminal durumuna ulaşana kadar tekrar tekrar oyunun derinliklerine doğru ilerlemeye devam eder. Bundan sonra, bu yineleme “seviyesinin” puanlarını bir üst seviyeye aktarır.

Son olarak işlev, newBoard'daki değişiklikleri sıfırlar ve taşıma nesnesini hamle dizisine yerleştirir.

// tüm nesnelerin saklanacağı dizi var hamle =; // mevcut hücreler arasında döngü yapın for (var i = 0; i< availSpots.length; i++){ //create an object for each and store the index of that spot var move = {}; move.index = newBoard]; // совершить ход за текущего игрока newBoard] = player; //получить очки, заработанные после вызова минимакса от противника текущего игрока if (player == aiPlayer){ var result = minimax(newBoard, huPlayer); move.score = result.score; } else{ var result = minimax(newBoard, aiPlayer); move.score = result.score; } // очистить клетку newBoard] = move.index; // положить объект в массив moves.push(move); }

Minimax'ın daha sonra hamle dizisinden en iyi hamleyi seçmesi gerekir. Yapay zeka hareket ediyorsa en yüksek puana sahip, insan hareketiyse en düşük puana sahip hamleye ihtiyacı var. Dolayısıyla, oynatıcının değeri aiPlayer ise, algoritma bestScore değişkenini çok küçük bir sayıya başlatır ve hamle dizisi boyunca döngü yapar: eğer bir hamle puanı bestScore'dan daha değerliyse, algoritma o hamleyi hatırlar. Eşit puanlı hamleler olması durumunda algoritma ilkini hatırlar.

Player'ın huPlayer'a eşit olması durumunda her şey benzerdir - ancak şimdi bestScore büyük bir sayıya başlatılır ve minimax en az puana sahip hamleyi arar.

Sonuç olarak minimax, bestMove'da saklanan nesneyi döndürür.

// eğer bu bir yapay zeka hareketiyse, hamleler arasında döngü yapın ve en çok puana sahip hamleyi seçin var bestMove; if(player === aiPlayer)( var bestScore = -10000; for(var i = 0; i< moves.length; i++){ if(moves[i].score >bestScore)( bestScore = hamle[i].score; bestMove = i; ) ) )else( // aksi takdirde hamleler arasında döngü yapın ve en az puana sahip hamleyi seçin var bestScore = 10000; for(var i = 0; i< moves.length; i++){ if(moves[i].score < bestScore){ bestScore = moves[i].score; bestMove = i; } } } // вернуть выбранный ход (объект) из массива ходов return moves; }

Bir sonraki bölümde, nasıl çalıştığını anlamak için programımızın simülasyonunu yapacağız.

Minimax iş başında

Aşağıdaki şemayı kullanarak algoritmanın adım adım modelini analiz edeceğiz.

Not: Diyagramda büyük sayılar işlev çağrısının seri numarasını, düzeyler ise algoritmanın kaç hamle ileri gittiğini gösterir.

  1. origBoard ve aiPlayer algoritmaya beslenir. Bulunan üç boş hücrenin bir listesini yapar, durumun sonluluğunu kontrol eder ve tüm boş hücreler arasında döngü yapar. Algoritma daha sonra newBoard değerini değiştirerek aiPlayer'ı ilk boş kareye yerleştirir. Bundan sonra kendisini newBoard ve huPlayer'dan çağırır ve ikinci çağrının bir değer döndürmesini bekler.
  2. İlk işlev çağrısı hala çalışırken, ikincisi çalışır, iki boş hücreden oluşan bir liste oluşturur, sonlu durumu kontrol eder ve tüm boş hücreler arasında döngü yapar. Daha sonra ikinci çağrı, huPlayer'ı ilk boş kareye yerleştirerek newBoard'u değiştirir. Bundan sonra kendisini newBoard ve aiPlayer'dan çağırır ve üçüncü çağrının bir değer döndürmesini bekler.

  3. İkinci çağrıda iki boş hücre bulunduğundan minimax, huPlayer'ı ikinci boş hücreye yerleştirerek newBoard'u değiştirir. Daha sonra kendisini newBoard ve aiPlayer'dan çağırır.

  4. Algoritma boş hücrelerin bir listesini derler ve durumun sonluluğunu kontrol ettikten sonra oyuncunun zaferini kaydeder. Böylece puan alanı (-10) olan bir nesne döndürür.

    İkinci fonksiyon çağrısında algoritma, üçüncü ve dördüncü fonksiyon çağrılarının alt seviyeden döndürdüğü değerleri alır. huPlayer'ın hamlesi bu iki sonucu ürettiği için algoritma küçük olanı seçer. Aynı oldukları için algoritma ilkini seçer ve onu ilk fonksiyon çağrısına iletir.

    Bu noktada, ilk işlev çağrısı, aiPlayer'ın ilk boş hücreye hareketinin bir tahminini aldı. Daha sonra aiPlayer'ı ikinci boş kareye yerleştirerek newBoard'u değiştirir. Bundan sonra kendisini newBoard ve huPlayer'dan çağırır.

  5. Beşinci işlev çağrısında algoritma, boş hücrelerin bir listesini derler ve durumun sonluluğunu kontrol ettikten sonra yapay zekanın zaferini kaydeder. Böylece puan alanı +10 olan bir nesne döndürür.

    Bundan sonra ilk çağrı, aiPlayer'ı üçüncü boş hücreye yerleştirerek newBoard'u değiştirir. Daha sonra kendisini newBoard ve huPlayer'dan çağırır.

  6. Altıncı çağrı, iki boş hücrenin bir listesini yapar, durumun sonluluğunu kontrol eder ve tüm boş hücreler arasında döngü yapar. Daha sonra huPlayer'ı ilk boş kareye yerleştirerek newBoard'u değiştirir. Daha sonra kendisini newBoard ve aiPlayer'dan çağırır ve yedinci çağrının bir değer döndürmesini bekler.
  7. Yeni çağrı, boş bir hücrenin listesini oluşturur, sonlu durumu kontrol eder ve newBoard'u aiPlayer'ı boş hücreye yerleştirecek şekilde değiştirir. Bundan sonra kendisini newBoard ve huPlayer'dan çağırır ve bu çağrının bir değer döndürmesini bekler.
  8. Sekizinci meydan okuma, boş hücrelerden oluşan boş bir liste oluşturur ve durumun sonluluğunu kontrol ettikten sonra aiPlayer'ın zaferini kaydeder. Bu nedenle sayma alanı (+10)'a eşit olan bir nesneyi yedinci çağrının üzerindeki seviyeye döndürür.

    Yedinci çağrı alt seviyelerden yalnızca bir pozitif değer aldı. Bu değer aiPlayer'ın dönüşü sırasında elde edildiğinden algoritma elde edilen en büyük değeri döndürür. Böylece altıncı çağrıya, seviye yukarıya pozitif bir değer (+10) döndürür.

    Altıncı çağrıda iki boş hücre bulunduğundan minimax, huPlayer'ı ikinci boş hücreye yerleştirerek newBoard'u değiştirir. Daha sonra kendisini newBoard ve aiPlayer'dan çağırır.

  9. Bundan sonra algoritma boş hücrelerin bir listesini derler ve durumun sonluluğunu kontrol ettikten sonra aiPlayer'ın zaferini kaydeder. Bu nedenle puan alanı (+10) olan bir nesneyi bir üst seviyeye döndürür.

    Bu noktada altıncı mücadele, yedinci mücadelenin döndürdüğü puan (+10) ile dokuzuncu mücadelenin döndürdüğü puan (-10) arasında seçim yapmalıdır. huPlayer'ın hareketi bu iki sonucu ürettiğinden, algoritma daha küçük olanı seçer ve onu puan ve indeks alanlarına sahip bir nesne olarak bir sonraki seviyeye döndürür.

    Son olarak ilk çağrının üç şubesi de değerlendirilir (-10, +10, -10). aiPlayer'ın hareketi bu üç sonucu ürettiğinden, algoritma aşağıdakileri içeren nesneyi seçer: en büyük sayı puan (+10) ve indeksi (4).

Yukarıda tartışılan senaryoda minimax, en uygun seçimin sahanın merkez karesine taşınmak olduğuna karar verir.

Son!

Şimdiye kadar minimax algoritmasının nasıl çalıştığını anlamış olmalısınız. Kendiniz bir uygulama yazmayı deneyin veya GitHub veya CodePen'deki bir örneğe bakın ve onu optimize edin.

Oyunlarda yapay zeka konusuyla ilgileniyorsanız bu konudaki materyallerimizi okumanızı öneririz.

Tic-tac-toe çözülebilir bir oyundur. Bu, her oyunda en iyi sonucu elde etmek için kullanılabilecek, matematiksel olarak kanıtlanmış bir stratejinin olduğu anlamına gelir. Tic-tac-toe'da, doğru stratejiyi kullanan iki oyuncu oyunu her zaman berabere, yani kazanan olmadan bitirecektir. Bu stratejiyi bilmeyen bir rakibe karşı hata yapması durumunda kazanmak yine de mümkündür. Arkadaşlarınız stratejinizi anladıktan sonra kuralların daha karmaşık bir versiyonunu deneyin.


Tic-tac-toe oyununu nasıl oynayacağınızı bilmiyorsanız temel kuralları öğrenin.

Adımlar

İlk siz giderseniz kazanın veya berabere kalın

    İlk X'i köşeye yerleştirin. En deneyimli oyuncular ilk hamleyi yapıyorsa köşeye bir X yerleştirir. Bu, rakibinize hata yapması için en fazla fırsatı verecektir. Rakibiniz O koyarak yanıt verirse başka herhangi bir yer, merkezi hücre hariç, bu size zaferi garanti eder.

    Rakibiniz ilk O'yu merkezdeki kareye yerleştirirse kazanmaya çalışın. Rakibiniz ilk O'sunu merkeze koyarsa, kazanabilmeniz için onun hata yapmasını beklemeniz gerekecektir. Doğru oynamaya devam ederse oyunun sonucunun beraberlik olacağı garanti edilebilir. Bir sonraki hamleniz için, rakibiniz belirli bir hamle yaparsa (ve eğer yapmazsa, sonucu eşitlemek için hamlelerini engellemeye devam edin) ne yapacağınıza ilişkin talimatlar içeren iki seçenek burada:

    Rakibiniz ilk O'sunu merkezi kare dışında herhangi bir kareye yerleştirirse otomatik olarak kazanırsınız. Rakibiniz ilk O'sunu merkeze yakın herhangi bir kareye yerleştirirse kazanabilirsiniz. Yanıt olarak, ikinci X'inizi başka bir köşeye, iki X arasında boş bir kare olacak şekilde yerleştirin.

    İki olası kazanma hamlesi elde etmek için üçüncü X'i yerleştirin. Büyük olasılıkla rakibiniz arka arkaya iki X'inizin olduğunu görecek ve sizi engelleyecektir. (Değilse, üç X'ten oluşan bir sıra yaparak kazanın). Bundan sonra, birinci ve ikinci X'inizle aynı hizada boş bir kare olmalı ve bu çizgiyi kapatan hiçbir düşman O olmamalıdır. Üçüncü X'i bu kareye yerleştirin.

    • Örneğin, üst satırında "X O__", orta satırında "O___" ve alt satırında "X___" yazan bir kağıt parçasına tic-tac-toe tahtası çizin. Üçüncü X'i sağ alt köşeye yerleştirirseniz diğer X'lerinizle aynı hizada olacaktır.
  1. Dördüncü X'e bahis oynayarak kazanın.Üçüncü X'inizden sonra, oyunu kazanacak iki kare kaldı. Rakibiniz sadece tek hamle yapabildiği için bu karelerden sadece birini bloke edebilecektir. Dördüncü X'i kilidi açık bir kareye yerleştirin ve kazanın!

    İkinci olduğunuzda nasıl kaybetmezsiniz?

    1. İkinci olarak oyunu beraberliğe getirin. Rakibiniz önce başlar ve köşeye bir O koyarsa, her zaman ortadaki kareye bir X koyun. İkinci X ortaya yerleştirilmelidir, Olumsuz köşe, kafes, Keşke rakibinizin üç O harfini arka arkaya sıralamaması için hamlesini engellemenize gerek yok. Bu stratejiyi kullanırken her oyun genellikle berabere biter. Teorik olarak bu durumda kazanabilirsiniz ancak rakibinizin aynı satırda iki X'in olduğunu görmemek gibi ölümcül bir hata yapması gerekir.

      • Bu bölümde rakibiniz hala sıfırlarla oynuyor ancak ilk önce kendisinin başladığını unutmayın.
    2. Rakibiniz ortadaki kareden hareket etmeye başlarsa beraberlik elde edin. Rakibiniz ortadaki kareye bir O koyarak oyuna başladığında, ilk X'i köşeye yerleştirin. Bundan sonra, rakibinizin hamlelerini bloke etmeniz yeterlidir; sonuç berabere olacaktır. Rakibiniz kazanmaya çalışmayı bırakmadığı sürece bu durumda kazanmanın hiçbir yolu yok!

      Rakibiniz dış kareden hareket etmeye başlarsa kazanmaya çalışın. Büyük ihtimalle rakibiniz yukarıda anlatıldığı gibi hareket edecektir. Ancak ilk O'yu köşeye veya merkeze değil de dış kareye koyarsa kazanma şansınız çok düşük. İlk X'i merkeze yerleştirin. Rakip O'yu karşı kenara koyarsa O-H-O hattı, üçüncü X'inizi köşe karesine yerleştirin. Ardından, rakibiniz üçüncü O'yu X'inizin yanındaki dış kareye koyarsa, böylece bir O-X-O çizgisi elde edersiniz, kareye üçüncü bir X koyarak iki O'nun çizgisini bloke eder. Bundan sonra her zaman bahis yaparak kazanabilirsiniz. dördüncü X'iniz.

    Tic-tac-toe çeşitleri

      Eğer tic-tac-toe oyunlarınız her zaman beraberlikle sonuçlanıyorsa bu varyasyonları deneyin. Bir süreliğine tic-tac-toe'da rakipsiz olmak eğlenceli olabilir, ancak bu makale olmadan bile arkadaşlarınız sizin kazanmanızı nasıl engelleyeceklerini bulabilirler. Bu gerçekleştiğinde, onlarla oynadığınız her oyun beraberlikle sonuçlanacaktır. Ancak tic-tac-toe'nun temel kurallarının yardımıyla henüz çözülmemiş oyunları oynayabilirsiniz. Deneyin; bu oyunlar aşağıda açıklanmıştır.

Merhaba blogumun okuyucuları, bugün size tic-tac-toe'da nasıl kazanılacağını anlatacağım.

Çok fazla hazırlık gerektirmeyen harika bir oyun, sadece bir kalem veya kurşun kalem, bir parça kağıt ve bir partner bulun.

Aslında oyun basit ve aynı zamanda karmaşıktır. Pek çok insan bunu ciddiye almaz, bu yüzden kaybederler. Dürüst olmak gerekirse, nasıl oynanacağını ben de anlamadım ama sonra olası tüm hareketleri analiz ettim ve her şeyin matematiğe bağlı olduğunu fark ettim.

Bu oyun neden bu kadar basit? Mesele şu ki, burada sadece 9 hücre var, yani 9 başlangıç ​​seçeneğinden 1'i var ve sonra bu sayı 1 azaltılıyor. Yani hamlenizi yaptıysanız rakibinizin artık 9 seçeneği yok ama yalnızca 8, çünkü 1 hücre zaten dolu.

Sanırım bunu ben olmadan da anladınız, bugün ben sadece "Kaptan Açıkça"yım. Neden zor, çünkü burada olası kombinasyonlar var ve bu oyunu nasıl kazanacağınızı öğrenmek istiyorsanız, o zaman bir kaleme ve boş bir kağıda ihtiyacınız olacak.

Tic-tac-toe'da nasıl kazanılır

Bilmeniz gereken temel kavramlar:

Alan– savaşın gerçekleştiği 3x3 hücreli koşullu bir alan.

Haçlar- bunlar “x” simgeleridir, önce onlar gider.

İşletim sistemi- bunlar “0” simgeleridir, ikinci sırada gelirler.

Zafer– Bir oyuncu art arda 3 çarpı veya 3 sıfır topladığında.

İşte bir alan örneği.

Doğru analiz yapabilmeniz için her hücreyi numaralandıralım.

En azından hangi alanın hangisi olduğunu anlamanız için.

3x3'te kazanma stratejisi

Sıfırlar için oynarsanız, yani ikinci hamleyi yapmanız gerekiyorsa, güçlü bir rakibe karşı sadece berabere kalacağınızı unutmayın. Sıfırlarla kazanmak zordur çünkü sıfırlar ikinci sırada yer alır ve neredeyse her zaman çaprazların yarattığı tehditlere karşı savunma yapar (önce gelirler).

Yazdıklarıma şaşırmayın, yeni başlayanlar için çarpılarla nasıl kazanılacağını ve sıfırlarla nasıl çizileceğini anlamanızı istiyorum.

Hadi başlayalım...

En iyi strateji. Haçlar ortadaki 5. hücreye doğru hareket eder.

Daha sonra UNUTMAYIN, eğer sıfırlar ikinci hamlelerini ÇAPRAZ HÜCRE üzerinde yapmazlarsa kaybederler. Hangi kare olursa olsun hamle yaparlar: 2, 4, 6, 8, bu alanlardan herhangi birine sıfır koyarlarsa zorla kaybederler.

Mesela 5'e bahse girersiniz, 2'ye bahse girerler, şimdi 1'e veya 3'e bahse girersiniz, çaprazda 3 çarpı yapmakla tehdit edersiniz. Tamam, 1'e bahis oynuyorsunuz, 9. sahaya çarpı koyarsanız kazanacağınız ortaya çıkıyor. 9. kareye sıfır koymak zorunda kalıyorsunuz, ancak şimdi 7. kareye çapraz bahis koyarak zarif bir şekilde kazanıyorsunuz.

Meğerse 3'lük bir hamleyle çapraz, 4'lük bir hamleyle de dikey olarak üç haç yerleştirmekle tehdit ediyorsunuz. Güzel değil mi?

Sıfırlar için en iyi savunma, ortalar için 5 hareket ettikten sonra şu hamleleri yapmaktır: 1, 3, 7, 9, bu durumda dikkatli olursanız her zaman berabere kalırsınız. Bu basit kuralı hatırlayın, asla kaybetmezsiniz.

Haçlar için zorlu strateji

Ama sonuçta oyuncunun ilk hamleyi ortaya yani 5. hücreye yapmak zorunda değil. Burada çok güzel bir tuzak var: Köşe sahasına ilk hamleyi siz yapıyorsunuz.

Burada en iyi savunma alanı sıfırlarla - 5 ile işgal etmek olacaktır, çünkü bedavadır, o zaman işgal edilmesi gerekir. Bu durumda, sıfırlar sürekli olarak üçü arka arkaya koyma tehdidinde bulunarak her zaman berabere yapacaktır.

Örneğin, haçlar 1. kareye doğru hareket ederse, o zaman 4 ve 9'u hareket ettirmek hata olur; bu durumlarda haçlar zorla kazanır.

Bu seçeneklere bakalım:

A) Haçlar– 1, sıfırlar – 4, çaprazlar – 5, sıfırlar – 9 (zorunlu), çaprazlar – 3, sıfırların cevabına bağlı olarak 2 veya 7. alanlarda kazançlar.

C) Sıfırların cevabına bağlı olarak 4 veya 5 numaralı alanlarda kazanç ile - 1, sıfırlar - 9, çaprazlar - 3, sıfırlar - 2 (zorunlu), çaprazlar - 7.

Hepsi bu kadar arkadaşlar, umarım artık tic-tac-toe 3x3'te nasıl kazanılacağını biliyorsunuzdur. Bunda (oyunda) karmaşık bir şey yok, uygun savunma ile her zaman bir beraberlik olacak, ancak görebileceğiniz gibi sıfırları yakalayabileceğiniz ilginç orta seçenekleri var.

Başarılar dilerim, eğer bir şey yazmayı unutursam bana hatırlatın, hatta belki bir yorumda.

Herkese iyi şanslar, hoşçakalın!

Samimi olarak, Yuri Vatsenko!

Hayatta boş zamanınızın olduğu ama kendinizle hiçbir ilginizin olmadığı anlar vardır. Yanınızda sıkılmış başka biri varsa, o zaman birlikte herkesin çocukluğundan beri bildiği en basit oyunu oynayabilirsiniz - tic-tac-toe. Her insanın içgüdüsel bir kazanma arzusu vardır. "Tic-tac-toe'da nasıl kazanılır?" - sen sor. Çok basit. Bu makale birkaç kazanma tekniğinde uzmanlaşmanıza yardımcı olacaktır.

Öyleyse oyunun kurallarına bakalım. Tic-tac-toe için standart alan boyutu 3x3'tür. Oyunun özü, çarpı veya sıfırlarınızdan üçünü çapraz, dikey veya yatay olarak tek bir sıraya yerleştirmektir. Oyuncular sırayla hamle yapar. Gerçekte, tic-tac-toe'da nasıl kazanılacağı sorusunun cevabı yoktur. Sonuçta her iki oyuncu da hata yapmazsa kazanmak imkansızdır. Bu makale esas olarak rakiplerden birinin ciddi bir yanlış hesaplama yaptığı durumlara odaklanacaktır. Bu, oyunu muzaffer bir finale taşımak için oldukça yeterli.

Şimdi rakibinizi 3x3'lük bir alanda yenmenize yardımcı olacak çeşitli şemalara bakacağız. Yani ilk hamleyi yaptığınızı hayal edelim. Alanın merkez meydanını almanızı tavsiye ederiz. Bu size önemli bir avantaj sağlayacaktır. Buna yanıt olarak rakibiniz iki hamle yapabilir: Taşınızın çaprazına veya doğrudan, yatay veya dikey olarak sıfır (çarpı) yerleştirin. Rakibiniz ikinci seçeneği seçtiyse tebrikler! Artık zafer senin! Bir sonraki hamlenizde, sahadaki herhangi bir serbest hücreye bir çarpı işareti (ayak parmağı) yerleştirebilirsiniz, ancak bu, ilk hamlenize göre rakibin şekline simetrik olmamalıdır. Bundan sonra iki yönde iki taşınızın olduğundan emin olun, ardından rakibiniz size bunlardan yalnızca birinde müdahale edebilecektir. Bu, tic-tac-toe'da nasıl kazanılacağına dair planlardan biridir.

Artık bildiğiniz kazanma tekniğini yalnızca halka açık olarak değil, çevrimiçi olarak da uygulayabilirsiniz. Bu gerçekten çok kullanışlı çünkü İnternet'te en geniş spektrum tic-tac-toe oyununa dayalı uygulamalar. Sadece makul bir zorluk seviyesini değil, aynı zamanda istediğiniz kadar keyfini çıkarabileceğiniz benzersiz bir saha ve taş tasarımını da seçebilir ve ardından sıkıldığınızda oyunu istediğiniz zaman durdurabilirsiniz. Gerçek hayatta rakiplerinizi yenmek istiyorsanız, mümkün olduğunca sık çevrimiçi olarak ücretsiz tic-tac-toe oynamanızı tavsiye ederiz.

Yukarıda belirtildiği gibi, tic-tac-toe alanının boyutu herhangi bir olabilir, ancak en yaygın kullanılanlar 3x3, 4x4, 5x5'tir. Alan boyutu ne kadar büyük olursa, kazanmak da o kadar zor olur. Bu durumda, yukarıda açıklanan rakibi yenme planları işe yaramaz çünkü bunlar farklı tic-tac-toe'lardır. 5x5 oyununun hedefi arka arkaya 5'tir ve kazanmak için sadece bazı standart konumları bilmeniz değil, aynı zamanda taşların sahadaki konumunu da analiz edebilmeniz gerekir.

Artık tic-tac-toe'da nasıl kazanacağınızı biliyorsunuz, böylece herhangi bir rakip sizin rakibiniz olacak ve size herhangi bir tehdit oluşturmayacak! Size oyunda iyi şanslar diliyoruz, ancak bu durumda buna ihtiyacınız olmayacak: sonuçta, kazanmanıza kesinlikle yardımcı olacak mükemmel planlar biliyorsunuz!

Piyasada çok sayıda ilginç ve eğlenceli küçük masa oyunu var. Ve neredeyse her birinin, bilgisi zaferin ana yarışmacısı olmanızı sağlayan bir tür sırrı vardır. Bu durumda harika tic-tac-toe oyunu hakkında konuşacağız. Peki tic-tac-toe'da nasıl kazanılır?

Yukarıda da belirtildiği gibi, bu tür oyunların neredeyse hepsinin kendi sırrı vardır. Bu durumda bu sır, bir durumu öngörme yeteneğinden ve bir durumu yaratma yeteneğinden oluşur. Yani satranç gibidir, sadece daha basitleştirilmiş bir versiyonudur. Bu yüzden tic-tac-toe'da kazanmadan önce birkaç basit numarayı öğrenmeniz gerekir.

Öncelikle şunu bilmelisin ana prensip Kazanmak, tamamen dolmayan iki çizgi oluşturmaktır. Bu seçenekte, rakibin bir sonraki hamlesi kesinlikle önemsiz olacaktır (tabii ki kazanan bir hamle olmadığı sürece). Böyle elverişli bir durum yaratmak için sahanın ortasında bir yer işgal etmek en iyisidir. Üstelik tic-tac-toe'da kazanmanın başka yolu da yok aslında. Tabii rakip tamamen meslekten olmayan biri değilse (ve bu olur).

Bu nedenle, kazanmak için ilk önce ve tam olarak merkeze gitmeniz şiddetle tavsiye edilir. Rakip, taşını orta çizgilerden herhangi birine yerleştirirse otomatik olarak oynar. Bu durumda asıl önemli olan tic-tac-toe oyununun özünü bilmektir. Yani eğer

Rakip bu kadar tedbirsizce davrandığı için ortamızı köşelerden birine yerleştirmeliyiz, böylece aynı anda sıfırın daha fazla ilerlemesini de engellemiş oluruz. O zaman savunma pozisyonu almaktan başka seçeneği kalmaz (ve bunun ilk hamleden itibaren yapılması gerekirdi). Sıfır her durumda karşı köşede olur. Daha sonra haçımız tekrar köşeye yerleştirilmelidir. Neyimiz var? Ve her birinde iki çarpı işareti olan iki çizgimiz var. Bu, rakibin sonraki hamlelerinin bizim için kesinlikle önemli olmadığı anlamına geliyor. Hareketi ne olursa olsun kazanırız.

Yine önce biz gidip taşımızı merkeze koyarsak ve rakip kendi taşını köşeye koyarsa kazanma şansı önemli ölçüde azalır. Aslında bu maçın berabere bitmesini engelleyecek tek bir seçenek var. Rakip hamlemize köşedeki sıfırıyla karşılık verdiğinde ters yönde bir çarpı koymak gerekir. Rakibin geriye üç olası hamlesi kaldı. Taşını tekrar köşeye koyarsa beraberlik olur. Eğer orta çizgileri seçerse bu bir kayıptır. Hem bir hamle hem de diğeriyle her şey apaçık ortaya çıkıyor ve tic-tac-toe'da nasıl kazanılacağını açıklamaya gerek yok.

Rakip maça başladığında hemen hemen her şey aynı oluyor, sadece ters doğrulukla. Taşı merkezdeyse, savunma pozisyonu almanız ve yavaş yavaş tic-tac-toe'da nasıl kazanılacağını unutmanız gerekir, çünkü burada mümkün olan tek seçenek beraberliktir.

Ve eğer taşı ilk hamlede merkezi hücre dışındaki sekiz hücreden herhangi birine yerleştirilirse, o zaman tam olarak bu merkezi işgal etmeniz ve ardından mevcut koşullara göre hareket etmeniz gerekir.



Makaleyi beğendin mi? Arkadaşlarınla ​​paylaş: