teşekkur buna birde seviye ekleseydik süper olurdu. Misal 1. seviye çok yavş 2. seviye birazdaha hızlı gibi.

Diğer dillerdeki kadar gelişmiş olmasada visual basic te de oyun yapabiliyoruz. Şimdi bir klasik olan yılan oyunu yapalım. Aşağıya oyunun derlenmiş halini ve kodlarını rar layıp koydum. Bu kısmı bilgi olsun diye veriyorum... Forma bir adet timer 2 adet label, shape1(0) , shape1(1), shape1(2), shape1(3) şeklinde shape1 in 0-3 indexlerini, shape2 ve shape3 ü ekliyoruz. Form1 Height : 8085 Width : 7680 Timer1 Interval : 50 Label1 Caption : Puan Alignment : 2 - Center Height : 255 Width : 975 Top : 720 Left : 240 Label2 Caption : 0 Alignment : 2 - Center Height : 255 Width : 975 Top : 1200 Left : 240 Shape1(0) Shape : 3- Circle Height : 375 Width : 375 Top : 2520 Left : 4080 FillColor : &H0000C000& FillStyle : 0 - Solid Shape1(1) Shape : 3- Circle Height : 375 Width : 375 Top : 2520 Left : 4440 FillColor : &H00008000& FillStyle : 0 - Solid Shape1(2) Shape : 3- Circle Height : 375 Width : 375 Top : 2520 Left : 4800 FillColor : &H00008000& FillStyle : 0 - Solid Shape1(3) Shape : 3- Circle Height : 375 Width : 375 Top : 2520 Left :5160 FillColor : &H00008000& FillStyle : 0 - Solid Shape2 Shape : 3- Circle Height : 375 Width : 375 Top : 2520 Left :3360 FillColor : &H00008000& FillStyle : 0 - Solid Shape3 Shape : 0- Rectangle Height :5775 Width : 5415 Top : 360 Left :1560 FillStyle : 0 - Solid Shape 3 en aşağı alınacak. Bunları yaptıysak şu kodları yazıyoruz. Kod: Dim now_direction As Integer ' O anki yönü gösteren değişken Dim next_top As Integer ' Sıradaki hareket için ilk shapenin top değeri Dim next_left As Integer ' Sıradaki hareket için ilk shapenin left değeri Dim last_top As Integer ' Son shapenin top değeri Dim last_left As Integer ' Son shapenin left değeri Private Sub Form_KeyDown If KeyCode = 37 Then ' Sol ok tuşuna basıldıysa devam et If now_direction <> 39 Then ' Eğer yön sağ değilse devam et Timer1. Enabled = True ' Timer ı çalıştır 'Yönü belirle -- Start next_top = 0 next_left = -360 'Yönü belirle -- End now_direction = 37 ' Yeni yönü kaydet End If ElseIf KeyCode = 38 Then ' Yukarı ok tuşuna basıldıysa devam et If now_direction <> 40 Then ' Eğer yön aşağı değilse devam et Timer1. Enabled = True ' Timer ı çalıştır 'Yönü belirle -- Start next_top = -360 next_left = 0 'Yönü belirle -- End now_direction = 38 ' Yeni yönü kaydet End If ElseIf KeyCode = 39 Then ' Sağ ok tuşuna basıldıysa devam et If now_direction <> 37 Then ' Eğer yön sola değilse devam et Timer1. Enabled = True ' Timer ı çalıştır 'Yönü belirle -- Start next_top = 0 next_left = 360 'Yönü belirle -- End now_direction = 39 ' Yeni yönü kaydet End If ElseIf KeyCode = 40 Then ' Aşağı ok tuşuna basıldıysa devam et If now_direction <> 38 Then ' Eğer yön yukarı değilse devam et Timer1. Enabled = True ' Timer ı çalıştır 'Yönü belirle -- Start next_top = 360 next_left = 0 'Yönü belirle -- End now_direction = 40 ' Yeni yönü kaydet End If End If End Sub Private Sub Timer1_Timer For i = Shape1. Count - 1 To 0 Step -1 'Shapelerin yeni noktalarını belirlemek için döngü kur If i = 0 Then ' Eğer ilk parçaysa kısmıysa devam et 'Noktayı belirle -- Start Shape1 . Top = Shape1 . Top + next_top Shape1 . Left = Shape1 . Left + next_left 'Noktayı belirle -- end Else If i = Shape1. Count - 1 Then 'Eğer son parçaysa devam et 'Bulunduğu noktayı kaydet -- Start last_top = Shape1 . Top last_left = Shape1 . Left 'Bulunduğu noktayı kaydet -- End End If 'Noktayı belirle -- Start Shape1 . Top = Shape1(i - 1). Top Shape1 . Left = Shape1(i - 1). Left 'Noktayı belirle -- End End If Next If Shape1(0). Top = Shape2. Top And Shape1(0). Left = Shape2. Left Then 'Eğer yemi yerse devam et 'Yeni parçayı ekle ve düzenle -- Start Load Shape1(Shape1. Count) Shape1(Shape1. Count - 1). Top = last_top Shape1(Shape1. Count - 1). Left = last_left Shape1(Shape1. Count - 1). FillColor = 32768 Shape1(Shape1. Count - 1). ZOrder Shape1(Shape1. Count - 1). Visible = True 'Yeni parçayı ekle ve düzenle -- End 'Yeni yemin yerini belirle -- Start Shape2. Top = (Int(Rnd 15) 360) + Shape3. Top Shape2. Left = (Int(Rnd 14) 360) + Shape3. Left 'Yeni yemin yerini belirle -- End Label2. Caption = Val(Label2. Caption) + 10 'Puanı 10 arttır End If If Shape1(0). Top < 360 Or Shape1(0). Top > 5760 Or Shape1(0). Left < 1560 Or Shape1(0). Left > 6600 Then 'Eğer duvara çarptıysa devam et Timer1. Enabled = False ' Timer ı durdur answer = MsgBox '"Yeniden başlamak istiyor musunuz?" sorusunu sor If answer = vbYes Then 'Evet derse devam et 'Formu resetle -- Start For j = 4 To Shape1. Count - 1 Unload Shape1 Next Shape1(0). Top = 2520 Shape1(0). Left = 4080 Shape1(1). Top = 2520 Shape1(1). Left = 4440 Shape1(2). Top = 2520 Shape1(2). Left = 4800 Shape1(3). Top = 2520 Shape1(3). Left = 5160 Shape2. Top = 2520 Shape2. Left = 3360 Label2. Caption = "0" 'Formu resetle -- Start Exit Sub ' Sub dan çık Else End End If End If For k = 4 To Shape1. Count - 1 If Shape1(0). Top = Shape1 . Top And Shape1(0). Left = Shape1 . Left Then 'Kendine çarpyısa devam et Timer1. Enabled = False ' Timer ı durdur answer = MsgBox '"Yeniden başlamak istiyor musunuz?" sorusunu sor If answer = vbYes Then 'Evet derse devam et 'Formu resetle -- Start For j = 4 To Shape1. Count - 1 Unload Shape1 Next Shape1(0). Top = 2520 Shape1(0). Left = 4080 Shape1(1). Top = 2520 Shape1(1). Left = 4440 Shape1(2). Top = 2520 Shape1(2). Left = 4800 Shape1(3). Top = 2520 Shape1(3). Left = 5160 Shape2. Top = 2520 Shape2. Left = 3360 Label2. Caption = "0" 'Formu resetle -- Start Exit Sub ' Sub dan çık Else End End If End If Next End Sub Kratos-

oyunda timer ın interval özelliği 50 bunu azaltarak yılanı hızlandırabilirsiniz. Mesela bi combobox koyarsınız seviye 1 seçiliyse interval 100 2 seçiliyse 75 3 için 50 4 için 25 gibi...

basit ama güsel olmuş