EKRAN GÖRÜNTÜSÜ :

Kod: Tümünü seç
# ============================================================
# TOMBALA OYUNU v1.0
# Windows PowerShell Versiyonu (PS 5.1 ve 7.x Uyumlu)
# ============================================================
# Oyun Mantığı:
# - 0-89 arası 90 sayılık havuz
# - 3 satır x 9 sütun = 27 sayılık kartlar (kullanıcı + bilgisayar)
# - 10 çekiliş yapılır
# - Bir satır tamamen dolan kazanır
# ============================================================
# Türkçe karakter desteği
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
# ============================================================
# SABİTLER
# ============================================================
$RANGE_MAX = 90 # 0-89 arası
$TOTAL_DRAWS = 10 # Toplam çekiliş sayısı
$ROWS = 3 # Kart satır sayısı
$COLS = 9 # Kart sütun sayısı
# ============================================================
# YARDIMCI FONKSİYONLAR
# ============================================================
# Rastgele kart oluştur (3x9 = 27 benzersiz sayı)
function New-TombalaCard {
# 0-89 arası 27 benzersiz sayı seç
$numbers = 0..($RANGE_MAX - 1) | Get-Random -Count ($ROWS * $COLS)
# 3x9 matrise yerleştir (hashtable olarak)
$card = @{}
$index = 0
for ($r = 0; $r -lt $ROWS; $r++) {
for ($c = 0; $c -lt $COLS; $c++) {
$card["$r,$c"] = $numbers[$index]
$index++
}
}
return $card
}
# Kartı ekrana yazdır
function Show-Card {
param(
[hashtable]$Card,
[string]$Title,
[System.ConsoleColor]$Color = [System.ConsoleColor]::White
)
Write-Host ""
Write-Host "--- $Title ---" -ForegroundColor $Color
Write-Host ""
for ($r = 0; $r -lt $ROWS; $r++) {
$line = " "
for ($c = 0; $c -lt $COLS; $c++) {
$val = $Card["$r,$c"]
if ($val -eq -1) {
# İşaretlenmiş sayı
$line += "[ X ] "
} else {
$line += ("[{0,2}] " -f $val)
}
}
Write-Host $line -ForegroundColor $Color
}
Write-Host ""
}
# Kartta sayı kontrolü ve işaretleme
function Test-CardNumber {
param(
[hashtable]$Card,
[int]$Number
)
foreach ($key in $Card.Keys) {
if ($Card[$key] -eq $Number) {
$Card[$key] = -1 # İşaretle
return $true
}
}
return $false
}
# Satır kazanma kontrolü (bir satır tamamen -1 ise)
function Test-CardWin {
param([hashtable]$Card)
for ($r = 0; $r -lt $ROWS; $r++) {
$win = $true
for ($c = 0; $c -lt $COLS; $c++) {
if ($Card["$r,$c"] -ne -1) {
$win = $false
break
}
}
if ($win) { return $true }
}
return $false
}
# Güvenli sayı girişi
function Read-ValidNumber {
param(
[string]$Prompt,
[int]$Min,
[int]$Max
)
while ($true) {
$input = (Read-Host $Prompt).Trim()
if ([string]::IsNullOrWhiteSpace($input)) {
Write-Host "Boş giriş kabul edilmez." -ForegroundColor Red
continue
}
$num = 0
if ([int]::TryParse($input, [ref]$num)) {
if ($num -ge $Min -and $num -le $Max) {
return $num
} else {
Write-Host "Hata: Sayı $Min ile $Max arasında olmalı." -ForegroundColor Red
}
} else {
Write-Host "Hata: Geçerli bir tam sayı girin." -ForegroundColor Red
}
}
}
# ============================================================
# OYUN BAŞLANGICI
# ============================================================
Clear-Host
Write-Host "============================================" -ForegroundColor Cyan
Write-Host " TOMBALA OYUNU v1.0" -ForegroundColor Cyan
Write-Host "============================================" -ForegroundColor Cyan
Write-Host ""
Write-Host "Kurallar:" -ForegroundColor Yellow
Write-Host " - 0 ile 89 arasında 90 sayılık havuz" -ForegroundColor Gray
Write-Host " - 3x9 = 27 sayılık kartlar" -ForegroundColor Gray
Write-Host " - $TOTAL_DRAWS çekiliş yapılacak" -ForegroundColor Gray
Write-Host " - Bir satırı ilk tamamlayan kazanır" -ForegroundColor Gray
Write-Host ""
Read-Host "Başlamak için ENTER..."
# ============================================================
# KARTLARI OLUŞTUR
# ============================================================
$userCard = New-TombalaCard
$computerCard = New-TombalaCard
$userScore = 0
$computerScore = 0
$drawnNumbers = @{} # Çekilen sayılar (tekrar kontrolü için)
$result = $null
# Kartları göster
Show-Card -Card $userCard -Title "SİZİN KARTINIZ" -Color Green
Show-Card -Card $computerCard -Title "BİLGİSAYARIN KARTI" -Color Magenta
# ============================================================
# ANA OYUN DÖNGÜSÜ
# ============================================================
for ($drawCount = 1; $drawCount -le $TOTAL_DRAWS; $drawCount++) {
Clear-Host
Write-Host "============================================" -ForegroundColor Cyan
Write-Host " ÇEKİLİŞ: $drawCount / $TOTAL_DRAWS" -ForegroundColor Cyan
Write-Host "============================================" -ForegroundColor Cyan
Write-Host ""
# Rastgele sayı çek (tekrar etmeyen)
$number = -1
do {
$number = Get-Random -Minimum 0 -Maximum $RANGE_MAX
} while ($drawnNumbers.ContainsKey($number))
$drawnNumbers[$number] = $true
Write-Host ("ÇEKİLEN NUMARA: {0,2}" -f $number) -ForegroundColor Yellow
Write-Host ""
# Kartlarda kontrol et
$userHit = Test-CardNumber -Card $userCard -Number $number
$computerHit = Test-CardNumber -Card $computerCard -Number $number
if ($userHit) {
$userScore++
Write-Host "✓ Kartınızda var! (katılıyorum puan)" -ForegroundColor Green
} else {
Write-Host "✗ Kartınızda yok." -ForegroundColor Red
}
if ($computerHit) {
$computerScore++
Write-Host "✓ Bilgisayarın kartında var! (katılıyorum puan)" -ForegroundColor Green
}
Write-Host ""
Write-Host "Skor: Siz [$userScore] - Bilgisayar [$computerScore]" -ForegroundColor White
Write-Host ""
# Güncel kartları göster
Show-Card -Card $userCard -Title "SİZİN KARTINIZ" -Color Green
Show-Card -Card $computerCard -Title "BİLGİSAYARIN KARTI" -Color Magenta
# Kullanıcıdan tahmin iste
Write-Host "--- Tahmin Zamanı ---" -ForegroundColor Cyan
$userGuess = Read-ValidNumber -Prompt "Kartınızdan bir sayı tahmin edin (0-89)" -Min 0 -Max ($RANGE_MAX - 1)
if (Test-CardNumber -Card $userCard -Number $userGuess) {
$userScore++
Write-Host "Tombala! Kartınızda var. (katılıyorum puan)" -ForegroundColor Green
} else {
Write-Host "Kartınızda yok." -ForegroundColor Red
}
Write-Host ""
# Kazanan kontrolü
if (Test-CardWin -Card $computerCard) {
$result = "Bilgisayar kazandı! Puan: $computerScore - $userScore"
break
}
if (Test-CardWin -Card $userCard) {
$result = "Tebrikler! Kazandınız! Puan: $userScore - $computerScore"
break
}
Read-Host "Sonraki çekiliş için ENTER..."
}
# ============================================================
# OYUN SONU
# ============================================================
Clear-Host
Write-Host "============================================" -ForegroundColor Cyan
Write-Host " OYUN BİTTİ" -ForegroundColor Cyan
Write-Host "============================================" -ForegroundColor Cyan
Write-Host ""
if ($null -eq $result) {
# Çekiliş bitti, puana göre kazanan belirle
if ($userScore -gt $computerScore) {
$result = "Kazandınız! $userScore - $computerScore"
} elseif ($computerScore -gt $userScore) {
$result = "Bilgisayar kazandı! $computerScore - $userScore"
} else {
$result = "Berabere! $userScore - $computerScore"
}
}
Write-Host $result -ForegroundColor $(if ($result -like "*Kazandınız*") { "Green" } elseif ($result -like "*Bilgisayar*") { "Red" } else { "Yellow" })
Write-Host ""
# ============================================================
# SONUCU MASAÜSTÜNE KAYDET
# ============================================================
$desktopPath = [Environment]::GetFolderPath("Desktop")
$outputFile = Join-Path -Path $desktopPath -ChildPath "Tombala_Oyun_Sonucu.txt"
$report = @"
============================================
TOMBALA OYUNU SONUCU
============================================
Tarih: $(Get-Date -Format "dd/MM/yyyy HH:mm:ss")
$report
Skor:
Siz : $userScore
Bilgisayar : $computerScore
Sonuç: $result
============================================
"@
try {
[System.IO.File]::WriteAllText($outputFile, $report, [System.Text.Encoding]::UTF8)
Write-Host "Sonuç masaüstüne kaydedildi:" -ForegroundColor Green
Write-Host " $outputFile" -ForegroundColor White
} catch {
Write-Host "Dosya kaydedilemedi: $($_.Exception.Message)" -ForegroundColor Red
}
Write-Host ""
Read-Host "Çıkmak için ENTER..."Oyun Akışı
Kod: Tümünü seç
1. İki kart oluşturulur (kullanıcı + bilgisayar) - 3x9 = 27 sayı
2. 10 çekiliş döngüsü başlar:
a. Rastgele sayı çekilir (0-89, tekrar etmez)
b. Her iki kartta kontrol edilir
c. Varsa işaretlenir (-1) ve puan verilir
d. Kullanıcıdan tahmin istenir
e. Kazanan kontrol edilir (bir satır tamamen dolarsa)
3. Oyun biter:
- Satır tamamlayan kazanır
- Yoksa puana göre kazanan belirlenir
4. Sonuç masaüstüne "Tombala_Oyun_Sonucu.txt" olarak kaydedilirKod: Tümünü seç
# PowerShell'de çalıştır
.\tombala_oyunu_v1.0.ps1
# Execution Policy hatası alırsanız:
powershell.exe -ExecutionPolicy Bypass -File ".\tombala_oyunu_v1.0.ps1"Görsel Özellikler
Renkli kart gösterimi: Kullanıcı kartı yeşil, bilgisayar kartı mor renkte
İşaretlenmiş sayılar: [ X ] olarak gösterilir
Canlı skor takibi: Her çekilişte güncel skor gösterilir
Temiz ekran: Her çekilişte Clear-Host ile ekran temizlenir
UTF-8 dosya kaydı: Türkçe karakterler bozulmadan masaüstüne kaydedilir
İyi eğlenceler!



