Visual basic'DE basit bir robot

Son güncelleme: 14.09.2008 03:17
  • noimage




    [SIZE="20"]Basit Bir robot Verilen komutlarla ilerleyen bir Robot. 32 *32 'lik bi karede ilerler.... d = aşağı , u = yukarı , r = sağa , l= sola olcak şekilde yazılır ... mesela r5 yazdığınızda sağa 5 adım ilerler.... aralarda birer ya da 3-5 olması farketmez boşluklar bırakarak komutları yazınız .. robot bunları teker teker uygulayacaktır isterseniz alt satıra da dewam edip text'i full doldurmakta mümkün .... önemli bir hatırlatma robotun kodları uygulayabilmesi için .. bir text dosyası açmalısınız .... ve bir de commondialog oluşturmanız gerekir...

    İYİ KULLANIMLAR :)

















    KOD FRAGMANI :

    Dim eksen, duzelt_komut1, toplam, yeni_ifade, val_kuvvet, yon, dosya_ad As String
    Dim uzunluk_komut1, x_eksen, y_eksen As Integer, val_gitme, sayac1, sayac2, sayac3, sayac4, msg_uyari As Integer

    Function Val_Yeni(ByVal x As String) As Double
    ' Metin içinden rakamları bulan bir fonksiyon.
    Dim i As Integer
    Dim c As String, sonuc As String

    For i = 1 To Len(x)
    c = Mid(x, i, 1)
    If Asc(c) >= Asc("0") And Asc(c) <= Asc("9") Then sonuc = sonuc & c
    Next
    Val_Yeni = Val(sonuc)

    End Function

    Sub Pause(miliseconds As Long)
    ' Belirtilen süre kadar ara vermeye yarar.
    Dim Wait As Double
    Wait = Timer + (miliseconds / 1000)
    Do While Timer < Wait
    DoEvents
    Loop
    End Sub



    Private Sub Form_Activate()
    msg_uyari = MsgBox("SAYIN KULLANICI, LÜTFEN İFADELERİ GİRERKEN HARFTEN SONRA BOŞLUK BIRAKMADAN İFADEYİ YAZINIZ.ÖRN. R5 L8 U5 D8...vb.", vbCritical, "HATIRLATMA")
    End Sub

    Private Sub Form_Click()

    ' Commondialog aracılığıyla dosyayı açma.

    dosya_ad = CommonDialog1.FileName

    CommonDialog1.ShowOpen

    Open CommonDialog1.FileName For Input As #1


    Do While Not (EOF(1))

    'do while - loop döngüsü tüm satırları taramaya yarar.

    Line Input #1, eksen

    duzelt_komut1 = Trim(eksen)

    uzunluk_komut1 = Len(duzelt_komut1)

    For sayac1 = 1 To uzunluk_komut1

    ' Bir satırdaki ifadeleri bulmak için yapılan for-next döngüsüdür.

    val_kuvvet = ""

    toplam = ""

    For sayac2 = 1 To uzunluk_komut1

    'Harf ve sayı ikililerini bulmak için yazılan for-next döngüsü.

    val_kuvvet = Left(duzelt_komut1, 1)

    x = Asc(val_kuvvet)

    toplam = toplam + val_kuvvet

    duzelt_komut1 = Right(duzelt_komut1, uzunluk_komut1 - sayac2)

    If val_kuvvet = " " Or x = 9 Then Exit For

    Next

    yeni_ifade = Trim(duzelt_komut1)

    duzelt_komut1 = yeni_ifade

    uzunluk_komut1 = Len(yeni_ifade)

    yon = Left(toplam, 1)

    val_gitme = Val_Yeni(toplam)

    x_eksen = Form1.ScaleWidth

    y_eksen = Form1.ScaleHeight

    'Harf ve sayı değerlerinin robotu yönlendirmesi için yazılan kodlar.

    If yon = "u" Or yon = "U" Then

    For sayac3 = 1 To val_gitme - 1

    If shape_surat.Top <= 0 Or shape_burun.Top <= 180 Or _
    shape_goz_l.Top <= 100 Or shape_goz_r.Top <= 100 Or _
    shape_agiz.Top <= 280 Then Exit For

    shape_surat.Top = CInt(shape_surat.Top) - y_eksen / 32

    shape_burun.Top = CInt(shape_burun.Top) - y_eksen / 32

    shape_goz_l.Top = CInt(shape_goz_l.Top) - y_eksen / 32

    shape_goz_r.Top = CInt(shape_goz_r.Top) - y_eksen / 32

    shape_agiz.Top = CInt(shape_agiz.Top) - y_eksen / 32

    Pause (500)

    Beep

    Next

    ElseIf yon = "R" Or yon = "r" Then

    For sayac3 = 1 To val_gitme - 1

    If x_eksen <= CInt(shape_surat.Left) Or x_eksen <= CInt(shape_burun.Left + 155) Or _
    x_eksen <= CInt(shape_goz_l.Left + 100) Or x_eksen <= CInt(shape_goz_r.Left + 200) Or _
    x_eksen <= CInt(shape_agiz.Left + 100) Then Exit For

    shape_surat.Left = CInt(shape_surat.Left) + x_eksen / 32

    shape_burun.Left = CInt(shape_burun.Left) + x_eksen / 32

    shape_goz_l.Left = CInt(shape_goz_l.Left) + x_eksen / 32

    shape_goz_r.Left = CInt(shape_goz_r.Left) + x_eksen / 32

    shape_agiz.Left = CInt(shape_agiz.Left) + x_eksen / 32

    Pause (500)

    Beep

    Next

    ElseIf yon = "L" Or yon = "l" Then

    For sayac3 = 1 To val_gitme - 1

    If shape_surat.Left <= 0 Or shape_burun.Left <= 180 Or _
    shape_goz_l.Left <= 100 Or shape_goz_r.Left <= 100 Or _
    shape_agiz.Left <= 280 Then Exit For

    shape_surat.Left = CInt(shape_surat.Left) - x_eksen / 32

    shape_burun.Left = CInt(shape_burun.Left) - x_eksen / 32

    shape_goz_l.Left = CInt(shape_goz_l.Left) - x_eksen / 32

    shape_goz_r.Left = CInt(shape_goz_r.Left) - x_eksen / 32

    shape_agiz.Left = CInt(shape_agiz.Left) - x_eksen / 32

    Pause (500)

    Beep

    Next

    ElseIf yon = "d" Or yon = "D" Then

    For sayac3 = 1 To val_gitme - 1

    If x_eksen <= CInt(shape_surat.Top) Or x_eksen <= CInt(shape_burun.Top + 155) Or _
    x_eksen <= CInt(shape_goz_l.Top + 100) Or x_eksen <= CInt(shape_goz_r.Top + 200) Or _
    x_eksen <= CInt(shape_agiz.Top + 100) Then Exit For

    shape_surat.Top = CInt(shape_surat.Top) + y_eksen / 32

    shape_burun.Top = CInt(shape_burun.Top) + y_eksen / 32

    shape_goz_l.Top = CInt(shape_goz_l.Top) + y_eksen / 32

    shape_goz_r.Top = CInt(shape_goz_r.Top) + y_eksen / 32

    shape_agiz.Top = CInt(shape_agiz.Top) + y_eksen / 32

    Pause (500)

    Beep

    Next

    End If

    Next

    Loop

    Close #1

    End Sub

    Private Sub Form_Load()

    'Robot için yapılan shape'lerin başlangıçta durması gereken yerleri.

    shape_surat.Left = 0
    shape_surat.Top = 0
    shape_burun.Left = 155
    shape_burun.Top = 180
    shape_goz_r.Top = 100
    shape_goz_r.Left = 200
    shape_goz_l.Top = 100
    shape_goz_l.Left = 100
    shape_agiz.Top = 280
    shape_agiz.Left = 100

    End Sub
#01.02.2007 02:32 0 0 0
  • Ellerine saglik kardes
#14.11.2007 14:29 0 0 0
  • teşekkürler henüz çalışmadım üzerine şimdi inceleyeceğim.
#16.08.2008 13:15 0 0 0
  • gayet başarılı olmuş emeğine sağlık
#16.08.2008 13:36 0 0 0
  • tsk sağolasın
#14.09.2008 03:17 0 0 0