Cần cao thủ C hoặc vb giúp

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi saucholoi, 29/3/10.

  1. saucholoi

    saucholoi Mr & Ms Pac-Man

    Tham gia ngày:
    21/2/06
    Bài viết:
    239
    Em có một đoạn code VB ai có thể giúp em dịch sang C hoặc java cũng được,hoặc nếu không được thì comment bên cạnh các dòng lệnh các tác dụng của từng cậu lệnh tương ứng cũng được.

    Public Class ctrlXe
    Inherits ctrlQuanCo
    Public Sub New(ByVal ViTri As Point, ByVal mau As String)

    SetViTri(ViTri)

    If mau = "do" Then
    SetTenQuanCo("xe")
    SetHinh("xedo.bmp")
    SetMau(mau)
    Else
    SetHinh("xeden.bmp")
    SetTenQuanCo("xe")
    SetMau(mau)
    End If

    End Sub
    Public Overrides Function TimVitri() As ArrayList
    Dim A As ArrayList = Me.GetA
    Dim B As ArrayList = Me.GetB
    Dim mang As ArrayList = New ArrayList
    Dim left As Integer = 5
    Dim right As Integer = 389
    Dim top As Integer = 3
    Dim bottom As Integer = 453
    Dim pos As Point = Me.GetViTri()

    Dim flag As Boolean = True
    If (Me.GetMau() = "do") Then
    '====================================

    While ((pos.X - 48) >= left) 'giam cot
    'khi toi quan co cua minh thi dung

    For i As Integer = 0 To A.Count - 1
    Dim quanco As ctrlQuanCo = A(i)
    If Not (quanco Is Nothing) Then
    If (pos.X - 48) = quanco.GetViTri().X And (pos.Y = quanco.GetViTri().Y) Then
    flag = False
    Exit For
    End If
    End If
    Next
    'khi toi quan co cua dich lan 1 thi them vao, roi dung
    For i As Integer = 0 To B.Count - 1
    Dim quanco As ctrlQuanCo = B(i)
    If Not (quanco Is Nothing) Then
    If (pos.X - 48) = quanco.GetViTri().X And (pos.Y = quanco.GetViTri().Y) Then
    mang.Add(New Point(pos.X - 48, pos.Y))
    Exit While
    End If
    End If

    Next


    pos.X -= 48

    If flag <> False Then
    mang.Add(New Point(pos.X, pos.Y))
    End If



    End While


    '====================================

    pos = Me.GetViTri()
    flag = True
    While ((pos.X + 48) <= right) 'tang cot

    For i As Integer = 0 To A.Count - 1
    Dim quanco As ctrlQuanCo = A(i)
    If Not (quanco Is Nothing) Then
    If (pos.X + 48) = quanco.GetViTri().X And (pos.Y = quanco.GetViTri().Y) Then
    flag = False
    Exit For
    End If
    End If
    Next

    'khi toi quan co cua dich lan 1 thi them vao, roi dung
    For i As Integer = 0 To B.Count - 1
    Dim quanco As ctrlQuanCo = B(i)
    If Not (quanco Is Nothing) Then
    If (pos.X + 48) = quanco.GetViTri().X And (pos.Y = quanco.GetViTri().Y) Then


    mang.Add(New Point(pos.X + 48, pos.Y))
    Exit While



    End If
    End If
    Next
    pos.X += 48

    If flag <> False Then
    mang.Add(New Point(pos.X, pos.Y))
    End If

    End While


    '====================================

    flag = True
    pos = Me.GetViTri()
    While ((pos.Y - 50) >= top) 'giam dong

    For i As Integer = 0 To A.Count - 1
    Dim quanco As ctrlQuanCo = A(i)
    If Not (quanco Is Nothing) Then
    If (pos.Y - 50) = quanco.GetViTri().Y And (pos.X = quanco.GetViTri().X) Then
    flag = False
    Exit For
    End If
    End If
    Next

    'khi toi quan co cua dich lan 1 thi them vao, roi dung
    For i As Integer = 0 To B.Count - 1
    Dim quanco As ctrlQuanCo = B(i)
    If Not (quanco Is Nothing) Then
    If (pos.Y - 50) = quanco.GetViTri().Y And (pos.X = quanco.GetViTri().X) Then


    mang.Add(New Point(pos.X, pos.Y - 50))
    Exit While
    End If


    End If
    Next
    pos.Y -= 50


    If flag <> False Then
    mang.Add(New Point(pos.X, pos.Y))
    End If

    End While
    '=========================
    pos = Me.GetViTri()

    flag = True
    While ((pos.Y + 50) <= bottom) 'tang dong

    For i As Integer = 0 To A.Count - 1
    Dim quanco As ctrlQuanCo = A(i)
    If Not (quanco Is Nothing) Then
    If (pos.Y + 50) = quanco.GetViTri().Y And (pos.X = quanco.GetViTri().X) Then
    flag = False
    Exit For
    End If
    End If
    Next

    'khi toi quan co cua dich lan 1 thi them vao, roi dung
    For i As Integer = 0 To B.Count - 1
    Dim quanco As ctrlQuanCo = B(i)
    If Not (quanco Is Nothing) Then
    If (pos.Y + 50) = quanco.GetViTri().Y And (pos.X = quanco.GetViTri().X) Then

    mang.Add(New Point(pos.X, pos.Y + 50))
    Exit While


    End If
    End If
    Next
    pos.Y += 50

    If flag <> False Then
    mang.Add(New Point(pos.X, pos.Y))
    End If

    End While



    '===============xet quan co Den===============
    Else 'den
    pos = Me.GetViTri()

    flag = True
    While ((pos.X - 48) >= left) 'giam cot

    For i As Integer = 0 To B.Count - 1
    Dim quanco As ctrlQuanCo = B(i)
    If Not (quanco Is Nothing) Then
    If ((pos.X - 48) = quanco.GetViTri().X) And (pos.Y = quanco.GetViTri().Y) Then
    flag = False
    Exit For
    End If
    End If
    Next

    'khi toi quan co cua dich lan 1 thi them vao, roi dung
    For i As Integer = 0 To A.Count - 1
    Dim quanco As ctrlQuanCo = A(i)
    If Not (quanco Is Nothing) Then
    If (pos.X - 48) = quanco.GetViTri().X And (pos.Y = quanco.GetViTri().Y) Then


    mang.Add(New Point(pos.X - 48, pos.Y))
    Exit While
    End If

    End If
    Next
    pos.X -= 48
    'If flag = False Then
    ' Exit While
    'End If

    If flag <> False Then
    mang.Add(New Point(pos.X, pos.Y))
    End If

    End While



    '====================================
    pos = Me.GetViTri()

    flag = True
    While ((pos.X + 48) <= right) 'tang cot

    For i As Integer = 0 To B.Count - 1
    Dim quanco As ctrlQuanCo = B(i)
    If Not (quanco Is Nothing) Then
    If (pos.X + 48) = quanco.GetViTri().X And (pos.Y = quanco.GetViTri().Y) Then
    flag = False
    Exit For
    End If
    End If
    Next

    'khi toi quan co cua dich lan 1 thi them vao, roi dung
    For i As Integer = 0 To A.Count - 1
    Dim quanco As ctrlQuanCo = A(i)
    If Not (quanco Is Nothing) Then
    If (pos.X + 48) = quanco.GetViTri().X And (pos.Y = quanco.GetViTri().Y) Then


    mang.Add(New Point(pos.X + 48, pos.Y))
    Exit While


    End If
    End If
    Next
    pos.X += 48
    'If flag = False Then
    ' Exit While
    'End If

    If flag <> False Then
    mang.Add(New Point(pos.X, pos.Y))
    End If

    End While


    '====================================
    pos = Me.GetViTri()

    flag = True
    While ((pos.Y - 50) >= top) 'giam dong

    For i As Integer = 0 To B.Count - 1
    Dim quanco As ctrlQuanCo = B(i)
    If Not (quanco Is Nothing) Then
    If (pos.Y - 50) = quanco.GetViTri().Y And (pos.X = quanco.GetViTri().X) Then
    flag = False
    Exit For
    End If
    End If
    Next

    'khi toi quan co cua dich lan 1 thi them vao, roi dung
    For i As Integer = 0 To A.Count - 1
    Dim quanco As ctrlQuanCo = A(i)
    If Not (quanco Is Nothing) Then
    If (pos.Y - 50) = quanco.GetViTri().Y And (pos.X = quanco.GetViTri().X) Then


    mang.Add(New Point(pos.X, pos.Y - 50))
    Exit While

    End If
    End If
    Next
    pos.Y -= 50


    If flag <> False Then
    mang.Add(New Point(pos.X, pos.Y))
    End If

    End While


    '====================================
    pos = Me.GetViTri()

    flag = True
    While ((pos.Y + 50) <= bottom) 'tang dong
    If pos.Y = 303 Then
    Dim thu As Boolean = True

    End If
    For i As Integer = 0 To B.Count - 1
    Dim quanco As ctrlQuanCo = B(i)
    If Not (quanco Is Nothing) Then
    If (pos.Y + 50) = quanco.GetViTri().Y And (pos.X = quanco.GetViTri().X) Then
    flag = False

    Exit For
    End If
    End If
    Next

    'khi toi quan co cua dich lan 1 thi them vao, roi dung
    For i As Integer = 0 To A.Count - 1
    Dim quanco As ctrlQuanCo = A(i)
    If Not (quanco Is Nothing) Then
    If (pos.Y + 50) = quanco.GetViTri().Y And (pos.X = quanco.GetViTri().X) Then
    mang.Add(New Point(pos.X, pos.Y + 50))
    Exit While
    End If
    End If
    Next
    pos.Y += 50


    If flag <> False Then
    mang.Add(New Point(pos.X, pos.Y))
    End If

    End While
    End If

    Return mang

    End Function
    End Class
     

Chia sẻ trang này