Daha pratik bir çzüm düşün.. Koddan birşey anlamadım ama sanırm algoritmada ince bir sorun olabilir.. bi anlatsaydın nasıl hareket ettiğini yılanın Çıkmam gerekiyo maksat up olsun.. diyelim yılanın başı 25 de meydana geliyor 2. parçası için sayıya +10 ekleniyor ve 35 de beliriyor. 3. parçası için ise 25 e +20 ekleniyor ve 45 de meydana geliyor. Yer değiştirmesi için yukarı gitmek istendiğinde ilk sayıdan -10 düşüyor. Aşağı gitmek istediğinde +10 ekleniyor. Sağa gitmek için +1 ekleniyor. Sola gitmek için -1 düşüyor. Diğer parçaların hareketi ise sadece bir üstündekinin yerini almak. Kısacası : Yılanın parçalarının değeri 1. parça 25 2. parça 35 3. parça 45 ise yukarı gitmek istediğinde kodlarda yaptığım şey şu : 3. parça = 2. parçanın değeri ( yani 35 i 3. parçaya aktarmak oda bir kare yukarı çıkmasını sağlıyor )2. parça = 1. parçanın değeri (25 i 2. parçaya aktarmak oda bir kare yukarı çıkmasını sağlıyor )1. parça = 1. parça değeri - 10 (25 ten 10 düşünce 15 oluyor ve buda bir kare yukarı çıkmasını sağlıyor )kısacası 1. parçanın değeri gitmek istediği yne doğru eksilirken diğer parçalarda bir ncekinin değerini alıyor. Yılan bu şekilde hareket ediyor. Yaptığım onca iyiliğin tek yanlışta unutulduğunu grdüğümden beri ktü biriyim.

up Anarsistherif...

switch case kullanaydın iyiydi. Şu haldeyken //yorum satırları yokken. okumak çok zor.

Bir uplayayım. Yaptığım onca iyiliğin tek yanlışta unutulduğunu grdüğümden beri ktü biriyim.

Daha pratik bir çzüm düşün.. Koddan birşey anlamadım ama sanırm algoritmada ince bir sorun olabilir.. bi anlatsaydın nasıl hareket ettiğini yılanın Çıkmam gerekiyo maksat up olsun.. Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... .. Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."

Olayı byle çzmeye çalışmakla matrisi diziye çevirmişsin.. diğer yandan 3. parça yerinde kalıyorsa hareket kontrol programında sıkıntı vardır 3. parça için icraat yapmıyordur.. çıkış koşullarında yanlış düşünmü ş olabilirsin.. Ben pratik olarak şyle düşündüm nce hedef pozisyonlarını sırasıyla bir diziye aktarırım sonra uygun şekilde bu pozisyonlara karlerin indislerini atarım.. .. ya da en arkdaki parçayı hedef kareye atlatırsan da olur praik olarak yılan ilerler.. aynı renk olursa bişi farketmez Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... .. Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."

Matrislerle ilgili birşey bilmiyordum. Staj yerinde bir abi sağolsun biraz gsterdi tamamlayıp snake yapmamı istedi. 100 tane label ile 10x10 bi matris oluşturup rastgele sayı gnderip yılanı ortaya çıkartıyorum. ilk parça yukarı giderken - 10 aşağı giderken + 10sağa giderken + 1sola giderken - 1 değer alıyor. 2. parça ilk parçanın değer almadan nceki haline geçiyor 3. parça 2. parçanın değer almadan nceki haline geçiyor yani ;ilk hali 1. parça 45 2. parça 55 3. parça 65 ise yukarı gittiğinde 1. parça 35 2. parça 45 3. parça 55 oluyor. Parçalara eski değerleri aktarma konusunda bir sıkıntı yok ama sıkıntı şurada başlıyor. Kısa dnüş yapmak istediğimde ilk parça sağa gidiyor 2. parça ilk parçanın değerini alıyor ama 3. sü olduğu yerde takılıyor. Şu haldeyken sağa gittiğimde ilk parçanın 26 2. parçanın 25 3. parçanın 15 olması gerekiyor. Ama durum bu : Nasıl çzeceğimi bir türlü bulamadım kodlarıda atayım : Public Class Form1 Dim l As Label Dim lbl As New List Dim labelsayisi As New List Dim random, randomyon As Integer Dim surekli As String Dim yukari, asagi, saga, sola As Boolean Private Sub label_olustur Try Dim sira, kolon As Integer For i As Integer = 1 To 100 l = New Label sira = Math. Ceiling(i / 10) kolon = i Mod 10 If kolon = 0 Then kolon = kolon + 10 l. Name = "lbl" & i l. Height = 50 l. Width = 50 l. TextAlign = System. Drawing. ContentAlignment. MiddleCenter l. Top = 20 + ((sira - 1) 55) l. Left = 20 + (kolon 55) l. Text = i. ToString l. BorderStyle = System. Windows. Forms. BorderStyle. FixedSingle l. BackColor = Color. White l. Font = New Font("", 8, FontStyle. Bold) lbl. Add GroupBox1. Controls. Add Next Catch ex As Exception MsgBox End Try End Sub Private Sub random_olustur labelsayisi. Clear Randomize random = Int(Rnd 100) labelsayisi. Add : labelsayisi. Add(random + 10) : labelsayisi. Add(random + 20) randomyon = Int(Rnd 4) surekli = randomyon. ToString End Sub Private Sub Form1_Load Handles MyBase. Load label_olustur random_olustur End Sub Private Sub Button1_Click Handles Button1. Click Timer1. Enabled = False random_olustur boyama 'Timer1. Enabled = True End Sub Public Sub boyama(ByVal boya As List Try For i As Integer = 0 To lbl. Count - 1 lbl . BackColor = Color. White : lbl . ForeColor = Color. Black Next For b As Integer = 0 To labelsayisi. Count - 1 If lbl(labelsayisi . BackColor = Color. White Then lbl(labelsayisi . BackColor = Color. Black : lbl(labelsayisi . ForeColor = Color. White Else lbl(labelsayisi . BackColor = Color. White : lbl(labelsayisi . ForeColor = Color. Black End If Next lbl(labelsayisi(0)). BackColor = Color. Red lbl(labelsayisi(1)). BackColor = Color. Green lbl(labelsayisi(2)). BackColor = Color. Black Catch ex As Exception End Try End Sub Public Sub hareket_ettir If move = "1" Then For i As Integer = labelsayisi. Count - 1 To 1 Step -1 If labelsayisi(i - 1) - 10 = labelsayisi Or labelsayisi(i - 1) + 90 = labelsayisi Then Else labelsayisi = labelsayisi(i - 1) If i = 1 Then labelsayisi(0) = labelsayisi(0) - 10 End If If labelsayisi(0) < 0 Then labelsayisi(0) = labelsayisi(0) + 100 End If End If Next End If boyama If move = "2" Then For i As Integer = labelsayisi. Count - 1 To 1 Step -1 If labelsayisi(i - 1) + 10 = labelsayisi Or labelsayisi(i - 1) - 90 = labelsayisi Then Else labelsayisi = labelsayisi(i - 1) If i = 1 Then labelsayisi(0) = labelsayisi(0) + 10 End If If labelsayisi(0) >= 100 Then labelsayisi(0) = labelsayisi(0) - 100 End If End If Next End If boyama If move = "3" Then For i As Integer = labelsayisi. Count - 1 To 1 Step -1 If labelsayisi(i - 1) - 1 = labelsayisi Or labelsayisi(i - 1) + 9 = labelsayisi Then Else labelsayisi = labelsayisi(i - 1) If i = 1 Then labelsayisi(0) = labelsayisi(0) - 1 If labelsayisi(0) Mod 10 = 9 Or labelsayisi(0) < 0 Then labelsayisi(0) = labelsayisi(0) + 10 End If End If boyama End If Next End If If move = "4" Then For i As Integer = labelsayisi. Count - 1 To 1 Step -1 If labelsayisi(i - 1) + 1 = labelsayisi Or labelsayisi(i - 1) - 9 = labelsayisi Then Else labelsayisi = labelsayisi(i - 1) If i = 1 Then labelsayisi(0) = labelsayisi(0) + 1 If labelsayisi(0) Mod 10 = 0 Or labelsayisi(0) < 0 Then labelsayisi(0) = labelsayisi(0) - 10 End If End If boyama End If Next End If Label1. Text = "baş red : " + labelsayisi(0). ToString Label2. Text = "orta green : " + labelsayisi(1). ToString Label3. Text = "son black : " + labelsayisi(2). ToString End Sub Private Sub Button1_KeyDown Handles Button1. KeyDown Try If e. KeyCode = Keys. W Or e. KeyCode = Keys. Up Then hareket_ettir("1") surekli = "1" End If If e. KeyCode = Keys. S Or e. KeyCode = Keys. Down Then hareket_ettir("2") surekli = "2" End If If e. KeyCode = Keys. A Or e. KeyCode = Keys. Left Then hareket_ettir("3") surekli = "3" End If If e. KeyCode = Keys. D Or e. KeyCode = Keys. Right Then hareket_ettir("4") surekli = "4" End If Catch ex As Exception MsgBox End Try End Sub Private Sub Timer1_Tick Handles Timer1. Tick hareket_ettir End Sub End Class Yaptığım onca iyiliğin tek yanlışta unutulduğunu grdüğümden beri ktü biriyim.

Haklısın hocam ama pek üstünde duramadım ilk aklıma gelen şekilde yazdım maalesef. Yaptığım onca iyiliğin tek yanlışta unutulduğunu grdüğümden beri ktü biriyim.

Şimdi şyle matrisi ve yılanı oluşturdun diyelim yılanı oluşturan hücreleri sıaralı olarak yılanın şu andaki pozisyonu YŞAP dizisinde tutalım bundan sonra hareket verme ve yanma koşulları devreye girecek ncelikle yn koşullarını denetlememiz gerekli bir hareket denetleme bloğu yapalım yılana verilen yn mevcut ynün tam aksi ise yn değişmeycek sonra yanma koşulları denetlencek hedef hücre matris sınırları dışındaysa yandın ya da yılan hedef hücreye yerleştiğinde orda yılanın gvdesi varsa yandın olacak hareket denetleme bloğu çıkışı program bu bloğu geçtiyse sorun yok oyuna devam hareket bloğuna geçelim ncelikle yılanın konumunu değerlendirelim //senin yılan mesela 5 elemanlı olsun beslenmiyor olsun yılanın şu andaki pozisyonu YŞAP=( 45,44,34,33,23) olsun (kafa 45te varsayıyorum) // yılan buardan nereye haret ederse etsin yılanın en son lelmanı diziden atılırken // hedef hücre diziye katılacaktır olan sadece budur 46 ya gitse 46,45,44,34,33 olur diğerlerine gitse başa 35 ya da 55 gelir her halukarda YŞAP dizisinden son eleman silinir hedef hücre dizinin başına gelir Yılanın Hedef Pozisyonu YHP=(HH,.. 33) dizisini oluşturduk Grüntüleme Bloğu Yılanı yeni pozisyonunda grüntüledik GB çıkışı YŞAP=YHP yapıp hareket denetleme bloğuna dn Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... .. Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."