Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: giải thích code C# game caro?

  1. #1
    Ngày gia nhập
    01 2013
    Bài viết
    2

    Mặc định giải thích code C# game caro?

    mình mới học môn này nên không hiểu hết, pro nào biết thì giải thích hộ mình đoạn code này với nha! giải thích cụ thể càng tốt
    Visual C# Code:
    1.  Graphics g;
    2.        
    3.         int r = 30;
    4.         int c = 30;
    5.         int dd = 30;
    6.         int[,] arr;
    7.         int d = 5;
    8.         int flag;
    9.        
    10.  
    11.         public Form1()
    12.         {
    13.             InitializeComponent();
    14.             arr = new int[r, c];
    15.             SetArr(arr, r, c);
    16.         }
    17.  
    18.        
    19.         private void Form1_Paint(object sender, PaintEventArgs e)
    20.         {
    21.             //g = new Graphics();
    22.             g = this.CreateGraphics();
    23.  
    24.             for (int i = 0; i <= r; i++)
    25.                 g.DrawLine(new Pen(Color.Red, 1), 0, i * dd, r * dd, i * dd);
    26.             for (int j = 0; j <= c; j++)
    27.                 g.DrawLine(new Pen(Color.Blue, 1), j * dd, 0, j * dd, c * dd);
    28.         }
    29.  
    30.         private void Form1_MouseDown(object sender, MouseEventArgs e)
    31.         {
    32.             if (e.X >= 10 && e.X < r * 15 && e.Y >= 10 && e.Y < c * 15)
    33.             {
    34.                 int x = (int)((e.X) / dd);
    35.                 int y = (int)((e.Y) / dd);
    36.  
    37.                 if (e.Button.ToString() == "Left")
    38.                 {
    39.  
    40.                     if (arr[x, y] == 0 && flag == 0)
    41.                     {
    42.                         // Gan gia tri va ve X
    43.                         arr[x, y] = 1;
    44.                         Ve_X(x, y);
    45.                         // Dat co
    46.                         flag = 1;
    47.                         // Kiem tra thang
    48.                         if (Total_Check(x, y))
    49.                         {
    50.                             MessageBox.Show("Ban X Thang Rui"
    51.                                 + "\nChia Buon Voi Ban O nhe huhu...");
    52.                             Application.Restart();
    53.                         }
    54.  
    55.                     }
    56.                 }
    57.  
    58.                 if (e.Button.ToString() == "Right")
    59.                 {
    60.                     if (arr[x, y] == 0 && flag == 1)
    61.                     {
    62.                         arr[x, y] = 2;
    63.                         Ve_O(x, y);
    64.                         // Goi ham Check_Win
    65.  
    66.                         // Bo co
    67.                         flag = 0;
    68.                         if (Total_Check(x, y))
    69.                         {
    70.                             MessageBox.Show("Ban O Thang Roi"
    71.                                 + "\nBan X Co len hura..");
    72.                             Application.Restart();
    73.  
    74.                         }
    75.  
    76.  
    77.                     }
    78.                 }
    79.  
    80.             }
    81.  
    82.         }
    Đã được chỉnh sửa lần cuối bởi nndung179 : 16-01-2013 lúc 12:19 AM.

  2. #2
    Ngày gia nhập
    08 2012
    Bài viết
    574

    Cho có 1 phần mã.

    Mình giải thích theo cách hiểu tối đa thôi .
    Visual C# Code:
    1.  Graphics g;
    2.        
    3.         int r = 30; // Số dòng
    4.         int c = 30; // Số cột
    5.         int dd = 30; // Độ lớn cảu ô vuông theo chiều dài và rộng.
    6.         int[,] arr; // Mảng đánh dấu ô đã đánh hay chưa.
    7.         int d = 5; // KHÔNG RÕ. Có thể đây là số quân cờ để chiến thắng.
    8.         int flag; // Đánh dấu lượt người chơi nào. LÁ CỜ NÀY CÓ THỂ DÙNG KIỂU bool CHO TIỆN.
    9.        
    10.  
    11.         public Form1()
    12.         {
    13.             InitializeComponent();
    14.             arr = new int[r, c]; // Khởi tạo ban đầu cho mảng.
    15.             SetArr(arr, r, c); // KHÔNG RÕ.
    16.         }
    17.  
    18.        
    19.         private void Form1_Paint(object sender, PaintEventArgs e)
    20.         {
    21.             //g = new Graphics();
    22.             g = this.CreateGraphics(); // Lấy đối tượng đồ họa hiện thời của Form
    23.  
    24.             for (int i = 0; i <= r; i++) // Lặp qua hết các dòng...
    25.                 // ...để vẽ các đường thẳng ngang.
    26.                 g.DrawLine(new Pen(Color.Red, 1), 0, i * dd, r * dd, i * dd);
    27.             for (int j = 0; j <= c; j++) // Lặp qua hết các cột...
    28.                 // ...để vẽ các đường thẳng dọc.
    29.                 g.DrawLine(new Pen(Color.Blue, 1), j * dd, 0, j * dd, c * dd);
    30.             // Sau khi xong các thao tác trên thì sẽ được một vùng kẻ ô li.
    31.         }
    32.  
    33.         private void Form1_MouseDown(object sender, MouseEventArgs e)
    34.         {
    35.             // Kiểm tra chuột có nằm trong vùng được chơi không. ĐOẠN NÀY MÌNH CŨNG KHÔNG RÕ, HIỂU NÔM NA VẬY THÔI.
    36.             if (e.X >= 10 && e.X < r * 15 && e.Y >= 10 && e.Y < c * 15)
    37.             {
    38.                 int x = (int)((e.X) / dd); // Chuyển từ tọa độ X của con trỏ sang tọa độ x của ô.
    39.                 int y = (int)((e.Y) / dd); // Chuyển từ tọa độ Y của con trỏ sang tọa độ y của ô.
    40.  
    41.                 // Dùng 2 nút chuột cho 2 người chơi.
    42.                 if (e.Button.ToString() == "Left") // Đây có phải là người chơi bên trái? Chuột trái.
    43.                 {
    44.  
    45.                     // Ô này có phải chưa đánh? Và có đúng là tới lượt của người chơi này. Nếu đúng thì...
    46.                     if (arr[x, y] == 0 && flag == 0)
    47.                     {
    48.                         // Gan gia tri va ve X
    49.                         arr[x, y] = 1; // ...gán ô này là đã đánh...
    50.                         Ve_X(x, y); // ...vẽ dấu X và ô này...
    51.                         // Dat co
    52.                         flag = 1; // ...gán lượt...
    53.                         // Kiem tra thang
    54.                         if (Total_Check(x, y)) // Kiểm tra xem có thắng chưa?
    55.                         {
    56.                             MessageBox.Show("Ban X Thang Rui"
    57.                                 + "\nChia Buon Voi Ban O nhe huhu...");
    58.                             Application.Restart(); // Khởi động lại ứng dụng.
    59.                         }
    60.  
    61.                     }
    62.                 }
    63.  
    64.                 // Tương tự biểu thức bên trên. Cho người chơi còn lại.
    65.                 if (e.Button.ToString() == "Right")
    66.                 {
    67.                     if (arr[x, y] == 0 && flag == 1)
    68.                     {
    69.                         arr[x, y] = 2;
    70.                         Ve_O(x, y);
    71.                         // Goi ham Check_Win
    72.  
    73.                         // Bo co
    74.                         flag = 0;
    75.                         if (Total_Check(x, y))
    76.                         {
    77.                             MessageBox.Show("Ban O Thang Roi"
    78.                                 + "\nBan X Co len hura..");
    79.                             Application.Restart();
    80.  
    81.                         }
    82.  
    83.  
    84.                     }
    85.                 }
    86.  
    87.             }
    88.  
    89.         }
    Đã được chỉnh sửa lần cuối bởi SITUVNX : 16-01-2013 lúc 02:27 PM.

  3. #3
    Ngày gia nhập
    01 2013
    Bài viết
    2

    giải thích thêm cho mính đoạn code này tý nha!!!!
    Visual C# Code:
    1.  public void Ve_X(int c, int r)
    2.         {
    3.             //Ve mot duong cheo " \ "
    4.             Pen p = new Pen(Color.Black, 2);
    5.             g.DrawLine(p, c * dd, r * dd, (c + 1) * dd, (r + 1) * dd);
    6.             //Ve mot duong cheo " / "
    7.             g.DrawLine(p, c * dd, (r + 1) * dd, (c + 1) * dd, r * dd);
    8.  
    9.         }
    10.         //Dung pen de ve chu O dua vao vi tri hien tai cua chuot va o vuong nho.
    11.         public void Ve_O(int x, int y)
    12.         {
    13.             Pen p1 = new Pen(Color.Red, 2);
    14.             g.DrawEllipse(p1, x * dd, y * dd, dd, dd);
    15.         }
    16.         //tao Ma tran
    17.         public void SetArr(int[,] arr, int a, int b)
    18.         {
    19.             for (int i = 0; i < a; i++)
    20.  
    21.                 for (int j = 0; j < b; j++)
    22.                 {
    23.                     arr[i, j] = 0;
    24.                 }
    25.         }
    26.  
    27.         //Kiem tra theo hang Ngang tinh tu diem vua click chuot
    28.         public bool kt_Ngang(int a, int b)
    29.         {
    30.             int count = 1;
    31.             int x = a + 1;
    32.             while (x < d && arr[a, b] == arr[x, b])
    33.             {
    34.                 count++;
    35.                 x++;
    36.             }
    37.             x = a - 1;
    38.             while (x >= 0 && arr[a, b] == arr[x, b])
    39.             {
    40.                 count++;
    41.                 x--;
    42.             }
    43.             return (count == 5) ? true : false;
    44.         }
    45.         //Kiem tra theo hang Doc tinh tu diem vua click chuot
    46.         public bool kt_Doc(int a, int b)
    47.         {
    48.             int count = 1;
    49.             int y = b + 1;
    50.             while (y < r && arr[a, b] == arr[a, y])
    51.             {
    52.                 count++;
    53.                 y++;
    54.             }
    55.             y = b - 1;
    56.             while (y >= 0 && arr[a, b] == arr[a, y])
    57.             {
    58.                 count++;
    59.                 y--;
    60.             }
    61.             return (count == 5) ? true : false;
    62.         }
    63.  
    64.         //Kiem tra theo hang Cheo chinh tinh tu diem vua click chuot
    65.         public bool kt_Cheo(int a, int b)
    66.         {
    67.             int count = 1;
    68.             int x = a + 1;
    69.             int y = b + 1;
    70.             while (x < c && y < r && arr[a, b] == arr[x, y])
    71.             {
    72.                 count = count + 1;
    73.                 x++;
    74.                 y++;
    75.             }
    76.             // Gan lai gia tri cho bien X, Y;
    77.  
    78.             x = a - 1;
    79.             y = b - 1;
    80.             while (x >= 0 && y >= 0 && arr[a, b] == arr[x, y])
    81.             {
    82.                 count = count + 1;
    83.                 x--;
    84.                 y--;
    85.             }
    86.             return (count == 5) ? true : false;
    87.  
    88.         }
    89.         //Kiem tra theo hang Cheo phu tinh tu diem vua click chuot
    90.         public bool kt_CheoPhu(int a, int b)
    91.         {
    92.             int count = 1;
    93.             int x = a + 1;
    94.             int y = b - 1;
    95.             while (x < c && y >= 0 && arr[a, b] == arr[x, y])
    96.             {
    97.                 count++;
    98.                 x++;
    99.                 y--;
    100.             }
    101.             x = a - 1;
    102.             y = b + 1;
    103.             while (x >= 0 && y < r && arr[a, b] == arr[x, y])
    104.             {
    105.                 count++;
    106.                 x--;
    107.                 y++;
    108.             }
    109.             return (count == 5) ? true : false;
    110.         }
    111.  
    112.  
    113.         //kiem tra tong hop cac truong hop
    114.         public bool Total_Check(int x, int y)
    115.         {
    116.             //if (Test_Ngang(x, y) == true || Test_Doc(x, y) == true(x, y))
    117.             if (kt_Ngang(x, y) == true || kt_Doc(x, y) == true || kt_Cheo(x, y) == true || kt_CheoPhu(x, y))
    118.                
    119.                 return true;
    120.             return false;
    121.         }
    122.  
    123.         private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    124.         {
    125.             this.Close();
    126.         }

  4. #4
    Ngày gia nhập
    08 2012
    Bài viết
    574

    Gần như giải thích hết rồi.
    Mình đọc ko kĩ ở cái if cuối ở đoạn mã bên trên
    mảng 2 chiều arr lưu:
    - 0: khi chưa đánh cờ.
    - 1: cho người chơi trái (Chuột trái).
    - 2: cho người chơi phải (Chuột phải).

    Visual C# Code:
    1.         // Vẽ dấu X, hai lần vẽ:
    2.         // Lần 1 vẽ dấu \
    3.         // Lần 2 vẽ dấu /
    4.         public void Ve_X(int c, int r)
    5.         {
    6.             //Ve mot duong cheo " \ "
    7.             Pen p = new Pen(Color.Black, 2);
    8.             g.DrawLine(p, c * dd, r * dd, (c + 1) * dd, (r + 1) * dd);
    9.             //Ve mot duong cheo " / "
    10.             g.DrawLine(p, c * dd, (r + 1) * dd, (c + 1) * dd, r * dd);
    11.  
    12.         }
    13.  
    14.         //Dung pen de ve chu O dua vao vi tri hien tai cua chuot va o vuong nho.
    15.         public void Ve_O(int x, int y)
    16.         {
    17.             // Dường viền có độ lớn là 2.
    18.             Pen p1 = new Pen(Color.Red, 2);
    19.             // Vẽ đường elipse có 2 chỉ số đường kính bằng nhau => hình tròn. Lâu quá, quên hết thuật ngữ toán học rồi.
    20.             g.DrawEllipse(p1, x * dd, y * dd, dd, dd);
    21.         }
    22.         //tao Ma tran
    23.         // Phương thức này là gán tất cả các giá trị trong mảng 2 chiều này bằng không (0)
    24.         public void SetArr(int[,] arr, int a, int b)
    25.         {
    26.             for (int i = 0; i < a; i++)
    27.                 for (int j = 0; j < b; j++)
    28.                 {
    29.                     arr[i, j] = 0;
    30.                 }
    31.         }
    32.  
    33.         //Kiem tra theo hang Ngang tinh tu diem vua click chuot
    34.         // Kiểm tra đường ngang với điểm nhán chuột, nếu count mà bằng chỉ số d thì thắng đấy.
    35.        // Do chỉ xét theo theo chiều ngang nên chỉ cần thao tác trên chỉ số x (tức là tham số a).
    36.         public bool kt_Ngang(int a, int b)
    37.         {
    38.             int count = 1; // Cho count = 1, 1 chính là cái dấu vừa đánh đấy
    39.             int x = a + 1; // Gán x là giá trị kế tiếp của chỉ số tọa độ x hiện tại của Ô vừa đánh
    40.             // Cứ chạy TỚI và kiểm tra theo hướng ngang.
    41.             while (x < d && arr[a, b] == arr[x, b]) // Nếu vẫn thỏa mãn...
    42.             {
    43.                 count++; // ...thì tăng
    44.                 x++; // tới chỉ số tiếp theo
    45.             }
    46.             x = a - 1;  // Gán x là giá trị trước của chỉ số tọa độ x hiện tại của Ô vừa đánh
    47.             // Cứ chạy LÙI và kiểm tra theo hướng ngang.
    48.             while (x >= 0 && arr[a, b] == arr[x, b])
    49.             {
    50.                 count++; // Tăng số đếm
    51.                 x--; // Lùi lại
    52.             }
    53.             // Câu lệnh cuối này mình nghĩ chưa đúng lắm.
    54.             // Nếu người đi nước này và tạo ra hàng có 6 con thì sao? Vẫn thua, vì hnos không bằng 5.
    55.             // Phải để count >= 5 thì được hơn.
    56.             return (count == 5) ? true : false; // Kiểm tra nếu bằng 5 thì thắng.
    57.            
    58.         }
    59.         //Kiem tra theo hang Doc tinh tu diem vua click chuot
    60.         // Xét theo chiều dọc, tương tụ theo chiều ngang, nhưng thao tác trên chỉ số y (tham số b)
    61.         public bool kt_Doc(int a, int b)
    62.         {
    63.             int count = 1;
    64.             int y = b + 1;
    65.             while (y < r && arr[a, b] == arr[a, y])
    66.             {
    67.                 count++;
    68.                 y++;
    69.             }
    70.             y = b - 1;
    71.             while (y >= 0 && arr[a, b] == arr[a, y])
    72.             {
    73.                 count++;
    74.                 y--;
    75.             }
    76.  
    77.             return (count == 5) ? true : false;
    78.         }
    79.  
    80.         //Kiem tra theo hang Cheo chinh tinh tu diem vua click chuot
    81.         // Kiểm tra chéo thì cần thao tác trên cả x và y (tham số a và b).
    82.         // Phương thức này kiểm tra theo chiều Đông Bắc - Tây Nam (tức /)
    83.         public bool kt_Cheo(int a, int b)
    84.         {
    85.             // 3 dòng này tương tự phương thức trên
    86.             int count = 1;
    87.             int x = a + 1;
    88.             int y = b + 1;
    89.            
    90.             // Xét cả x và y nhé
    91.             while (x < c && y < r && arr[a, b] == arr[x, y])
    92.             {
    93.                 count = count + 1; // TT (tương tự)
    94.                 x++; // TT
    95.                 y++; // TT
    96.                 // Sau khi cả x và y đều tăng thì có phải là sẽ tạo ra đường chéo  Đông Bắc - Tây Nam ko?
    97.             }
    98.             // Gan lai gia tri cho bien X, Y;
    99.  
    100.             x = a - 1;
    101.             y = b - 1;
    102.             while (x >= 0 && y >= 0 && arr[a, b] == arr[x, y])
    103.             {
    104.                 count = count + 1;
    105.                 x--;
    106.                 y--;
    107.             }
    108.             return (count == 5) ? true : false;
    109.  
    110.         }
    111.         //Kiem tra theo hang Cheo phu tinh tu diem vua click chuot
    112.         // Phương thức này kiểm tra theo chiều Tây Bắc - Đông Nam (tức \)
    113.         public bool kt_CheoPhu(int a, int b)
    114.         {
    115.             int count = 1;
    116.             int x = a + 1;
    117.             int y = b - 1;
    118.             while (x < c && y >= 0 && arr[a, b] == arr[x, y])
    119.             {
    120.                 count++;
    121.                 x++;
    122.                 y--;
    123.                 // Lúc này thì tạo ra đường chéo theo hướng Tây Bắc - Đông Nam
    124.             }
    125.             x = a - 1;
    126.             y = b + 1;
    127.             while (x >= 0 && y < r && arr[a, b] == arr[x, y])
    128.             {
    129.                 count++;
    130.                 x--;
    131.                 y++;
    132.             }
    133.             return (count == 5) ? true : false;
    134.         }
    135.  
    136.  
    137.         //kiem tra tong hop cac truong hop
    138.         public bool Total_Check(int x, int y)
    139.         {
    140.             //if (Test_Ngang(x, y) == true || Test_Doc(x, y) == true(x, y))
    141.             // Chỉ cần có 1 trong các hướng đủ số quân quy định (5) thì thắng true, ngược lại thì chưa thắng false.
    142.             if (kt_Ngang(x, y) == true || kt_Doc(x, y) == true || kt_Cheo(x, y) == true || kt_CheoPhu(x, y))
    143.                
    144.                 return true;
    145.             return false;
    146.         }
    147.  
    148.         private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    149.         {
    150.             this.Close();  // Đóng Form
    151.         }

    Thử vẽ x, y trên hệ trục tọa độ thì bạn sẽ hiểu cách tăng/giảm x, y theo chiều ngang, dọc và chéo.

    ở các vòng lặp while bao gồn kiểm tra các chỉ số vẫn an toàn (nằm trong phạm vi trò chơi) dựa trên x và y. Điều kiện: arr[a, b] == arr[x, y] kiểm tra con cờ có giống.


    Đang bệnh

  5. #5
    Ngày gia nhập
    01 2013
    Bài viết
    2

    cảm ơn bạn nhiều nha

  6. #6
    Ngày gia nhập
    03 2009
    Bài viết
    128

    Mặc định giải thích code C# game caro?

    Cái cần hỏi là thuật toán định giá và duyệt cây thì lại không hỏi

  7. #7
    Ngày gia nhập
    01 2013
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi noone2407 Xem bài viết
    Cái cần hỏi là thuật toán định giá và duyệt cây thì lại không hỏi
    tui chỉ hỏi những cái muốn hỏi thôi, nếu bạn muốn hỏi thì cứ hỏi, nếu biết thì đăng lên cho anh em tham khảo

  8. #8
    Ngày gia nhập
    11 2012
    Nơi ở
    Ở nhà
    Bài viết
    180

    Thank anh em. Đọc cái này hay thật. Mình chỉ làm với cơ sở dữ liệu nên mấy cái này không biết. Đọc để học hỏi.

  9. #9
    Ngày gia nhập
    09 2012
    Bài viết
    0

    cái bạn chủ thớt này, code đơn giản "nhập vào n hình chữ nhật, tìm hcn có diện tích lớn nhất" còn ko hiểu? đua đòi đi tìm hiểu mấy cái code này làm j?
    người ta giải thích như thế, thì bạn hiểu được dòng code đó là để làm việc đó, nhưng có hiểu nó làm việc đó như thế nào ko?
    đừng ảo tưởng những cái cao quá sức mình, thực tế chút đi, học ko phải để lấy danh đâu.

  10. #10
    Ngày gia nhập
    10 2009
    Nơi ở
    gầm cầu
    Bài viết
    156

    Trích dẫn Nguyên bản được gửi bởi Ck-boy Xem bài viết
    cái bạn chủ thớt này, code đơn giản "nhập vào n hình chữ nhật, tìm hcn có diện tích lớn nhất" còn ko hiểu? đua đòi đi tìm hiểu mấy cái code này làm j?
    người ta giải thích như thế, thì bạn hiểu được dòng code đó là để làm việc đó, nhưng có hiểu nó làm việc đó như thế nào ko?
    đừng ảo tưởng những cái cao quá sức mình, thực tế chút đi, học ko phải để lấy danh đâu.
    rảnh quá đi spam chơi tăng bài viết chăng ? tôi cũng chẳng tốt đẹp gì vì từng nói nặng chủ topic nhưng ở những topic khác nếu ai cần tôi đều đưa Code demo cụ thể để hỗ trợ . bạn la liếm từ topic kia qua bên đây flame người ta với mục đích gì ???
    1. con người khác động vật ở chỗ tiến bộ qua từng ngày . hôm qua có thể ko hiểu 1 chuyện gì đó nhưng hôm nay thì khác hoàn toàn
    2.đây là diễn đàn mở và ở Box nhập môn này ai cũng có quyền hỏi Code gì mình thích . bạn có quyền bắt ng khác phải hỏi những vấn đề theo ý bạn ????
    3.
    nhưng có hiểu nó làm việc đó như thế nào ko?
    hihihi hahahaha

    @chủ topic : nếu là bắt đầu với C# hãy tìm những bài tập đơn giản để làm . cố gắng tìm hiểu và sử dụng nhuyễn
    1. rẽ nhánh : IF SWITCH BREAK
    2.vòng lặp FOR WHILE
    3.mảng 1 chiều , 2 chiều
    vậy là đã đạt yêu cầu . thời gian từ từ rồi học cái phức tạp sau

Các đề tài tương tự

  1. Source code Game caro viết bằng C#
    Gửi bởi vibzz_90 trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 13
    Bài viết cuối: 06-09-2014, 02:29 PM
  2. pro nào giúp em giải thích code game caro này với!!!
    Gửi bởi snowdoggl trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 6
    Bài viết cuối: 20-07-2013, 09:32 AM
  3. Share source code Game caro viết trên C# Winform
    Gửi bởi playgun trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 11-09-2012, 05:39 PM
  4. Code game caro bằng C++. Hiện ra thông báo khi 2 người hòa như thế nào?
    Gửi bởi ngconghan trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 5
    Bài viết cuối: 25-06-2010, 11:42 AM
  5. [Mr.Hieu] Anitsoft Caro Chess - The best caro game
    Gửi bởi hieubm trong diễn đàn Sản phẩm phần mềm của bạn
    Trả lời: 49
    Bài viết cuối: 21-11-2007, 10:54 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn