- Konum
- BERTUNA
-
- Üyelik Tarihi
- 2 Haz 2020
-
- Mesajlar
- 5,338
-
- MFC Puanı
- 16,230
Merhaba forum üyeleri ve ziyaretçileri,
Bugün sizlerle VBA (Visual Basic for Applications) kullanarak basit bir tombala oyunu geliştirdiğim kodu paylaşmak istiyorum. Bu oyun, kullanıcı ve bilgisayar arasında geçiyor ve her iki tarafın da kartları var. Oyun, rastgele numaraların çekilmesiyle ilerliyor ve her iki tarafın kartındaki numaralar kontrol ediliyor. Kodun detayları...
Kodun Genel Yapısı:
1.Değişken Tanımlamaları:
Kullanıcının ve bilgisayarın kartları, çekilen numaralar ve puanlar için gerekli değişkenler tanımlanıyor.
2.Kart Oluşturma Fonksiyonu:
CreateCard fonksiyonu, her bir kart için rastgele numaralar oluşturuyor. Aynı numaranın tekrar edilmemesi için IsInArray fonksiyonu kullanılıyor.
3.Numara Kontrol Fonksiyonları:
IsInArray ve IsNumberDrawn fonksiyonları, kartlarda ve çekilen numaralarda belirli bir numaranın var olup olmadığını kontrol ediyor.
4.Oyun Döngüsü:
Oyun, toplam 10 numara çekilene kadar devam ediyor. Her çekilen numara için kullanıcıdan bir giriş alınıyor ve bu girişin geçerli olup olmadığı kontrol ediliyor.
5.Kazanma Kontrolü:
Her iki tarafın kartları kontrol edilerek, bir tarafın kazanıp kazanmadığı belirleniyor.
6.Sonuçların Kaydedilmesi:
Oyun sonunda, sonuçlar bir dosyaya kaydediliyor ve kullanıcıya bilgi veriliyor.
Şimdi betiğin kod içeriğini verelim....
Tombala Oyunu.vbs
Şimdiye kadar en uzun yazdığım .vbs betiği oldu.Sabahladık resmen....!!!
Kodun İlave Açıklaması :
1.Bilgisayarın Kontrolü:
Her çekilen numara için bilgisayarın kartında bu numaranın olup olmadığı kontrol ediliyor. Eğer numara kartta varsa, kullanıcıya bu bilgi veriliyor.
2.Kazanma Kontrolü:
Hem kullanıcı hem de bilgisayar için kazanma durumu kontrol ediliyor. Eğer bir tarafın kartındaki tüm numaralar işaretlenmişse (yani -1 olmuşsa), o taraf kazanmış sayılıyor ve oyun sona eriyor.
3.Sonuçların Kaydedilmesi:
Oyun sona erdiğinde, sonuçlar bir metin dosyasına kaydediliyor. Bu dosya, kullanıcının masaüstünde "Tombala Oyun Sonucu.txt" adıyla oluşturuluyor. Sonuç mesajı, kullanıcı ve bilgisayarın puanlarına göre belirleniyor.
4.Kullanıcıya Bilgilendirme:
Oyun sona erdiğinde, kullanıcıya bir mesaj kutusu ile oyunun bittiği ve sonuç dosyasının kaydedildiği bilgisi veriliyor.
Oyun Akışı
A.
Oyun başladığında, kullanıcı ve bilgisayar için kartlar oluşturuluyor.
B.
Rastgele numaralar çekiliyor ve her iki kartta bu numaraların olup olmadığı kontrol ediliyor.
C.
Kullanıcıdan bir sayı girmesi isteniyor ve bu sayı kartta varsa puanı artırılıyor.
Ç.
Oyun, toplam 10 numara çekilene kadar devam ediyor veya bir taraf kazanana kadar sürüyor.
D.
Oyun sonunda sonuçlar kaydediliyor ve kullanıcı bilgilendiriliyor.
Özetle;
Bu basit tombala oyunu, VBA ile programlamaya yeni başlayanlar için iyi bir örnek teşkil ediyor. Oyun mantığını anlamak ve kullanıcı etkileşimi sağlamak için güzel bir uygulama. Umarım bu kod ve açıklamalar, kendi projelerinizde size ilham verir!
Herhangi bir sorunuz veya öneriniz varsa, lütfen paylaşın. Geri bildirimlerinizi duymaktan memnuniyet duyarım!
Güle güle kullanın ve eğlenin...!!!
EKRAN GÖRÜNTÜLERİ :
[align=center]
[/align]
Bugün sizlerle VBA (Visual Basic for Applications) kullanarak basit bir tombala oyunu geliştirdiğim kodu paylaşmak istiyorum. Bu oyun, kullanıcı ve bilgisayar arasında geçiyor ve her iki tarafın da kartları var. Oyun, rastgele numaraların çekilmesiyle ilerliyor ve her iki tarafın kartındaki numaralar kontrol ediliyor. Kodun detayları...
Kodun Genel Yapısı:
1.Değişken Tanımlamaları:
Kullanıcının ve bilgisayarın kartları, çekilen numaralar ve puanlar için gerekli değişkenler tanımlanıyor.
2.Kart Oluşturma Fonksiyonu:
CreateCard fonksiyonu, her bir kart için rastgele numaralar oluşturuyor. Aynı numaranın tekrar edilmemesi için IsInArray fonksiyonu kullanılıyor.
3.Numara Kontrol Fonksiyonları:
IsInArray ve IsNumberDrawn fonksiyonları, kartlarda ve çekilen numaralarda belirli bir numaranın var olup olmadığını kontrol ediyor.
4.Oyun Döngüsü:
Oyun, toplam 10 numara çekilene kadar devam ediyor. Her çekilen numara için kullanıcıdan bir giriş alınıyor ve bu girişin geçerli olup olmadığı kontrol ediliyor.
5.Kazanma Kontrolü:
Her iki tarafın kartları kontrol edilerek, bir tarafın kazanıp kazanmadığı belirleniyor.
6.Sonuçların Kaydedilmesi:
Oyun sonunda, sonuçlar bir dosyaya kaydediliyor ve kullanıcıya bilgi veriliyor.
Şimdi betiğin kod içeriğini verelim....
Tombala Oyunu.vbs
Kod:
Option Explicit
Dim userCard(2, 8) ' Kullanıcının kartı (3 satır, 9 sütun)
Dim computerCard(2, 8) ' Bilgisayarın kartı (3 satır, 9 sütun)
Dim drawnNumbers(89) ' Çekilen numaralar
Dim i, j, number, isWinner, drawCount
Dim resultMessage ' Sonuç mesajı
Dim userScore, computerScore ' Puanlar
' Kart oluşturma fonksiyonu
Sub CreateCard(card)
Dim row, col, num
For row = 0 To 2
For col = 0 To 8 ' 9 sütun
Do
num = Int((90 * Rnd)) ' 0-89 arası rastgele sayı
Loop While IsInArray(card, num) ' Aynı numarayı tekrar etme
card(row, col) = num
Next
Next
End Sub
' Dizi içinde numara var mı kontrolü
Function IsInArray(card, num)
Dim i, j
IsInArray = False
For i = 0 To 2
For j = 0 To 8 ' 9 sütun
If card(i, j) = num Then
IsInArray = True
Exit Function
End If
Next
Next
End Function
' Çekilen numara dizisinde var mı kontrolü
Function IsNumberDrawn(num)
Dim i
IsNumberDrawn = False
For i = 0 To 89
If drawnNumbers(i) = num Then
IsNumberDrawn = True
Exit Function
End If
Next
End Function
' Kartları oluştur
CreateCard userCard
CreateCard computerCard
drawCount = 0 ' Çekilen numara sayısını başlat
userScore = 0 ' Kullanıcı puanını başlat
computerScore = 0 ' Bilgisayar puanını başlat
Randomize ' Rastgele sayı üretimini başlat
' Oyun döngüsü
Do While drawCount < 10 ' Toplam 10 numara çekilecek
number = Int((90 * Rnd))
If Not IsNumberDrawn(number) Then
drawnNumbers(number) = number ' Çekilen numarayı kaydet
WScript.Echo "Çekilen numara: " & number
' Kullanıcı kartında numara varsa işaretle
For i = 0 To 2
For j = 0 To 8 ' 9 sütun
If userCard(i, j) = number Then
userCard(i, j) = -1 ' İşaretle
userScore = userScore + 1 ' Kullanıcı puanını artır
End If
Next
Next
' Bilgisayar kartında numara varsa işaretle
For i = 0 To 2
For j = 0 To 8 ' 9 sütun
If computerCard(i, j) = number Then
computerCard(i, j) = -1 ' İşaretle
computerScore = computerScore + 1 ' Bilgisayar puanını artır
End If
Next
Next
' Kullanıcıdan bir sayı girmesini iste
Dim userInput
userInput = InputBox("Bir sayı girin (0-89):", "Sayı Girişi")
' Kullanıcının girdiği sayının kartta olup olmadığını kontrol et
If IsNumeric(userInput) And CInt(userInput) >= 0 And CInt(userInput) <= 89 Then
If IsInArray(userCard, CInt(userInput)) Then
WScript.Echo "Tombala! Kullanıcının kartında " & userInput & " var."
userScore = userScore + 1 ' Kullanıcı puanını artır
End If
Else
WScript.Echo "Geçersiz giriş! Lütfen 0-89 arasında bir sayı girin."
End If
' Bilgisayarın kazanma kontrolü
If IsInArray(computerCard, number) Then
WScript.Echo "Çekilen Numara: " & number & " (KARTTA VAR)"
Else
WScript.Echo "Çekilen Numara: " & number & " (KARTTA YOK)"
End If
' Bilgisayarın kazanma kontrolü
For i = 0 To 2
isWinner = True
For j = 0 To 8 ' 9 sütun
If computerCard(i, j) <> -1 Then
isWinner = False
Exit For
End If
Next
If isWinner Then
resultMessage = "Bilgisayar kazandı! Toplam Puanı: " & computerScore
WScript.Echo resultMessage ' Bilgisayar kazanırsa mesajı göster
Exit Do
End If
Next
' Kullanıcı kazanma kontrolü
For i = 0 To 2
isWinner = True
For j = 0 To 8 ' 9 sütun
If userCard(i, j) <> -1 Then
isWinner = False
Exit For
End If
Next
If isWinner Then
resultMessage = "Tebrikler! Siz kazandınız! Toplam Puanınız: " & userScore
WScript.Echo resultMessage
Exit Do
End If
Next
drawCount = drawCount + 1 ' Çekilen numara sayısını artır
End If
Loop
' Oyun sonucunu dosyaya kaydet
Dim fso, resultFile
Dim userDesktopPath
userDesktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") ' Kullanıcının masaüstü yolu
Set fso = CreateObject("Scripting.FileSystemObject")
Set resultFile = fso.CreateTextFile(userDesktopPath & "\Tombala Oyun Sonucu.txt", True) ' Kullanıcının masaüstüne kaydet
' Sonuç mesajını belirle
If resultMessage = "" Then
If userScore > computerScore Then
resultMessage = "Tebrikler! Siz kazandınız! Toplam Puanınız: " & userScore & ", Bilgisayar Puanı: " & computerScore
ElseIf computerScore > userScore Then
resultMessage = "Bilgisayar kazandı! Toplam Puanı: " & computerScore & ", Kullanıcı Puanı: " & userScore
Else
resultMessage = "Oyun berabere! Kullanıcı Puanı: " & userScore & ", Bilgisayar Puanı: " & computerScore
End If
End If
' Sonuç mesajını dosyaya yaz
If resultMessage <> "" Then
resultFile.WriteLine(resultMessage)
Else
resultFile.WriteLine("Oyun sona erdi, ancak sonuç belirlenemedi.")
End If
resultFile.Close
WScript.Echo "Oyun sona erdi. Sonuç dosyası masaüstüne kaydedildi."
Şimdiye kadar en uzun yazdığım .vbs betiği oldu.Sabahladık resmen....!!!
Kodun İlave Açıklaması :
1.Bilgisayarın Kontrolü:
Her çekilen numara için bilgisayarın kartında bu numaranın olup olmadığı kontrol ediliyor. Eğer numara kartta varsa, kullanıcıya bu bilgi veriliyor.
2.Kazanma Kontrolü:
Hem kullanıcı hem de bilgisayar için kazanma durumu kontrol ediliyor. Eğer bir tarafın kartındaki tüm numaralar işaretlenmişse (yani -1 olmuşsa), o taraf kazanmış sayılıyor ve oyun sona eriyor.
3.Sonuçların Kaydedilmesi:
Oyun sona erdiğinde, sonuçlar bir metin dosyasına kaydediliyor. Bu dosya, kullanıcının masaüstünde "Tombala Oyun Sonucu.txt" adıyla oluşturuluyor. Sonuç mesajı, kullanıcı ve bilgisayarın puanlarına göre belirleniyor.
4.Kullanıcıya Bilgilendirme:
Oyun sona erdiğinde, kullanıcıya bir mesaj kutusu ile oyunun bittiği ve sonuç dosyasının kaydedildiği bilgisi veriliyor.
Oyun Akışı
A.
Oyun başladığında, kullanıcı ve bilgisayar için kartlar oluşturuluyor.
B.
Rastgele numaralar çekiliyor ve her iki kartta bu numaraların olup olmadığı kontrol ediliyor.
C.
Kullanıcıdan bir sayı girmesi isteniyor ve bu sayı kartta varsa puanı artırılıyor.
Ç.
Oyun, toplam 10 numara çekilene kadar devam ediyor veya bir taraf kazanana kadar sürüyor.
D.
Oyun sonunda sonuçlar kaydediliyor ve kullanıcı bilgilendiriliyor.
Özetle;
Bu basit tombala oyunu, VBA ile programlamaya yeni başlayanlar için iyi bir örnek teşkil ediyor. Oyun mantığını anlamak ve kullanıcı etkileşimi sağlamak için güzel bir uygulama. Umarım bu kod ve açıklamalar, kendi projelerinizde size ilham verir!
Herhangi bir sorunuz veya öneriniz varsa, lütfen paylaşın. Geri bildirimlerinizi duymaktan memnuniyet duyarım!
Güle güle kullanın ve eğlenin...!!!
EKRAN GÖRÜNTÜLERİ :
[align=center]
[/align]