Đề tài Áp dụng một số nguyên tắc và phương pháp trực tiếp trong bài toán Robot tìm đường

Theo dòng phát triển của lịch sử, xã hội loài người tồn tại và phát triển song hành với quá trình sáng tạo không ngừng. Với khả năng sáng tạo vô tận, con người ngày càng đạt được những thành tựu vượt bậc và xây dựng nền văn minh vĩ đại cho xã hội loài người. Xã hội càng văn minh, yêu cầu khả tư duy sáng tạo càng tăng cao. Theo thống kê cho thấy các nước trên thế giới đã bắt đầu đào tạo cử nhân, thạc sỹ về chuyên ngành sáng tạo và đổi mới. Từ đó, ra đời các khóa học về “Phương pháp luận sáng tạo”. Giống như An.Tôlxtôi đã từng nói:” Trong con người vốn có những nguồn sáng tạo vô tận, nếu khác đi thì đã không thành người. Cần giải phóng và khơi thông chúng.”

doc30 trang | Chia sẻ: vietpd | Lượt xem: 1392 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đề tài Áp dụng một số nguyên tắc và phương pháp trực tiếp trong bài toán Robot tìm đường, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
MỤC LỤC DANH MỤC HÌNH ẢNH Hình 1.1 Giao diện của chương trinh Robot tìm đừờng về đích 11 Hình 1.2 Danh sách liên kết 12 Hình 1.3 Robot di chuyển qua các đối tượng vùng 13 Hình 1.4 Ma trận bản đồ định vị robot khi di chuyển 14 Hình 1.5 Đánh dấu vị trí vừa là đích vừa là điểm xuất phát 15 Hình 1.6 Hướng dẫn sử dụng chương trình 17 Hình 1.7 Cảnh báo lỗi không tìm thấy đường đi khi đánh dấu sai vị trí 17 Hình 1.8 Lỗi không load được bản đồ 18 Hình 1.9 Robot xoay đổi chiều tìm đường thích hơp đi về đích 19 Hình 1.10 Hình ảnh các loại địa hình 21 Hình 1.11 Trường hợp phải hủy bỏ một phần tử trong danh sách 23 LỜI NÓI ĐẦU Theo dòng phát triển của lịch sử, xã hội loài người tồn tại và phát triển song hành với quá trình sáng tạo không ngừng. Với khả năng sáng tạo vô tận, con người ngày càng đạt được những thành tựu vượt bậc và xây dựng nền văn minh vĩ đại cho xã hội loài người. Xã hội càng văn minh, yêu cầu khả tư duy sáng tạo càng tăng cao. Theo thống kê cho thấy các nước trên thế giới đã bắt đầu đào tạo cử nhân, thạc sỹ về chuyên ngành sáng tạo và đổi mới. Từ đó, ra đời các khóa học về “Phương pháp luận sáng tạo”. Giống như An.Tôlxtôi đã từng nói:” Trong con người vốn có những nguồn sáng tạo vô tận, nếu khác đi thì đã không thành người. Cần giải phóng và khơi thông chúng.” Nói một cách ngắn gọn, “Phương pháp luận sáng tạo ”(PPLST) là bộ môn khoa học có mục đích trang bị cho người học hệ thống các phương pháp, các kỹ năng thực hành về suy nghĩ để giải quyết các vấn đề và ra quyết định một cách sáng tạo, về lâu dài, tiến tới điều khiển được tư duy. Trên thế giới, các trung tâm,trường học, công ty chuyên về sáng tạo được thành lập cách đây chưa lâu. Ở Mỹ, lâu đời nhất là Trung tâm nghiên cứu sáng tạo (Center for Studies in Creativity) thuộc Đại học Buffalo, New York ra đời năm 1967. Ngày nay, ít nhất đã có 12 nước Tây Âu triển khai các chương trình tương tự. Các hiệp hội, mạng lưới về sáng tạo được thành lập ở nhiều nước và nhiều khu vực trên thế giới. Ở nước ta, lớp học đầu tiên về tư duy sáng tạo được tổ chức vào năm 1977. Người Thầy đầu tiên truyền bá bộ môn khoa học này vào Việt Nam là Giáo sư, Tiến sĩ vật lý thực nghiệm Phan Dũng . Hòa mình với sự phát triển của thời đại, của khoa học sáng tạo, Trường Đại học Công nghệ thông tin – Đại học quốc gia thành phố Hồ Chí Minh đã mở ra lớp học đầu tiên về Phương pháp luận sáng tạo khoa học dưới sự dìu dắt tận tình của Giáo sư, Tiến sĩ Hoàng Kiếm. Với đề tài:” Áp dụng một số nguyên tắc và phương pháp trực tiếp trong bài toán Robot tìm đường” em hi vọng đúc kết ra được những kinh nghiệm, những bài học quý báu sau khi hoàn khóa học này. Mục đích của đồ án này là vận dụng vài thủ thuật sáng tạo và phương pháp đệ quy để cho Robot có thể tìm đường đi đến đích đã được đánh dấu từ trước. Tuy nhiên, vì khả năng của bản thân còn nhiều hạn chế, nên vẫn còn gặp nhiều vướng mắc khi giải quyết vấn đề. Dù đề tài đã được hoàn thành nhưng đó chỉ là một phần rất nhỏ trong hệ thống bài giảng của Thầy. Trong tương lai, em mong muốn có thể vận dụng thành thạo những lời giảng của Thầy, không ngừng nâng cao khả năng tư duy sáng tạo để không phụ lòng người Thầy mà chúng em mãi tri ân và tôn kính. Chúng em, thế hệ sinh viên đầu tiên của trường đã may mắn là những sinh viên được tiếp cận với bộ môn khoa học còn khá mới và đầy sáng tạo này. Em xin chân thành cảm ơn Thầy, Thầy đã cho thế hệ chúng em những bài học quý giá nhất trong suốt cuộc hành trình chinh phục cuộc sống. Những bài học về sự sáng tạo không ngừng, những phương pháp giải quyết vấn đề đầy khó khăn thử thách. TỔNG QUAN Trước một vấn đề cần giải quyết trong cuộc sống, người ta thường hoặc là không biết cách đạt được mục đích, hoặc là không biết giải pháp tối ưu để đạt được mục đích. PPLST giúp nhanh chóng tìm ra con đường xử lý ngắn nhất dựa trên các quy luật phát triển của tư duy và khoa học. Dù công nhân, nông dân, học sinh, sinh viên, giảng viên đại học, doanh nhân, cán bộ nhà nước, tiến sĩ, giáo sư,...đều cần nắm vững 40 thủ thuật sáng tạo cơ bản, các quy luật phát triển khách quan, các phương pháp nghiên cứu giải quyết vấn đề,... Học viên trải qua các khoá học PPLST đều tự tin, mạnh dạn hơn khi hành động để theo đuổi những dự định và ước mơ của mình, biết cách làm nẩy sinh các ý tưởng giải thích dễ hiểu rồi thực hiện. PPLST giúp bổ sung, hoàn thiện kiến thức, tiến thêm một bước trong tư duy sáng tạo khoa học công nghệ. Suy nghĩ một cách sáng tạo, thông minh luôn là yêu cầu thiết yếu để có thể đưa ra những sáng kiến. Điều này đặc biệt quan trọng đối với sinh viên. Tuy vậy, để có thể tư duy sáng tạo cần có phương pháp. Áp dụng các thủ thuật và phương pháp giải quyết vấn đề, em đã lựa chọn đề tài ”Áp dụng một số nguyên tắc và phương pháp trực tiếp trong bài toán Robot tìm đường” đề làm bài luận văn. Với yêu cầu bài toán đặt ra: Các nhà khoa học vũ trụ gởi lên mặt trăng một robot thám hiểm mặt trăng. Địa điểm hạ cánh của tàu vũ trụ không người lái đã được xác định trước. Từ vị trí này, một robot thám hiểm sẽ xuất phát và di chuyển đến một địa điểm được xác định trước. Robot vừa di chuyển vừa phải biết cách phân biệt địa hình sao cho có thể vượt qua hay đi vòng qua chướng ngại vật để về đich. Vị trí xuất phát và đích đều có thể khởi tạo ngẫu nhiên trên bản đồ. Bài luận được chia làm các chương như sau: Chương 1: Đưa ra cơ sở lý thuyết cũng như xây dựng bài toán cơ bản, đưa ra cách giải quyết vấn đề . Chương 2: Đi sâu vào phân tích nội dung bao gồm: 15 thủ thuật sáng tạo, và phương pháp đệ quy tìm đường. Chương 3: Nêu ra những hạn chế cần được giải quyết. Hướng giải quyết vấn đề. CƠ SỞ LÝ THUYẾT VÀ PHƯƠNG PHÁP NGHIÊN CỨU Phương pháp trực tiếp Đặc điểm của cách giải quyết này xác định trực tiếp được lời giải qua một thủ tục tính toán,.. hoặc qua các bước căn bản để có được lời giải. Đối với phương pháp này, việc giải quyết vấn đề trên máy tính chỉ là thao tác lập trình hay là sự chuyển đổi lời giải từ ngôn ngữ bên ngoài sang các ngôn ngữ được sử dụng bên trong máy tính. Tìm hiểu về phương pháp này chính là tìm hiểu về kỹ thuật lập trình trên máy tính. Áp dụng nguyên lý 6 trong phương pháp trực tiếp. Nguyên lý 6 : Biểu diễn các tính toán không tường minh bằng đệ quy, có nghĩa là “Quá trình đệ quy trong máy tính không đơn giản như các biểu thức quy nạp trong toán học”. Một số nguyên tắc sáng tạo. Dựa trên việc phân tích hàng trăm ngàn sáng chế trong những ngành kỹ thuật mũi nhọn người ta đã tìm được 40 nguyên tắc sáng tạo cơ bản. Chúng còn có tên gọi là các thủ thuật khắc phục mâu thuẫn kỹ thuật. 15 nguyên tắc được vận dụng trong bài toán tìm đường: 1.Nguyên tắc 1- Nguyên tắc phân nhỏ Chia đối tượng thành các phần độc lập Làm đối tượng trở nên tháo lắp được Tăng mức độ phân nhỏ của đối tượng 2. Nguyên tắc 2- Nguyên tắc tách khỏi Tách phần gây phiền phức ra khỏi đối tượng hoặc ngược lại. Tách lấy phần cần thiết 3. Nguyên tắc 3- Nguyên tắc phẩm chất cục bộ Chuyển đối tượng (hay môi trường bên ngoài, tác động bên ngoài) có cấu trúc đồng nhất thành không đồng nhất. Các phần khác nhau của đối tượng phải có các chức năng khác nhau. Mỗi phần của đối tượng phải có các chất năng khác nhau. 4. Nguyên tắc 5- Nguyên tắc kết hợp Kết hợp các đối tượng đồng nhất hoặc các đối tượng dùng cho các hoạt động kế cận. Kết hợp về mặt thời gian các hoạt động đồng nhất hoặc kế cận 5. Nguyên tắc 6- Nguyên tắc vạn năng Đối tượng thực hiện một số chức năng khác nhau do đó không cần sự tham gia của đối tượng khác. 6. Nguyên tắc 7- Nguyên tắc chứa trong Một đối tượng chứa bên trong nó đối tượng khác và đối tượng khác đó lại chứa đối tượng thứ 3,… Một đối tượng chuyển động xuyên suốt bên trong đối tượng khác. 7. Nguyên tắc 10- Nguyên tắc thực hiện sơ bộ Thực hiện trước sự thay đổi, tác động cần có, hoàn toàn hoặc từng phần, đối tượng với đối tượng. Cần sắp xếp các đối tượng trước, sao cho chúng có thể hoạt động từ vị trí thuận lợi nhất và không mất thời gian dịch chuyển. 8. Nguyên tắc 11- Nguyên tắc dự phòng Bù đắp độ tin cậy không lớn của đối tượng bằng cách chuẩn bị trước các phương tiện báo động, ứng cứu dự phòng. 9. Nguyên tắc 15- Nguyên tắc linh động Cần thay đổi các đặc trưng của đối tượng hay môi trường bên ngoài sao cho chúng tối ưu trong từng giai đoạn làm việc. Phân chia đối tượng thành từng phần có khả năng dịch chuyển đối với nhau Nếu đối tượng nhìn chung bất động làm nó di động. 10. Nguyên tắc 17- Nguyên tắc chuyển sang chiều khác Những khó khăn do chuyển động (hay sắp xếp) đối tượng theo đường (một chiều) sẽ được khắc phục nếu cho đối tượng khả năng di chuyển trên mặt phẳng( hai chiều), tương tự những bài toán liên quan đến chuyển động (hay sắp xếp) các đối tượng trên mặt phẳng sẽ được đơn giản hóa khi chuyển sang không gian (ba chiều). Chuyển các đối tượng có kết cấu một tầng thành nhiều tầng. Đặt đối tượng nằm nghiêng. Sử dụng mặt sau của diện tích cho trước. Sử dụng các luồng ánh sáng tới diện tích bên cạnh hoặc tới mặt sau của diện tích cho trước 11. Nguyên tắc 19- Nguyên tắc hoạt động theo chu kỳ Chuyển các tác động liên tục thành tác động theo chu kỳ(xung) Nếu đã có tác động theo chu kỳ hãy thay đổi chu kỳ Sử dụng khoảng thời gian giữa các xung để thực hiện tác động khác nhau. 12. Nguyên tắc 26- Nguyên tắc sao chép Thay vì sử dụng những cái không được phép, phức tạp, đắt tiền, không tiện lợi hoặc dễ vỡ, sử dụng bản sao.        Thay thế đối tượng hoặc hệ các đối tượng bằng bản sao quang học (ảnh, hình vẽ) với các tỷ lệ cần thiết.       Nếu không thể sử dụng bản sao quang học ở vùng biểu kiến (vùng ánh sáng nhìn thấy được bằng mắt thường), chuyển sang sử dụng bản sao hồng ngoại hoặc tử ngoại. 13. Nguyên tắc 32- Nguyên tắc thay đổi màu sắc Thay đổi màu sắc của đối tượng hay môi trường bên ngoài. Thay đổi độ trong suốt của đối tượng hay môi trường bên ngoài. Để có thể quan sát được những đối tượng hoặc những quá trình, sử dụng các chất phụ gia màu, huỳnh quang. Nếu các chất phụ gia đó đã được sử dụng, dùng các nguyên tử đánh dấu. Sử dụng các hình vẽ, ký hiệu thích hợp 14. Nguyên tắc 33- Nguyên tắc đồng nhất Những đối tượng, tương tác với đối tượng cho trước phải được làm từ cùng một vật liệu ( hoặc từ vật liệu gần với các tính chất) với vật liệu chế tạo đối tượng cho trước. 15. Nguyên tắc 34- Nguyên tắc phân hủy hay tái sinh các phần Phần đối tượng đã hoàn thành nhiệm vụ hoặc trở nên không cần thiết phải tự phân hủy (hòa tan, bay hơi) hoặc phải biếng dạng. Các phần mất mát của đối tượng phải được phục hồi trực tiếp trong quá trình làm việc. Xây dựng yêu cầu cơ bản cho bài toán Xây dựng Robot có các tính năng sau: Tiến 1 bước, lùi 1 bước, xoay trái một góc 45 độ, xoay phải một góc 45 độ. Khoảng đường di chuyển này có thể có một số chướng ngại đất đá mà robot phải vượt qua. Do đó, robot cũng được thiết kế thêm một tính năng để vượt qua các chướng ngại vật có chiều cao thấp hơn hoặc bằng 50 cm. Nếu chướng ngại vật cao hơn 50 cm, robot phải đi vòng. Robot cũng tránh không đi vào các vùng quá trũng. Robot được xây dựng sẵn các nguyên tắc cho việc di chuyển để phù hợp với địa hình trên. Robot được cung cấp một bản đồ địa hình về quãng đường mà nó sẽ phải di chuyển. Trong đó có: các vùng trũng nhiều, các chướng ngại vật đất đá lớn nhỏ khác nhau. Trên bản đồ cần xác định trước vị trí xuất phát của robot và vị trí đích mà robot phải di chuyển đến. Bản đồ có cấu trúc của một ma trận n x n, trên đó mỗi ô có một tọa độ và có thông tin về địa hình của vị trí đó. ÁP DỤNG PHƯƠNG PHÁP ĐỆ QUY VÀ CÁC NGUYÊN TẮC SÁNG TẠO GIẢI QUYÊT BÀI TOÁN Vận dụng nguyên lý 6 và một số nguyên tắc sáng tạo để giải quyết toàn bộ vấn đề của bài toán tìm đường đến đích cho Robot. Xây dựng nên cái nhìn tổng quan về toàn bộ quá trình. Áp dụng 15 nguyên tắc sáng tạo vào bài toán Thủ thuật sáng tạo là thao tác tư duy đơn lẻ kiểu: Hãy đặc biết hóa bài toán , hãy phân nhỏ đối tượng, hãy làm cho đối tượng linh động… Khi giải quyết những vấn đề tìm đường, áp dụng cụ thể vào bài toán 15 nguyên tắc sau: Áp dụng nguyên tắc 1- Nguyên tắc phân nhỏ Khi xây dựng bản đồ để quản lý toàn bộ bề mặt địa hình của mặt trăng . Vì địa hình quá lớn và có nhiều loại nên cần chia nhỏ địa hình để dễ quản lý. Xây dựng bản đồ để quản lý địa hình và phân nhỏ bản đồ này thành 225 (n*n) vùng con, mỗi vùng là một đối tượng. Số lượng đối tượng có thể được thay đổi: tăng hoặc giàm tùy theo mô hình giải quyết bài toán. Bản đồ này sẽ được quản lý bởi ma trận 2 chiều n*n (15*15) nhằm xác định vị trí của từng vùng trên bản đồ dễ dàng hơn. Nhờ việc phân nhỏ thành các vùng mà ta có thể dễ dàng thay thế các đối tượng vùng, di chuyển đối tượng trên các vùng và nhờ đó mà bản đồ có thêm những tính chất mới: mỗi vùng có một giá trị khác nhau để xác định loại địa hình. Ngoài ra khi xây dựng code cho chương trình, ta sẽ phân chương trình thành nhiều lớp. Mỗi lớp thực hiện các chức năng nhiệm vụ khác nhau. Ví dụ: xây dựng một lớp robot.cs, một lớp MoonMap.cs, một lớp MyPoint để thể hiện cho từng vùng và một lớp thực hiện các thao tác xử lý. Các class này có thể được đặt chung trong một class lớn nhưng nên tách ra thành các class riêng biệt , độc lập để quản lý dễ dàng hơn. Muốn mở rộng hơn giả sử có 2,4,5.. con robot di chuyển trên bản đồ thì lúc này xây dựng chương trình đỡ phức tạp. Hình 1.1 Giao diện của chương trinh Robot tìm đừờng về đích Khi phân nhỏ đối tượng ta cũng nên kết hợp chúng lại thành thể thống nhất. Các đối tượng này có thể thực hiện nhiều chức năng, mỗi đối tượng thì có tính cục bộ và phải linh động…Vì vậy nguyên tắc phân nhỏ thường đi kèm theo một số nguyên tắc:ckết hợp, vạn năng, cục bộ.. Tiếp theo sau là nguyên tắc kết hợp. Áp dụng nguyên tắc 5- Nguyên tắc kết hợp Khi xây dựng nguyên tắc phân nhỏ thường lúc nào cũng có mặt của nguyên tắc kết hợp. Nếu các đối tượng này nằm rời rạc trên bản đồ thì robot không thể di chuyển từ vùng này sang vùng khác. Điều đặc biệt là các đối tượng này phải đồng loại.Trong chương trình xây dựng các đối tượng vùng này đều là đối tượng MyPoint( Đối tượng do ta tự định nghĩa). Các đối tượng này có vị trí trên bản đồ, có các hình ảnh để xác định địa hình là đồng bằng, đầm lầy hay đá cao, đá thấp. Khi nhìn trên giao diện thì ta thấy đó là một tấm ảnh địa hình mặt trăng. Nhưng trên thực tế nó là 225(15*15) phần tử kết hợp lại với nhau tạo thành. Chương trình là một tổng thể kết hợp từ các class khác nhau. Hay khi sử dụng danh sách liên kết để lưu đường đi của robot thì ta đã sử dụng nguyên tắc kết hợp. Kết hợp nhiều phần tử lại với nhau, mỗi phần tử thể hiện một vùng mà ta đã đi qua. List PathToTarget = new List() Hình 1.2 Danh sách liên kết Ngoài ra, nguyên tắc kết hợp cần hiểu theo nghĩa rộng là thiết lập mối liên kết chớ không đơn thuần là cộng thêm hay gắn thêm, nó kế hợp nhiều chức năng lại để thực hiện toàn bộ yêu cầu của bài toán đặt ra. Cũng như, ta gán cho mỗi vùng một giá trị. Mỗi đối tượng vùng đó dựa vào giá trị được gán là 0, 1,2 ,3 mà xác định xem đó là loại địa hình gì để kết hợp với hình ảnh địa hình tương ứng đồng thời dựa vào những giá trị đó để xét xem robot có thể di chuyển vào vùng đó hay không. Như vậy cũng có thể xem nguyên tắc kết hợp là nguyên tắc ngược của nguyên tắc phân nhỏ. Áp dụng nguyên tắc 3- Nguyên tắc phẩm chất cục bộ Các vùng đối tượng có thể được thay đổi mà không làm ảnh hưởng đến toàn bộ bản đồ. Ví dụ như trên bản đồ thể hiện khu vực đó là đồng bằng nhưng khi Robot ( ô vuông khac màu ) đi ngang thì vị trí đó được thay thế bởi robot, các vùng lân cận vẫn không thay đổi. Khi Robot đi qua khỏi vị trí đó thì nó được trả về trạng thái ban đầu. Hình 1.3 Robot di chuyển qua các đối tượng vùng Hay trong quá trình xây dựng code cho chương trình thường có nhiều thay đổi. Vì vậy người ta chia chương trình thành các class riêng. Trong mỗi class sẽ có các hàm thực hiện các chức năng riêng biệt. Như vậy khi cần thay đổi, sửa chữa ta chỉ cần thay đổi cục bộ mà không ảnh hưởng đến toàn bộ chương trình. Các phẩm chất cục bộ phát triển từ đơn giản đến phức tạp để tạo ra những ưu điểm riêng biệt. Nguyên tắc phẩm chất cục bộ tạo ra những sản phẩm tối ưu, có thể mở rộng. Các nguyên tắc kết hợp, phân nhỏ, phẩm chất cục bộ còn phản ảnh khuynh hướng phát triển biện chứng : Sự liên kết , hợp tác hóa đi kèm với sự phân công chức năng nhiệm vụ và chuyên sâu hơn. Áp dụng nguyên tắc 2- Nguyên tắc tách khỏi Thiết kế sao cho Robot là một đối tượng riêng biệt so với bản đồ. Robot di chuyển trên bản đồ qua từng vùng và tiến về đích. Bản đồ lúc này thể hiện là nền cho ta nhìn thấy sự di chuyển của Robot. Những thay đổi trên Robot không làm ảnh hưởng đến bản đồ. Như vậy Robot và bản đồ là hai đối tượng riêng biệt. Hình 1.4 Ma trận bản đồ định vị robot khi di chuyển Các chương trình có thể quá lớn nên khi xây dựng ta tách ra thành nhiều phần riêng biệt. Chương trình được tách thành các thư mục khác nhau. Như thư mục Resource để chứa các file hình ảnh đưa vào chương trình. Thư mục bin, obj, … Trong class robot có rất nhiều phần nhưng ta tách phần quản lý tọa độ khi di chuyển thành một class con. Để dễ sử dụng lại nhiều lần mà không phải tốn thời gian và tài nguyên. Tương tự, khi xây dựng bản đồ để tạo 255, mỗi vùng ta lại phải gán giá trị, gán hình ảnh. Để đơn giản hơn ta tách phần thể hiện các giá trị của mỗi vùng thành 1 file text map.txt sẵn bên ngoài. Viết đoạn chương trình đọc các giá trị trong file text để gán vào từng phần từ. Như vậy khi muốn thay đổi giá trị ta chỉ việc điền giá trị vào file text. Vì các đối tượng thường có nhiều thành phần tính chất, khía cạnh khác nhau nên nhiều khi ta chỉ cần một trong những số đó. Tách khỏi không có nghĩa là bỏ, là vứt đi mà là cách để tận dụng những tính chất những khả năng đem lại những lợi ích cao nhất. Nguyên tắc tách khỏi thường đi kèm với nguyên tắc phân nhỏ, kết hợp, cục bộ, nguyên tắc vạn năng .. Áp dụng nguyên tắc 6- Nguyên tắc vạn năng Đây là nguyên tắc làm cho đối tượng được cải tiến có nhiều chức năng mới. Tạo ma trận 2 chiều để quản lý bản đồ. Mỗi phần tử của mảng vừa chịu sự quản lý của mảng vừa được dùng cho nhiều nhiệm vụ khác nhau.Ví dụ như giá trị của mỗi phần tử vùng vửa để thể hiện hình ảnh loại địa hình: đá cao, đá thấp, vùng đàm lầy hay đồng bằng, vừa dùng thể hiện robot hay là đích. Nếu phần tử nào là robot hay là đích sẽ được gán hình ảnh khác để thay thế cho hình ảnh loại địa hình. Ví dụ khác, khi ta đánh dầu vị trí đích mà Robot phải đi đến. Để cải tiến chương trình, sau khi robot di chuyển đến đích thì biến vị trí đích thành vị trí xuất phát mới của Robot. Như vậy Robot sẽ tiếp tục di chuyển đến đích mới. Một vị trí vừa là đích đến vừa là điểm xuất phát. Hình 1.5 Đánh dấu vị trí vừa là đích vừa là điểm xuất phát Xét theo một ý nghĩa nào đó thì nguyên tắc vạn năng là trường hợp riêng của nguyên tắc kết hợp. Kết hợp nhiều chức năng trên cùng một đối tượng. Nguyên tắc này làm cho các đối tượng trở nên linh động hơn và thực hiện nhièu chức năng khác nhau làm cho chương trình đơn giản hơn. Áp dụng nguyên tắc 7- Nguyên tắc chứa trong Đối tượng robot di chuyển xuyên suốt bên trong bản đồ. Bản đồ là một đối tượng lớn chứa đối tượng robot.Vi dụ khác, khi xây dựng chương trình, thường xuất hiện trường hợp class này lồng class khác vào bên trong của nó, và hàm này gọi hàm khác.Ví dụ trong class Robot thì sử dụng class vec.cs để xác định vị trí của robot trên bản đồ. Trong class MoonMap.cs thì khai báo class Mypoint.cs. Hay trong hàm ClickMap() (đánh dấu vị trí đích mà robot cần di chuyển đến) ta phải gọi hàm SearchPath() kiểm tra xem vị trí đó robot có thể đi được hay không. public void MapClick(object sender, EventArgs e) { // Reset MapFooted va bat dau goi de qui tim duong di Map.ResetFooted(); // Xoa du lieu cu trong PathToTarget robo.ClearPath(); if (SearchPath(robo.srcPoint, target) == true) { robo.ResetMove(); timer.Enabled = true; Map.Reset(robo.targetPoint); Map.SetTarget(target); robo.targetPoint = target; } } Trong hàm khởi tạo gọi hàm Tick() t