Merhaba, tekrar hoş geldiniz.
Bu konuşmada şunları yapmak istiyorum sana bir meydan okuma daha vereceğim.
Fonksiyonlarla ilgili ama bu meydan okuma daha çok böl
ve fethet üzerine olacak. Gidiyor. daha çok programınızı modüller etrafında
organize etmekle ilgili olacak. daha çok problem çözme ile ilgilidir.
Senden yapmanı istediğim şey Bir tic-tac-toe oyunu yazman için.
Bu sadece sana yardım edecek daha iyi bir problem çözücü olmanızı sağlayacak ve organize
olmanıza yardımcı olacaktır. Programınızı fonksiyonlar etrafında oluşturun.
Ayrıca bir dizi de kullanacaksınız,
bunun için belirli verilerin nasıl biçimlendirileceği
konusunda Bir tic-tac-toe oyunu simülasyonu.
Bir bilgisayar yazmayacağız.
Oyuncu olacak. 1'e karşı oyuncu 2.
Bu yüzden senden bir yazı yazmanı istiyorum. tic-tac-toe oynayan bir program.
Umarım, herkes Bu programa ya da bu oyuna aşina olduğunuzu
söylemeliyim.
Bu sadece oynanan bir oyun. 3 x 3'lük bir alanda iki oyuncuyla.
Sırayla.
X bir burun.
Umarım bu bir şeyler çağrıştırıyordur.
Gitmek zorunda kalmak istemedim ve ama umarım tic-tac-toe
oyununa aşinasınızdır.
Ben biraz daha nasıl çalıştığının ve çıktının nasıl
olmasını beklediğimin bir gösterimi.
Ama bu basit bir tic tac toe oyunu.
Yapmak istediğim şey temsil etmek için muhtemelen
bir dizi oluşturmanız gerekecek. gerçek tahta, 3 x 3 ızgara.
Sanırım sadece tek boyutlu bir dizi oluşturur.
Aslında bir Satırları ve sütunları temsil etmek için
de 2D dizi.
2D muhtemelen daha fazla olurdu sezgiseldir, ancak kodunuzda
görselleştirmek biraz daha zor olabilir.
Ama her iki yol da işe yarar.
Programlama ile ilgili iyi olan şey bir sorunun birçok çözümü vardır.
Sana bir anımı anlatacağım. çözümler ve benim tasarım yaklaşımım, ancak tasarımı
değiştirmekten çekinmeyin.
Kullandığınız sürece C yapıları doğru, tek umursadığım
bu.
C'yi nasıl kullanacağını öğrenmeni istiyorum.
Programınız modüle edildiği sürece Düzenli, bakımı
kolay ve kaliteli bir kod, Benim endişelendiğim de bu.
Yani sadece bir şekilde uygulamanın bir yolu panoyu on elemanlı tek boyutlu bir
dizi olarak temsil etmektedir.
Burada on unsur bulundurmamın nedeni sıfır kullanmanı istemiyorum.
Bu on unsur kurulu temsil edecekler,
ama aynı zamanda koordinatları tahtaya yazın.
Şimdi bunu göstereceğim ve Nasıl çalışmayı düşündüğümü.
Ama senin gittiğin yol aslında çizmek
istediğiniz kutuyu seçmek için eleman numarasına dayalı olmalıdır.
için bir dizi oluşturmanın yanı sıra bu sorunu nasıl çözeceğinizi düşünmeye
çalışmalısınız. Nasıl organize edeceğinizi.
En azından şunları düşünüyorum en az üç fonksiyona, muhtemelen
daha fazlasına ihtiyacınız olacak.
Ama en azından bir tanesine ihtiyacınız var kazananları kontrol eden fonksiyon.
Bu temel olarak sadece Bir kişinin oyunu kazanıp kazanmadığını veya beraberlik
olup olmadığını da kontrol edebilirler.
Bir fonksiyona sahip olmalısınız tahtayı çizen.
Çünkü sen çizeceksin her oyuncunun sırasından sonra tahta.
Ve sen -- yani Bunu tekrar kullanacaksın.
İşaretleme için başka bir işlev pano, bu
kullanıcı gerçekten koymak istediğinde olur Belirli bir kutuda x veya o.
Ayarlamak için bir fonksiyona ihtiyacınız var o kutuyu x veya o olarak işaretleyin.
Olacak olan şey muhtemelen diziyi bu x veya o ile doldurmak.
Ve bu şekilde bakabilirsiniz Kazanıp kaybettiğinizi görmek için bir dizi.
Ve işaret tahtasında geçersiz bir seçim olup olmadığını kontrol etmenize
de olanak tanır.
Yani eğer geçerli seçimler Birden dokuza kadar ve kullanıcı on girdiğinde,
hey, diyeceksiniz, Bunu yapamazsan, tekrar dene.
Oyun kullanıcı dostu olmalıdır, kullanıcı bakış açısına göre kullanımı
sezgisel olmalı ve programlama perspektifine göre düzenlenmelidir.
Bunu gerçekten düşünün.
Biraz planlama yapın, biraz planlama yapın, biraz kağıt çıkarın, Bu soruna nasıl saldıracağınız ve ne yapacağınız hakkında bazı tasarımlar
yazmaya başlayın fonksiyonları kullanmanız gerekecek.
Düşündüğüm gibi küçük bir demo
göstereyim.
Size herhangi bir kaynak göstermeyeceğim. kod, ama oyunu çalıştırdığımızda
böyle görüneceğini hayal ediyorum.
Belki küçük bir başlık Hey, oyun.
Ve biraz da oyuncu hakkında bilgi.
Oyuncu 1, x olacak, 2. oyuncu o olacak.
Unutmayın, bunun bilgisayarla oynamak için.
Her turda koyabilirsiniz.
Yani bu oyunu oynamak zorundasın. yanınızda oturan bir arkadaşınızla,
ve onlar da numarayı nereye koyacağınızı söyler.
Eğer gerçekten Hırslı bir şekilde, oyunu bilgisayara
karşı oynamak için yazabilirsiniz.
Ama fark edeceksiniz ki 3 x 3 ızgaranın içinde başlangıçta sayılar vardır.
Girmek için bu numaraları kullanabilirsiniz.
Yani eğer bir oyuncu sıralarını almak için ve x'i temsil ederler,
neye bağlı olarak girdikleri numara, x'in yerleştirileceği
yerdir.
Böylece ızgarayı yazdırırız, görüntüleriz ve sonra da kullanıcıya sıranın
kimde olduğunu söyleriz ve Onlara bir sayı girmelerini söyleriz.
Bu durumda, ben devam edeceğim ve iki numarayı girip return tuşuna basın.
Ve ben vurduktan sonra ne olacak iki ve dönüş, birinin
kazanıp kazanmadığını gerçekten görecek, ekranı temizleyecek ve tahtayı
yeniden çizecektir.
Yani 2'ye basıp enter dedikten sonra Başlığın hala bende olduğuna dikkat
edin, hala 1. ve 2. oyuncum var.
Ama şimdi 2. kutuda bir x var.
Peki başka ne yapmalıydım panoyu sergilemeden önce kontrol etmem
gereken bir şey var. Kazanıp kazanmadığımızı ya da berabere kalıp kalmadığımızı.
Ve tabii ki bu ilk Yani ikisine de sahip değiliz.
Bir kazananımız olmadığı için veya bir çekiliş, şimdi oyuncudan
bir sayı girmesini isteyeceğim ve sonra buradan herhangi bir sayı seçebilirler.
Şimdi eğer geçersiz bir 10 gibi bir sayı, bana geçersiz olduğunu
söylemeli.
Ve bana izin vermeli Belki başka bir hamle yaparsın.
Eğer 2'ye girersem, 2 da geçersiz olmalıdır.
Yani 2 girersem de geçersiz diyor çünkü 2 zaten x tarafından alınmıştır.
Yani eğer program bana tekrar deneyin, onların sırasından kurtulabilirsiniz
ama bu gerçekten adil değil.
Şimdi sadece şunu söyleyeceğim. O'yu nereye yerleştirmek istiyorum? 5 diyeceğim.
geçersiz hamle, tahtayı yeniden çizecek
ve bir o ve 5 var.
Ve şimdi oyuncu 1 diyor.
Ve bunu yapmaya devam et bir kazananınız ya da çekilişiniz var.
Sadece 9 diyeceğim.
Şimdi orada bir x var, geçerli girişler 1 3 4 6 7 ve 8'dir.
Ben 3 diyeceğim.
Ve hadi x'e ulaşmaya çalışalım Şimdi x, sekize girecek ve ben de size
göstermek için o ve 6'yı koyacağım. oyunun bir kazananla çalıştığını.
Ve sonra x için 7 koydum, oyun artık bitmiş olmalı. Geri tuşuna bastım.
Birinci oyuncu kazanır diyor ve Hatta benim için biraz ses bile çaldı, orada
biraz süslü şeyler yaptım.
Yani oyun bitti, birinci oyuncu kazandı.
Ayrıca şu durumlarda da gerçekleşmelidir 2. oyuncu kazanırsa veya berabere kalırsa.
Bu yüzden nasıl bir şey istediğinizi düşünün. bu soruna saldırmak için.
Güzel küçük bir program.
Bir çözüm üzerinden gideceğim ve şunları sağlayacağım kaynak kodunu bir sonraki derste bulabilirsiniz. Teşekkür ederim.