Videodaki Zar oyunu Python ile nasıl yapılır?

Katılım
9 Ağustos 2020
Mesajlar
6.029
Çözümler
61
Yer
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Video bu. 3.15'de programı açıyor. Olay şu: 6 tane rastgele 1'den 6'ya kadar rakamlar bilgisayar tarafından belirleniyor ve hepsi aynı olana kadar sayılıyor hepsi aynı oluncaya kadar doğru olmayan rakam dizisi ardından doğru olan rakamlar ve toplam dizi sayısı ekrana yazılıyor. Açıklama herkes tarafından anlaşılmayabilir bundan dolayı videoyu koydum.
 
Çok kompleks bir uygulama değil hatta oldukça basit.

Artık kaç tane zarla yapmaya kalkacaksan, zarları tutacak bir dizin olacak. Sonsuz bir döngünün içinde bu dizi elemanlarını random generate edeceksin. Eğer dizinin tüm elemanları eşitse, diziden çıkacak; dizinin sayacı da hesap sayın. Biraz şekil olsun diye de her loopta çıktı basmışlar.

15 dakikanı almayacak bir kod parçası aslında, yapmak için mühendis olmaya gerek yok. Arkadaşlar neden bu kadar büyütmüş mevzuyu onu da anlamadım. Çoğu dilde de kolayca yazılır.
 
Ben CPP dili üzerinde yoğunlaşmıştım bir süre daha kompakt bir dil olduğuna inanıyorum eğer c++ üzerinde yapmak istersen aklımda kalan bilgilerle yardımcı olmaya çalışırım ama maalesef python bilmiyorum
 
Rastgele kütüphanesini bilmiyorum. Ancak algoritması kafamda kurulu sadece kodlar eksik. Bundan dolayı yardım istedim. Siz yapıp atarsanız sevinirim.
 
Rastgele kütüphanesini bilmiyorum. Ancak algoritması kafamda kurulu sadece kodlar eksik.

Python:
import random
n = random.randint(0,6)
print(n)

Kendin yazabiliyorsan mümkün olduğunca denemeye çalış. Direkt kodu copy + paste yapmıyorum genelde yardımcı oluyorum forumda. Ayrıca random'ı import edip kullanabilirsin rastgele sayı üretimi için.
 
- Istedigin durumu kontrol eden fonksiyon => are_dices_equal() -> n tane zar da esit mi , true/false return ediyor.

- bir zari rastgele atan fonksiyon => roll_dice(dice) -> parametredeki zari random atip sonucu yazan

- tanimlanan zarlari roll_dice() ile atan fonksiyon -> roll_dices(**kwargs) -> foreach dice in dices: roll_dice(dice)

Bu 3 fonksiyondan sonrasi basit do-while:

[CODE title="ornek akis"]# dice tanimi, OOP ile de yapilabilir, basit dict ile de
# OOP yapacaksan dice.roll() yapilmali.
condition = True
count = 0
while condition:
roll_dices(dice1,dice2,dice3,dice4,dice5,dice6)
count = count + 1
condition = are_dices_equal()
# count prompt'u[/CODE]
 


Teşekkür ederim. Ancak okulda öğrendiğim kadarını biliyorum for döngüsü dahil bile değil. Pek bir şey anlamadım. Tekrar öğrenmeye çalışıyorum Python'u.
 
Teşekkür ederim. Ancak okulda öğrendiğim kadarını biliyorum for döngüsü dahil bile değil. Pek bir şey anlamadım. Tekrar öğrenmeye çalışıyorum Python'u.

Anladim, parcalara bolerek zor problemin ustesinden gelebilirsin. Bu isi yapmak icin dedigim gibi
- zar atan ( random sayi generate eden )
- atilan zarlari kontrol eden

Fonksiyonlar yazman gerekiyor. Geri kalani da bir tane loop yalnizca. Yeni basladiysan OOP ile ilgili kisimlar kafani karistirmis olabilir, bosver. 6 zari kontrol eden uygulama yapmadan 1 tane zar 4 gelene kadar atan program yap. Sonra 2 zar ayni gelene kadar atan program yap. Sonra 6 zar ayni gelene kadar kac defa attigini sayan program yap. Basite indirgeyip kademe kademe zorlastir.
 

Python:
import random as r

check = True
saydir = 0

while check:
    n1 = r.randint(1,6)
    n2 = r.randint(1,6)
    n3 = r.randint(1,6)
    n4 = r.randint(1,6)
    n5 = r.randint(1,6)
    sans = n1 , n2 , n3 , n4 , n5
    print(sans)
    saydir = saydir + 1
    if n1 == n2 == n3 == n4 == n5:
        print(saydir , "sayista tamamlandi")
        break

Ben de böyle yaptım. Dice.roll kullanılması daha okunaklı olurdu muhtemelen.
 
Son düzenleme:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…