Ana Sayfa · Akademi · Robotik ve Kodlama · Python Temelleri · Rastgelelik ve Basit Oyun Mantığı

Rastgelelik ve Basit Oyun Mantığı

random modülüyle rastgelelik üretip zar ve taş-kağıt-makas gibi basit oyun mantıkları kurmayı öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Python'un random modülünü kullanarak zar atan ve taş-kağıt-makas oynayan küçük programlar yazmayı, oyunlarda rastgeleliğin nasıl adil bir sürpriz yarattığını öğreniyoruz.

Üretilecek kanıt

Zar oyununu küçük bir yarışa çevir. Kullanıcı ile bilgisayar birer zar atsın; büyük sayıyı atan kazansın. import random sen = random.randint(1, 6) bilgisayar = random.randint(1, 6) print("Senin zarın:", sen) print("Bilgisayarın zarı:", bilgisayar) if sen > bilgisayar: print("Kazandın!") elif sen < bilgisayar: print("Kaybettin!") else: print("Berabere!")…

Kontrol tuzağı

import satırını unutmak random kullanmadan önce import random yazmazsan Python "random tanımlı değil" hatası verir. Bu satır dosyanın en üstünde bir kez bulunmalıdır. randint sınırlarını yanlış anlamak random.randint(1, 6) hem 1'i hem 6'yı sonuca dahil eder. Bazı öğrenciler 6'nın çıkmayacağını sanır; oysa altı yüzlü…

Sonraki bağlantı

Modüller ve Kütüphaneler: Hazır modülleri kendi programlarımıza nasıl getirdiğimizi ve Python'un standart kütüphanesinin bize neler sunduğunu keşfediyoruz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre30–45 dk
Ön koşulDosyalarla Çalışmaya Giriş
İçerikStandart ders · 1.411 kelime
Son güncelleme

Bir cümlelik özet

Python'un random modülünü kullanarak zar atan ve taş-kağıt-makas oynayan küçük programlar yazmayı, oyunlarda rastgeleliğin nasıl adil bir sürpriz yarattığını öğreniyoruz.

Neden önemli?

Sevdiğin oyunların çoğunda tahmin edemediğin şeyler olur. Zar hangi sayıya gelecek, karttaki hangi ödül çıkacak, düşman hangi yönden gelecek? Bu belirsizlik oyunları eğlenceli kılar. Eğer her şey önceden belliyse oyun kısa sürede sıkıcı olur.

Bilgisayarlar aslında çok düzenlidir: aynı komutu verince hep aynı sonucu üretirler. Peki o zaman sürpriz nereden gelir? İşte burada rastgelelik devreye girer. Rastgelelik, önceden kesin olarak bilemeyeceğimiz bir sonuç üretmektir.

Python'da bu iş için hazır bir araç vardır: random modülü. Bu derste onu kullanarak gerçek bir zar ve gerçek bir taş-kağıt-makas turu yazacağız. Aynı zamanda "adil rastgelelik" fikrini, yani her sonucun eşit şansa sahip olması gerektiğini konuşacağız.

random modülünü tanıyalım

Python'da bazı hazır araçlar ayrı kutularda durur. Bu kutulara modül denir. Rastgele sayılarla çalışan kutunun adı random. Onu kullanmadan önce programın en üstünde bir kez çağırmamız gerekir.

import random

import kelimesi "bu modülü programıma getir" demektir. Bir kez yazman yeterlidir; o dosyanın her yerinde random araçlarını kullanabilirsin.

randint: belirli aralıkta tam sayı

randint (random integer, yani rastgele tam sayı) iki sınır arasından rastgele bir tam sayı seçer. İki sınır da seçime dahildir.

import random

sayi = random.randint(1, 6)
print(sayi)

Bu program 1 ile 6 arasında (1 ve 6 dahil) rastgele bir sayı yazar. Çalıştırdığın her seferde farklı bir sonuç görebilirsin. Tıpkı bir zar gibi.

choice: bir listeden rastgele seçim

Bazen sayı değil, hazır seçeneklerden biri lazım olur. choice bir listeye bakar ve içinden rastgele bir eleman seçer.

import random

renkler = ["kırmızı", "yeşil", "mavi"]
secim = random.choice(renkler)
print("Seçilen renk:", secim)

Burada program üç renkten birini rastgele seçer. Listeye istediğin kadar seçenek ekleyebilirsin.

Kısa tanım: randint(a, b) a ile b arasında rastgele bir tam sayı verir; choice(liste) bir listeden rastgele bir eleman verir.

Örnek 1: Zar atma programı

Şimdi randint ile küçük bir zar programı yazalım. Kullanıcı Enter'a bastıkça zar atsın.

import random

print("Zar atmak için Enter'a bas.")
input()

zar = random.randint(1, 6)
print("Zar", zar, "geldi.")

Programı çalıştır ve birkaç kez dene. Her seferinde 1 ile 6 arasında bir sayı görürsün ve hangisinin geleceğini önceden bilemezsin.

İki zar birden

Çoğu oyun tek zar yerine iki zar kullanır. İki ayrı çağrı yapıp toplamlarını yazdıralım.

import random

zar1 = random.randint(1, 6)
zar2 = random.randint(1, 6)
toplam = zar1 + zar2

print("Birinci zar:", zar1)
print("İkinci zar:", zar2)
print("Toplam:", toplam)

İki zarın toplamı 2 ile 12 arasında olur. En sık çıkan toplam 7'dir, çünkü 7'yi veren çok sayıda kombinasyon vardır. Rastgelelik burada da adildir: her zar tek başına eşit şanslıdır.

Örnek 2: Taş-kağıt-makas turu

Şimdi choice kullanarak kullanıcının bilgisayara karşı oynadığı bir tur yazalım. Önce bilgisayarın seçimini rastgele belirleyeceğiz.

Girinti hatırlatması

Python'da if, elif ve else bloklarının altındaki satırlar 4 boşluk içeride yazılır. Bu girinti, hangi satırın hangi koşula ait olduğunu Python'a gösterir. Girintiyi unutursan program hata verir.

Bilgisayarın seçimi

import random

secenekler = ["taş", "kağıt", "makas"]
bilgisayar = random.choice(secenekler)
kullanici = input("Seçimin (taş/kağıt/makas): ")

input kullanıcının yazdığı metni alır. Bilgisayarın seçimini ise kullanıcı göremez; bu da oyunu adil tutar.

Kazananı bulma

Şimdi kuralları if/elif/else ile yazalım. Aynı seçim beraberliktir; geri kalan durumları tek tek kontrol ederiz.

if kullanici == bilgisayar:
    sonuc = "Berabere!"
elif kullanici == "taş" and bilgisayar == "makas":
    sonuc = "Kazandın!"
elif kullanici == "kağıt" and bilgisayar == "taş":
    sonuc = "Kazandın!"
elif kullanici == "makas" and bilgisayar == "kağıt":
    sonuc = "Kazandın!"
else:
    sonuc = "Kaybettin!"

print("Bilgisayar:", bilgisayar)
print(sonuc)

and iki koşulun aynı anda doğru olmasını ister. Örneğin taş, yalnızca makası yener. Kullanıcı bu üç kazanma durumundan hiçbirine uymuyorsa (else), sonuç kaybetmektir.

Adil rastgelelik fikri

random.choice her seçeneği eşit şansla seçer: taş, kağıt ve makasın her biri üçte bir olasılığa sahiptir. İşte adil rastgelelik budur. Hiçbir seçenek diğerinden avantajlı değildir.

Bir oyunu adil tutmak için:

Adil rastgelelik, oyunun hem eğlenceli hem de güvenilir olmasını sağlar.

Mini uygulama

Zar oyununu küçük bir yarışa çevir. Kullanıcı ile bilgisayar birer zar atsın; büyük sayıyı atan kazansın.

import random

sen = random.randint(1, 6)
bilgisayar = random.randint(1, 6)

print("Senin zarın:", sen)
print("Bilgisayarın zarı:", bilgisayar)

if sen > bilgisayar:
    print("Kazandın!")
elif sen < bilgisayar:
    print("Kaybettin!")
else:
    print("Berabere!")

Denemeler:

  1. Programı 5 kez çalıştır ve kaç kez kazandığını say.
  2. Zarı randint(1, 12) yaparak on iki yüzlü bir zara çevir.
  3. Taş-kağıt-makas turunu bir while döngüsüne alarak kullanıcı "çıkış" yazana kadar oynat.

Uygulama laboratuvarı: Rastgelelik ve Basit Oyun Mantığı

Rastgelelik ve Basit Oyun Mantığı konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada random modülünü tanıyalım ile choice: bir listeden rastgele seçim arasındaki ilişkiyi kullanarak çalışan kısa bir Python 3 programı, örnek girdiler ve beklenen çıktılar hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.

Görev senaryosu

Şu senaryoyu ele al: antrenman sonuçlarından toplam ve ortalama hesaplayan program. Dersin ana hedefi “random modülüyle rastgelelik üretip zar ve taş-kağıt-makas gibi basit oyun mantıkları kurmayı öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.

  1. Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
  2. En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
  3. Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
  4. Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
  5. Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.

Başarı ölçütleri

“Rastgelelik ve Basit Oyun Mantığı” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın antrenman sonuçlarından toplam ve ortalama hesaplayan program senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, random modülünü tanıyalım ve choice: bir listeden rastgele seçim ilişkisini daha küçük adımlara bölerek düzelt.

Sık yapılan hatalar

import satırını unutmak

random kullanmadan önce import random yazmazsan Python "random tanımlı değil" hatası verir. Bu satır dosyanın en üstünde bir kez bulunmalıdır.

randint sınırlarını yanlış anlamak

random.randint(1, 6) hem 1'i hem 6'yı sonuca dahil eder. Bazı öğrenciler 6'nın çıkmayacağını sanır; oysa altı yüzlü zar için bu tam olarak doğrusudur.

Girintiyi karıştırmak

if bloğunun altındaki satırları girintilemezsen ya da farklı boşluk kullanırsan program IndentationError verir. Her blok için 4 boşluk kullan.

Karşılaştırmada tek eşittir kullanmak

Eşitliği kontrol ederken == kullanılır. Tek = atama içindir. if kullanici = bilgisayar: yazarsan hata alırsın; doğrusu if kullanici == bilgisayar: şeklindedir.

Güvenlik notu

Bu dersteki programların hepsi kendi bilgisayarında çalışan zararsız oyunlardır. Yine de genel bir alışkanlık olarak yalnızca kendi yazdığın veya güvendiğin kodları çalıştır. Oyunlarda gerçek adını, adresini veya şifreni isteyen bir kod yazma ve kişisel bilgilerini programlara girme.

Ders özeti

Kontrol soruları

  1. random modülünü kullanmadan önce programın en üstüne hangi satırı yazmalıyız?
  2. random.randint(1, 6) en küçük ve en büyük hangi sayıları üretebilir?
  3. Bir listeden rastgele bir eleman seçmek için hangi fonksiyonu kullanırız?
  4. Taş-kağıt-makasta beraberlik hangi durumda olur?
  5. ["taş", "taş", "kağıt", "makas"] listesiyle choice kullanırsak oyun neden adil olmaz?

Cevaplar

  1. import random satırını yazmalıyız.
  2. En küçük 1, en büyük 6 sayısını üretebilir; iki sınır da seçime dahildir.
  3. random.choice fonksiyonunu kullanırız.
  4. Kullanıcı ile bilgisayarın seçimi aynı olduğunda beraberlik olur.
  5. Taş listede iki kez bulunduğu için daha sık seçilir; seçenekler eşit şansa sahip olmadığından rastgelelik adil değildir.

Kaynak ve doğrulama notu

“Rastgelelik ve Basit Oyun Mantığı” dersi için doğrulama odağı random modülünü tanıyalım ile choice: bir listeden rastgele seçim arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Kod örnekleri Python 3 sözdizimi esas alınarak hazırlanmıştır. Çalıştırma ortamına göre küçük farklar görülebileceği için örnekler önce güvenli bir çevrim içi editörde veya yerel geliştirme ortamında denenmelidir.

Sonraki ders

Modüller ve Kütüphaneler: Hazır modülleri kendi programlarımıza nasıl getirdiğimizi ve Python'un standart kütüphanesinin bize neler sunduğunu keşfediyoruz.

Quiz’i BaşlatPython Temelleri bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.