Mouse ile Tıkla... Adını Yaz...

Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Sayın Levent Menteşoğlu nun desteği ve diğer arkadaşların yardımı ile inanın çok güzel bir oyun ortaya çıkacak...
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sorunuzu biraz daha açarmısınız. Userform üzerinde tüm oyuncuların kağıtları açık olarak görünecekmi? Herkesin birbiriniz kağıdını görmeden nasıl oynatacaksınız?
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Sayın Hocam iyi akşamlar...
Oyunu 3 bilgisayar oyuncusuna karşı oynuyorsunuz ve onların kağıtları sadece değişkende tutuluyor. Ve sadece attıkları görülüyor.
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
CardI(J, I) değişkeni (J) 1 den 13 e kadar dağıtılan kağıt sayısını (I) da oyuncu sayısını tanımlıyor. Burada I=1 biziz I=2 de 4 kadar da computer.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Program içinde Player ve Computer kartlarının tutulduğu CardI(J, I) ataması ile herkezin kağıt seçme ve atma olayını nasıl yürütebiliriz.?
Bunu Class Modul içinde mi yapmamız gerek yoksa UserForm üstünde devam eden oyun akışı içinde yapabilirsek nasıl yapabiliriz..?
Yukarıdaki sorunuzu biraz daha açarmısınız. Herkesin kağıt seçme ve atma olayından kastınız nedir?
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Public WithEvents resim As MSForms.Image

Private Sub resim_Click()
......
......
End Sub

Class modülünde elimizdeki kağıtları atmayı ayarladınız ama diikat ettiniz ise Card(2,1) ile computerin sadece 1 nci kağıtlarını atabiliyoruz. Benim sorduğum program içinde benim attığım kağıda göre computerlerin atacağı kağıdı nasıl belirleyebileceğim. Onun içindemi Class modül yazmak gerekecek yoksa UserFormdaki kodlarda örneğin Kağıt=1 to sondağıtılan_kağıtmiktarı döngüsünde nasıl bir modül çağıracağımki oyun kuralları içinde bilgisayara o kağıdı attırabileceğim.
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
For J = 1 To Son
'[J] O El Dağıtılan Kağıt Sayısı 1....13 oyunun cinsine göre belirleniyor.

For I = 1 To 4
' Oyuncular 1..Player 2-3-4 Computer

Dağıt (I)
'Kağıt dağıtma Animasyonu çağırılıyor

If I = 1 Then
'Player için Dağıtılan Kağıtlar el sayısı kadar
'Görünür olarak ekrana açılıyor. Yani kart image'leri
'Player in ekranda görünen 61-72 nolu image'lere atanıyor.

GoSub Player

End If

CardI(J, I) = CardB(((I - 1) * Son) + J)
'O el dağıtılan kartlar tüm oyunculara göre atanıyor.
' Burada J o el için dağıtılan kağıt miktarıdır.
' Burada I 2..3...4 olarak bilgisayar oyuncularıdır.

Next I


Kağıtlar 2 den 52 sayısına göre sıralanmıştır.
2 - Kupa 2 lisi ........ 13 - Kupa ası .... ve 52 - Sinek Ası dır.
Card(1, 2) 2nci oyuncunun elindeki örnek olarak 23 nolu karttır. Buda İmage23 olarak atıyorum Maça 4 e denk gelir.
Next J
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Şimdi anladım. Class modüldeki kodları aşağıdaki ile değiştirerek deneyin.

Kod:
Public WithEvents resim As MSForms.Image
Dim deger As Integer
Private Sub resim_Click()
deger = deger + 1
ad = Replace(resim.Name, "Image", "")
resim.Visible = False
UserForm1.Image55.Picture = resim.Picture

UserForm1.Image55.ZOrder 0
Randomize Timer
UserForm1.Image55.Left = 190 + Int(Rnd * 50) + 5
UserForm1.Image55.Top = 132
UserForm1.Image55.Visible = True
PlaySound 1, 1
Application.Wait Now + TimeValue("00:00:01")
UserForm1.Image56.Picture = UserForm1.Controls("Image" & CardI(deger, 2)).Picture
Randomize Timer
UserForm1.Image56.Left = 140 + Int(Rnd * 50) + 5
UserForm1.Image56.Top = 100
UserForm1.Image56.Visible = True
UserForm1.Image56.ZOrder 0
PlaySound 1, 1
Application.Wait Now + TimeValue("00:00:01")
UserForm1.Image57.Picture = UserForm1.Controls("Image" & CardI(deger, 3)).Picture
Randomize Timer
UserForm1.Image57.Left = 190 + Int(Rnd * 50) + 5
UserForm1.Image57.Top = 66
UserForm1.Image57.Visible = True
UserForm1.Image57.ZOrder 0
PlaySound 1, 1
Application.Wait Now + TimeValue("00:00:01")
UserForm1.Image58.Picture = UserForm1.Controls("Image" & CardI(deger, 4)).Picture
Randomize Timer
UserForm1.Image58.Left = 230 + Int(Rnd * 50) + 5
UserForm1.Image58.Top = 100
UserForm1.Image58.Visible = True
UserForm1.Image58.ZOrder 0
PlaySound 1, 1
Application.Wait Now + TimeValue("00:00:01")
End Sub
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Sayın levent isterseniz en başından Değişkenlerin tanımı ile başlayarak ve satır satır anlatabilirim.
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Tamam çok sağolun.
Şimdi ilk Sorum ben bu Class modulu ana program içinde nasıl cağıracağım?
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Özür.... aşağıdaki gibi olacaktı...

CardI(deger, 2) olarak sizin Class modülde atadığınız 2 nci oyuncunun 'değer' sıralı kağıdını; ana oyun içinden ben 'değer=3 veya değer=7 diye tanımlayıp Class module nasıl aktaracağım..
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Anlatayım:

Oyunun oynama sırası şu şekilde..zaten UserFormdaki kodlara bakıncada anlaşılabilir.
1. Kağıtlar Karılıyor.

2.O el kaç kağıt dağıtılmasına bakılıyor ve oyunculara kağıtlar dağıtılıyor.

3. Koz belirleniyor..

4. El sırası belirleniyor.

5. Sıra kimdeyse burası önemli atacağı kağıdı seçiyor. Bunu ben bir takım formuller ile yapacağım

6. Sıra oyuncuda ise biz zaten sizin Class moduülde yaptığınız gibi istediğimizi seçip atıyoruz.

7. Ama computr de sıra ise işte o zaman ben oyundan o kağıdı ona seçtirmem gerekiyor.

8. yani computer elindeki kağıtları değer+1 arttırarark sıradan atmıyor
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
9. Örneğin kendisinden önce Karo atılmış ise onunda karo atması ve elinde karo yoksa koz hangi kağıt ise onu atmasu gerekiyor...
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Yani aslında bana Class modüldeki

Private Sub resim_Click()
deger = deger + 1

değer değişkenini oyun içinden yönetme şeklini gösterirseniz olur bu iş
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Userformun kod sayfasında en üstte örneğin, "public degisken as integer" şeklinde bir değişken tanımlayın. Sonra istediğiniz değeri bu değişkene atayıp, class modül içinde userform1.degisken olarak kullanabilirsiniz.
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
public degisken as integer

de değişken sizin değer diye atadığınız değişken mi?
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Sağolun deneyeceğim, ama beni unutmayın... Şimdilik teşekkürler....
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Eğer deger değişkenini kullanacaksanız, class modül içindeki "Dim deger As Integer" ve "deger = deger + 1" satırlarını kaldırın ve aşağıdaki gibi kullanın.

CardI(userform1.deger, 3)).....
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Tamam Levent bey... Userformdaki döngüde değer değişkenine örneğin değer=6 dersem ozaman Class modülde CardI(6, 3))..... 6 ncı kağıdı atmış olur değilmi? yanlış anlamadıysam
 
Üst