Pythonla Blackjack kodlamak Birinci Bölüm
Öncelikle...
Öncelikle aklı başında olan normal bir insan böyle bir seriye kalkışınca önce printten başlayarak sonra fonksiyonlara kadar giden bir tutorial yapar daha sonra örnek olarak bu oyunu kodlar ama ben oyun örneğini ikinci yazıma koymak istedim çünkü sıkı çalışılmış bir iki haftada python la neler yapılabileceğini yeni başlayanlara göstermek istiyorum
Neden Blackjack
Blackjack diğer kart oyunlarının aksine iki kişiyle oynanan bir oyun değil.Kartları dağıtan kişi (kurpiye)hareketleri düşünerek değil karşısına gelen durumlara göre ezbere hamleler yaparak gerçekleştiriyor (kurpiye elindeki kartlar oyuncudan düşükse 17 ye ulaşana kadar çekmek gibi)bu da bize gerçekten basit bir yapay zeka yaratma imkanı veriyor
NOT:altta yazılanlar yapılış sırasına göredir pythona bu sırada yazarsanız büyük ihtimalle Error alırsınız.doğru sıralamayı ve tüm kodları ayrıca göstereceğiz
Başlangıç
Önccelikle bir destede olan kartları bilgisayarımıza tanıtarak başlayacağız
Burada önemli olan şey her girişin arasına virgül koyduğunuz gibi satır sonlarına da virgül koymayı unutmamak yoksa Python size ''A2 ne amına koyayım'' tarzında bir hata verebiliyor ve 10 dakika boyunca bütün satırlarda A2 yi aramak zorunda kalıyorsunuz :)
Birazdan Pythonla random adlı zaten belirlenmiş olan bir fonksiyonu kullancağız ama kullanmadan önce Python beye bu fonksiyonu kullanacağımızı söylememiz lazım çünkü Python önceden definelanmış fonksiyonlar açısından zengin bir platform ama Pythonun hızının azalmaması için
bu gibi işlemleri yapacağımızı önceden Pythona söyleyerek o kütüphaneye erişmesini sağlamalıyız
bunu da kodumuzun ilk başına'''' random.istenen şeklinde bir komut getirerek yapacağız(Bu örneği şimdi değil bir sonraki paragrafta kullanacağımız user defined fonksiyonla göstereceğim.)
Öncelikle Python a kurpiye ve oyuncu taraflarını tanıtıyoruz Daha sonra ilk işlemimiz olan bu kartlar içinden rastgele ikişer kart çekme olayını bilgisayara göstererek devam edeceğiz tabi bu kartların rasgele seçilmesi lazım o yüzden random.shuffle koduyla kartları karma işlemini gerçekleştiriyoruz
random.shuffle(kartlar) | |
kurpiye = [] | |
oyuncu = [] | |
oyuncu.append(kartlar.pop()) | |
kurpiye.append(kartlar.pop()) | |
oyuncu.append(kartlar.pop()) | |
kurpiye.append(kartlar.pop()) |
Kendi kurallarımızla Oynamak -(Fonksiyon tanımlamak)
def calc_hand(hand): | |
handval = 0 (toplamları 0 a eşitleyerek puan hesaplamada üzerine ekleyeceğiz) | |
for i in hand: | |
if i not in special_cards: (Eğer alınan kart special_card klasöründe değilse) | |
handval += int(i) (toplama o kartın sayısal(int) değerini ekle) | |
elif i != "A": (Eğer i özel kartlardaysa ama A değilse( != olumsuzluk ekler) | |
handval += 10 (toplama 10 ekle) | |
else: (Geri kalan tüm durumlarda{JKQ}) | |
if handval <= 10: (Eğer toplam 10 dan küçükse) | |
handval += 11 (toplama 11 ekle) | |
else: (eğer 10 dan küçük değilse) | |
handval += 1 (toplama 1 ekle) | |
return handval |
special_cards = ["J", "K", "Q", "A"] tüm kartlar da buraya gelecek öncelikle yukarıya bakan biri eğer pythonda daha yeniyse direkt fonksiyonun içinde(calc_hand) special_cards kullanıldı ama special_cards daha sonra yazıldı bilgisayar special cards ı bilmeden nasıl fonksiyonda kullanıyor diyebilir ama şöyle bir durum var biz yukarıda fonksiyonu sadece tanımladık fonksiyonu kullanıp bir işlem yapmadık fonksiyonu kullandığımız kısım daha sonra gelecek ve o kısıma kadar da zaten python çoktan special_cards ı tanıyacak. |
Yorumlar
Yorum Gönder