Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 51 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
51
Dung lượng
1,19 MB
Nội dung
Header Page of 128 LỜI CẢM ƠN Lời em xin bày tỏ lòng biết ơn chân thành sâu sắc tới thầy, cô giáo trường Đại học sư phạm Hà Nội 2, đặc biệt thầy, cô giáo khoa Công nghệ Thông tin truyền đạt cho em kiến cần thiết bổ ích suốt trình học tập trường Luận văn tốt nghiệp hội em áp dụng, tổng kết lại kiến thức mà học Đồng thời rút kinh nghiệm thực tế quý giá suốt trình thực đề tài Trong thời gian để hoàn thành khóa luận em nhận hướng dẫn tận tình Lưu Thị Bích Hương với thầy, cô giáo bạn lớp K35-Tin học giúp em hồn thành tốt khóa luận Là sinh viên lần đầu nghiên cứu khoa học chắn đề tài em khơng tránh khỏi thiếu sót, em mong đóng góp ý kiến thầy, cô giáo bạn để đề tài em hoàn thiện Một lần em xin chân thành cảm ơn công lao dạy dỗ bảo thầy, giáo Kính chúc q thầy, giáo mạnh khỏe, tiếp tục đạt nhiều thắng lợi nghiên cứu khoa học nghiệp trồng người Em xin chân thành cảm ơn! Hà Nội, tháng năm 2013 Sinh viên Lê Thị Hạnh luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page of 128 Header Page of 128 LỜI CAM ĐOAN Tên em là: LÊ THỊ HẠNH Sinh viên lớp: K35 - Tin học, khoa Công nghệ Thông tin, trường Đại học sư phạm Hà Nội Em xin cam đoan: Đề tài: "Một số thuật tốn tìm đường ngắn xây dựng ứng dụng game Pikachu" nghiên cứu cua riêng em, hướng dẫn cô giáo Th.S Lưu Thị Bích Hương Khóa luận hồn tồn khơng chép tác giả khác Nếu sai em xin hoàn toàn chịu trách nhiệm Hà Nội, tháng năm 2013 Sinh viên luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page of 128 Header Page of 128 MỤC LỤC MỞ ĐẦU CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Giới thiệu ngôn ngữ Visual C# 10 1.2 Lịch sử phát triển trí tuệ nhân tạo 10 1.3 Tổng quan khoa học trí tuệ nhân tạo 11 1.4 Các khái niệm 12 1.5 Vai trò trí tuệ nhân tạo 13 1.6 Các kỹ thuật trí tuệ nhân tạo 14 1.7 Một số vấn đề trí tuệ nhân tạo quan tâm 16 CHƯƠNG 2: LÝ THUYẾT ĐỒ THỊ VÀ MỘT SỐ THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT 19 2.1 Lý thuyết đồ thị 19 2.1.1 Định nghĩa đồ thị 19 2.1.2 Định nghĩa đường đi, chu trình, đồ thị liên thông 22 2.2 Một số khái niệm 24 2.2.1 Mở đầu 24 2.2.2 Giải vấn đề phương pháp tìm kiếm 25 2.2.3 Biểu diễn vấn đề không gian trạng thái 26 2.2.4 Đường ngắn xuất phát từ đỉnh 27 2.2.5 Tìm kiếm đồ thị và/hoặc 28 2.3 Một số thuật tốn tìm đường ngắn 28 2.3.1 Bài tốn tìm đường ngắn 28 2.3.2 Thuật tốn tìm kiếm theo chiều sâu (Depth First Search - DFS) 29 2.3.3 Thuật tốn tìm kiếm theo chiều rộng (Breadth First Search) 32 2.3.4 Thuật tốn tìm kiếm sâu dần 35 2.3.4 Thuật tốn Dijkstra tìm đường ngắn 37 CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG GAME PIKACHU 41 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page of 128 Header Page of 128 3.1 Giới thiệu toán 41 3.2 Cấu trúc game Pikachu 41 3.3 Cách xây dựng game Pikachu 43 3.3.1 Cơ sở lý thuyết 43 3.3.2 Áp dụng thuật tốn tìm kiếm theo chiều rộng 44 3.4 Một số giao diện kết chạy chương trình 46 3.4.1 Giao diện chương trình tạo 46 3.4.2 Giao diện chạy Auto Play 47 3.4.3 Giao diện người chơi tự chơi 48 KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN 49 TÀI LIỆU THAM KHẢO 51 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page of 128 Header Page of 128 MỞ ĐẦU Lý mục đích chọn đề tài Ngày nay, với phát triển vượt bậc khoa học kỹ thuật, đặc biệt phát triển Công nghệ Thông tin lĩnh vực có nhiều đóng góp thiết thực sống Máy tính điện tử trở thành công cụ đắc lực không giảm nhẹ sức lao động lao động trí tuệ mà trợ giúp cho người kiến thức trước khó hình dung Một ứng dụng máy tính lưu trữ liệu giúp cho nhà quản lý nắm bắt xử lý tình thơng tin cách xác, kịp thời an tồn Trí tuệ nhân tạo lĩnh vực công nghệ thông tin ngành khoa học nghiên cứu phương thức để máy tính có khả tư suy nghĩ người Ngồi trí tuệ nhân tạo ngành nghiên cứu phương thức để giúp máy tính làm cơng việc mà thời điểm cơng việc mà người chưa làm hay không làm Một nghiên cứu đưa giải thuật tìm đường ngắn nhất, tối ưu phục vụ việc giải vấn đề toán cách nhanh Là sinh viên khoa Cơng nghệ Thơng tin, trường Đại học sư phạm Hà Nội 2, với mong muốn nghiên cứu tìm hiểu sâu vấn đề này, bắt đầu làm quen với công việc nghiên cứu khoa học em chọn đề tài: “Một số thuật tốn tìm đường ngắn xây dựng ứng dụng Game Pikachu” Đề tài xây dựng ngơn ngữ lập trình C# Microsoft Visual Studio 2008 với hệ quản trị sở liệu Microsoft SQL Sever 2005 Đối tượng phạm vi nghiên cứu 2.1 Đối tượng nghiên cứu Tìm hiểu số thuật tốn tìm đường ngắn luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page of 128 Header Page of 128 2.2 Phạm vi nghiên cứu - Đề tài tập trung nghiên cứu số thuật tốn tìm đường ngắn như: Thuật tốn tìm kiếm theo chiều sâu, thuật tốn tìm kiếm theo chiều rộng, thuật tốn tìm kiếm sâu dần, thuật tốn Dijkstra - Game Pikachu sử dụng thuật toán: Thuật toán tìm kiếm theo chiều rộng Nhiệm vụ nghiên cứu Tập trung tìm hiểu vấn đề sau: - Tìm hiểu trí tuệ nhân tạo - Tìm hiểu lý thuyết đồ thị - Tìm hiểu tốn tìm đường ngắn - Tìm hiểu số thuật tốn tìm đường ngắn - Tìm hiểu đường ngắn xuất phát từ đỉnh - Tìm hiểu ngơn ngữ lập trình C# - Xây dựng ứng dụng dựa ngơn ngữ lập trình C# để mơ Phương pháp nghiên cứu 4.1 Phương pháp nghiên cứu lý luận Nghiên cứu qua việc đọc sách, báo tài liệu liên quan nhằm xây dựng sở lý thuyết đề tài biện pháp cần thiết để giải vấn đề đề tài 4.2 Phương pháp chuyên gia Tham khảo ý kiến chuyên gia Tin học để thiết kế chương trình phù hợp với yêu cầu thực tiễn, đáp ứng yêu cầu người sử dụng 4.3 Phương pháp thực nghiệm Thông qua quan sát thực tế, yêu cầu sở, lý luận nghiên cứu kết đạt qua phương pháp trên, chương trình đưa vào chạy thử để từ có điều chỉnh phù hợp luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page of 128 Header Page of 128 Ý nghĩa khoa học thực tiễn đề tài Bài tốn tìm đường ngắn toán quan trọng lý thuyết đồ thị, tốn tìm lời giải tối ưu giải vấn đề cách nhanh Trong ứng dụng thực tế, tốn tìm đường ngắn có ý nghĩa to lớn như: Bài tốn chọn hành trình tiết kiệm theo tiêu chuẩn khoảng cách, thời gian chi phí mạng giao thơng đường Bài tốn chọn phương pháp tiết kiệm để đưa hệ thống động lực từ trạng thái xuất phát đến trạng thái đích Bài tốn lập lịch thi cơng cơng đoạn cơng trình thi cơng lớn Bài tốn lựa chọn đường truyền tin với chi phí nhỏ mạng thơng tin… Cấu trúc khóa luận Ngồi phần mở đầu, kết luận phương hướng phát triển Nội dung khóa luận bao gồm chương: Chương 1: Cơ sở lý thuyết Chương 2: Lý thuyết đồ thị số thuật tốn tìm đường ngắn Chương 3: Xây dựng ứng dụng game Pikachu luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page of 128 Header Page of 128 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Giới thiệu ngôn ngữ Visual C# Ngôn ngữ C# đơn giản, khoảng 80 từ khóa mười kiểu liệu xây dựng sẵn Tuy nhiên, ngơn ngữ C# có ý nghĩa cao thực thi khái niệm lập trình đại C# bao gồm tất hỗ trợ cho cấu trúc, thành phần component, lập trình hướng đối tượng Những tính chất diện ngơn ngữ lập trình đại Và ngơn ngữ C# hội đủ điều kiện vậy, xây dựng tảng hai ngôn ngữ mạnh C++ Java Ngôn ngữ C# phát triển đội ngũ kỹ sư Microsoft, người dẫn đầu Anders Hejlsberg Scott Wiltamuth Cả hai người người tiếng, Anders Hejlsberg biết đến tác giả Turbo Pascal, ngơn ngữ lập trình PC phổ biến Và ông đứng đầu nhóm thiết kế Borland Delphi, thành công việc xây dựng môi trường phát triển tích hợp (IDE) cho lập trình client/server Phần cốt lõi hay ngôn ngữ lập trình hướng đối tượng hỗ trợ cho việc định nghĩa làm việc với lớp Những lớp định nghĩa kiểu liệu mới, cho phép người phát triển mở rộng ngôn ngữ để tạo mơ hình tốt để giải vấn đề Ngơn ngữ C# chứa từ khóa cho việc khai báo kiểu lớp đối tượng phương thức hay thuộc tính lớp, cho việc thực thi đóng gói, kế thừa, đa hình, ba thuộc tính ngơn ngữ lập trình hướng đối tượng Trong ngôn ngữ C# thứ liên quan đến khai báo lớp tìm thấy phần khai báo Định nghĩa lớp ngơn ngữ C# khơng đòi hỏi phải chia tập tin header tập tin nguồn giống ngôn ngữ C++ Hơn nữa, ngôn ngữ C# hỗ trợ kiểu XML, cho phép chèn tag XML để phát sinh tự động document cho lớp luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page of 128 Header Page of 128 C# hỗ trợ giao diện interface, xem cam kết với lớp cho dịch vụ mà giao diện quy định Trong ngơn ngữ C#, lớp kế thừa từ lớp cha, tức không cho đa kế thừa ngôn ngữ C++, nhiên lớp thực thi nhiều giao diện Khi lớp thực thi giao diện hứa cung cấp chức thực thi giao diện Trong ngôn ngữ C#, cấu trúc hỗ trợ, khái niệm ngữ nghĩa thay đổi khác với C++ Trong C#, cấu trúc giới hạn, kiểu liệu nhỏ gọn, tạo thể u cầu hệ điều hành nhớ so với lớp Một cấu trúc khơng thể kế thừa từ lớp hay kế thừa cấu trúc thực thi giao diện Ngơn ngữ C# cung cấp đặc tính hướng thành phần (component-oriented), thuộc tính, kiện Lập trình hướng thành phần hỗ trợ CLR cho phép lưu trữ metadata với mã nguồn cho lớp Metadata mô tả cho lớp, bao gồm phương thức thuộc tính nó, bảo mật cần thiết thuộc tính khác Mã nguồn chứa đựng logic cần thiết để thực chức Do vậy, lớp biên dịch khối self-contained, nên môi trường hosting biết cách đọc metadata lớp mã nguồn cần thiết mà không cần thông tin khác để sử dụng Ngơn ngữ C# hỗ trợ việc truy cập nhớ trực tiếp sử dụng kiểu trỏ C++ từ khóa cho dấu ngoặc [] toán tử Các mã nguồn khơng an tồn (unsafe) Và giải phóng nhớ tự động CLR không thực việc giải phóng đối tượng tham chiếu sử dụng trỏ chúng giải phóng luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page of 128 Header Page 10 of 128 1.2 Lịch sử phát triển trí tuệ nhân tạo Lịch sử trí tuệ nhân tạo cho thấy ngành khoa học có nhiều kết đáng ghi nhận Theo mốc phát triển, người ta thấy trí tuệ nhân tạo sinh từ năm 50 với kiện sau: - Turing coi người khai sinh ngành trí tuệ nhân tạo phát ơng máy tính lưu trữ chương trình liệu - Tháng 8/1956 J Mc Carthy, M Minsky, A Newell, Shannon Simon ,… đưa khái niệm “trí tuệ nhân tạo” - Vào khoảng năm 1960 Đại học MIT (Massachussets Institure of Technology) ngôn ngữ LISP đời, phù hợp với nhu cầu xử lý đặc trưng trí tuệ nhân tạo - ngơn ngữ lập trình dùng cho trí tuệ nhân tạo - Thuật ngữ trí tuệ nhân tạo dùng vào năm 1961 MIT - Những năm 60 giai đoạn lạc quan cao độ khả làm cho máy tính biết suy nghĩ Trong giai đoạn người ta chứng kiến máy chơi cờ chương trình chứng minh định lý tự động Cụ thể: + 1961: Chương trình tính tích phân bất định + 1963: Các chương trình Heuristics: Chương trình chứng minh định lý hình học khơng gian có tên “tương tự”, chương trình chơi cờ Samuel, tìm kiếm đường có giá thành cực tiểu +1964: Chương trình giải phương trình đại số sơ cấp, chương trình trợ giúp ELIZA (có khả làm việc giống chuyên gia phân tích tâm lý) + 1966: Chương trình phân tích tổng hợp tiếng nói + 1968: Chương trình điều khiển người máy (Robot) theo đồ án “Mát – tay”, chương trình học nói - Vào năm 60, giới hạn khả thiết bị, nhớ đặc biệt yếu tố thời gian thực nên có khó khăn việc tổng quát hoá kết cụ thể vào chương trình mềm dẻo thơng minh 10 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 10 of 128 Header Page 37 of 128 Độ phức tạp thuật tốn Mỗi lần gọi thủ tục tìm kiếm sâu hạn chế tới mức d, tìm kiếm có nhân tố nhánh b số đỉnh cần phát triển là: + b + b2 +… + bd Nếu nghiệm độ sâu d tìm kiếm sâu dần gọi thủ tục sâu hạn chế với độ sâu 0, 1, 2,… , d Do đỉnh mức phải phát triển lặp d lần, đỉnh mức lặp d-1 lần ,…, đỉnh mức d lặp lần Như tổng số đỉnh cần phát triển tìm kiếm sâu dần là: (d+1)1 + db + (d-1)b2 + … + 2bd-1 + 1bd Vậy tìm kiếm sâu dần có độ phức tạp thời gian O(bd) (như tìm kiếm theo chiều rộng) độ phức tạp không gian O(bd) (như tìm kiếm theo chiều sâu) 2.3.5 Thuật tốn Dijkstra tìm đường ngắn a Tư tưởng thuật tốn Thuật tốn Dijkstra cho phép tìm đường ngắn từ đỉnh s đến đỉnh đỉnh lại đồ thị chiều dài (trọng số) tương ứng Phương pháp thuật toán xác định đỉnh có chiều dài đến s theo thứ tự tăng dần Thuật toán xây dựng sở gán cho đỉnh nhãn tạm thời Nhãn tạm thời đỉnh cho biết cận chiều dài đường ngắn từ s đến đỉnh Nhãn đỉnh biến đổi bước lặp, mà bước lặp có nhãn tạm thời trở thành thức Nếu nhãn đỉnh trở thành thức chiều ngắn đường từ s đến đỉnh b Phân tích thuật tốn Có thể giải toán cách xác định tập hợp S chứa đỉnh mà khoảng cách ngắn từ đỉnh đến đỉnh nguồn v biết Khởi đầu S=V Sau bước ta thêm vào S đỉnh mà khoảng cách từ đến v ngắn Với giả thiết cung có giá trị khơng âm ta ln ln tìm đường ngắn mà qua đỉnh 37 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 37 of 128 Header Page 38 of 128 tồn mảng C, tức C[i,j] giá trị (có thể xem độ dài) cung (i,j) Nếu i j khơng có cung nối ta cho C[i,j]=G Dùng mảng D gồm n phần tử để lưu độ dài đường ngắn từ v đến đỉnh đồ thị Khởi đầu giá trị độ dài cạnh (v,i), tức D[i]=C[v,i] Tại bước giải thuật D[i] lưu độ dài đường ngắn từ đỉnh v đến đỉnh i, đường qua đỉnh có mặt S Dùng ma trận kề để biểu diễn đồ thị C=(cij), cij = trọng số cung (i,j), cij =∞ khơng có cung (i,j) Một mảng d[] để ghi độ dài đường ngắn từ s tới đỉnh i có Xuất phát d[s] =0 d[i] =cij i kề s, d[j] =+ ∞ j không kề s c Giải thuật tìm đường ngắn Có nhiều giải thuật phát triển để giải tốn tìm đường ngắn cặp đỉnh Giải thuật Dijkstra giải thuật để giải tốn tìm đường ngắn nguồn đơn đồ thị có trọng số cạnh mà tất trọng số khơng âm Nó xác định đường ngắn hai đỉnh cho trước, từ đỉnh a đến đỉnh b Ở đỉnh v, giải thuật Dijkstra xác định thông tin: kv, dv pv kv: mang giá trị boolean xác định trạng thái chọn đỉnh v Ban đầu ta khởi tạo tất đỉnh v chưa chọn, nghĩa là: kv = false, v V dv: chiều dài đường mà ta tìm thấy thời điểm xét từ a đến v Khởi tạo, dv = , v V \{a}, da = pv: đỉnh trước đỉnh v đường ngắn từ a đến b Đường ngắn từ a đến b có dạng {a, ,pv,v, ,b} Khởi tạo, pv = null, v V Các bước giải thuật: Bước 1: Khởi tạo: Đặt kv:=false v V; dv:= ,v V \ {a}, da:=0 Bước 2: Chọn vV cho kv = false dv = {dt / t V, kt = false} Nếu dv=∞ kết thúc, khơng tồn đường từ a đến b 38 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 38 of 128 Header Page 39 of 128 Bước 3: Đánh dấu đỉnh v, kv=true Bước 4: Nếu v=b kết thúc db độ dài đường ngắn từ a đến b Ngược lại quay lại bước Bước 5: Với đỉnh u kề với v mà ku=false, kiểm tra: Nếu du > dv + w(v,u) du:= dv + w(v,u) Ghi nhớ đỉnh v: pu:= v Quay lại bước d Thuật tốn Thuật tốn Dijkstra mơ tả qua thủ tục sau: Đầu vào: Đồ thị có hướng G=(V,E) với n đỉnh, sV đỉnh xuất phát, a[u,v] V, ma trận trọng số Giả thiết a[u,v]>=0, u,vV Đầu ra: Khoảng cách từ đỉnh s đến tất đỉnh lại d[v], vV Procedure Dijkstra; Begin For vV Begin d[v]:=a[s,v] ; truoc [v]:=s; end; d[s]:=0; T:=V\{s}; while T≠Ø begin Tìm đỉnh uT thỏa mãn d[u]=min {d[z], zT} T:=T\{u}; For v T If d[v]>d[u] + a[u,v] then Begin d[v]:=d[u] + a[u,v]; Truoc[v]:=u; end; end; end; 39 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 39 of 128 Header Page 40 of 128 Độ phức tạp thuật toán Dijkstra: - Ở bước lặp để tìm điểm u cần thực O(n) phép tốn, để gán nhãn lại cần thực môt số lượng phép toán O(n) Thuật toán cần thực n-1 bước lặp Vậy độ phức tạp thuật toán O(n2) 40 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 40 of 128 Header Page 41 of 128 CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG GAME PIKACHU 3.1 Giới thiệu tốn Game Pikachu game có nguồn gốc từ Nhật Bản, gồm hình giống xếp hình chữ nhật gồm vng xếp gần Nhiệm vụ người chơi phải tìm hình giống hình chữ nhật Game Pikachu game mơ đơn giản, cách chơi dễ dàng Game coi game giải trí, thư giãn Hiện game Pikachu có mặt nhiều thiết bị di động, từ điện thoại java tới điện thoại chạy hệ điều hành Android, Windows Phone, ios Đã có nhiều phiên game Pikachu mơ cải tiến, thay nhân vật game Game Pikachu trò đòi hỏi trí tuệ người, nhanh mắt, nhanh tay chuẩn xác với việc sử dụng chuột máy tính để tìm vng có kí hiệu giống làm cho vng ẩn Người chơi chiến thắng nối tất hình với Càng lên cao độ khó trò chơi tăng đòi hỏi người chơi phải thật nhanh tay nhanh mắt dành điểm số cao Mục đích game Pikachu tìm đường ngắn hai hình giống tối đa ba đường thẳng, tìm hết trước thời gian quy định thắng 3.2 Cấu trúc game Pikachu Luật chơi: Game mô game Pikachu, nhiệm vụ người chơi chọn hai hình giống nhau, đường rẽ hai lần nối với tối đa ba đoạn thẳng - Nếu hai hình giống rẽ hai lần hai hình ẩn 41 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 41 of 128 Header Page 42 of 128 - Người chơi phải ẩn hết thời gian quy định, khơng người chơi thua Cấu trúc game Pikachu - Giao diện game vng có tất 16x9 ô vuông Ma trận 16x9 để hiển thị hình, ma trận game 18x11 ô - Chọn 26 giá trị cho ô vuông Như game hiển thị vng hình sử dụng mảng hai chiều 18x11 để lưu giá trị ô Trong game loại hình xuất bốn lần số lần xuất phải chẵn Như giái trị xuất ma trận 18x11 ô trống có giá trị -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 13 25 20 14 14 15 19 19 16 24 14 -1 16 21 -1 17 13 10 -1 16 17 14 11 14 18 21 25 10 18 25 13 15 12 20 -1 24 13 18 25 -1 12 11 24 13 20 -1 20 18 7 -1 16 -1 22 10 15 15 4 11 12 22 11 23 22 19 13 -1 18 17 -1 19 -1 14 10 21 10 21 16 -1 10 11 20 18 24 -1 15 26 15 12 12 20 12 19 31 11 -1 22 17 -1 26 17 17 19 26 23 23 23 -1 26 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 Hình 3.1: Ma trận biểu diễn giá trị ô game Như vậy, viền bên ngồi trống để có đường hai hình 42 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 42 of 128 Header Page 43 of 128 3.3 Cách xây dựng game Pikachu 3.3.1 Cơ sở lý thuyết Các đường game Pikachu: A A A B B B A A A A B B B A B A A A B B B B Hình 3.2: Một số đường game Pikachu Ý tưởng: Xuất phát từ điểm A B Làm để nối A với B tối đa đường thẳng? Từ điểm A duyệt tất hướng (các trống xung quanh).Tại B ta duyệt hướng tương tự A Mỗi phía duyệt sử dụng đường thẳng, vậy, đường thẳng, nên nối hướng kẻ thêm đường thẳng Đi theo đường từ A vừa duyệt Nếu gặp đường từ B tức có đường đi, ngược lại khơng có đường Còn theo đường từ B vừa duyệt gặp đường từ A có đường đi, ngược lại khơng có đường 43 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 43 of 128 Header Page 44 of 128 3.3.2 Áp dụng thuật tốn tìm kiếm theo chiều rộng Khi người chơi click chọn vào ô vuông thứ nhất: - Nếu click vào ô vuông thứ lưu lại vị trí vng đánh dấu click chọn ô vuông thứ - Để chọn ô vuông thứ hai giống với ô vng thứ nhất, áp dụng thuật tốn tìm kiếm theo chiều rộng: + Tìm kiếm ma trận, hàng mức với thứ tìm thấy vng có giá trị giống vng thứ lưu lại + Nếu hàng mức với ô vng thứ mà khơng có giá trị giống ô vuông ta chuyển xuống mức tiếp tục trình tìm kiếm tìm vng có giá trị giống với ô vuông Khi click chọn vào ô vuông thứ hai: - Nếu hai vng giống nối với tối đa ba đường thẳng hai vng ẩn - Hai ô vuông có giá trị khác không làm - Hai vng có giá trị hết đường đổi lại chơi - Hai ô vuông giống ẩn hết vng qua chơi Có thể mơ tả sau: - Khi ô vuông chọn, dùng biến lấy tọa độ mà chọn Sau đó: + Lưu vị trí chọn tính tốn vị trí ma trận + Cho hệ thống biết người chơi chọn ô vuông + Vẽ lại game, lúc có khung vng hình chọn + Dùng biến khác lưu tọa độ ô vuông thứ hai chọn Như game lấy kiện chọn tính tốn vị trí ma trận - Q trình tìm diễn giá trị hai vị trí nhau, sau đó: + Lưu lại hai giá trị 44 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 44 of 128 Header Page 45 of 128 + Gán cho hai vị trí -1 để hai vị trí trống để hàm tìm đường đi + Gọi hàm tìm đường đưa vào tham số hai vị trí + Gán giá trị lại cho hai vị trí chọn (vì khơng tìm thấy đường khơng xóa hai hình này) + Khi hai hình chọn giống nối với không ba đường thẳng Khi tìm đường ngắn nhất: Số lượng ô vuông chọn giảm xuống hai Xóa hai vng gán hai vị trí -1 Vẽ đường hai hình lại với cho game ngừng giây để người chơi nhìn thấy đường - Cứ tiếp tục số lượng ô vuông giảm xuống - Nếu chưa hết ô vuông mà hết đường đưa thơng báo thay đổi chơi Tìm đường ngắn phần quan trọng game Pikachu quy định luật chơi game Để tìm đường ngắn game dùng thuật tốn tìm kiếm theo chiều rộng Tìm vị trí từ vng thứ sang ô vuông thứ hai: - Nếu vị trí chạy nằm vùng trống rẽ hai lần có đường sang vị trí vng thứ hai - Nếu chạy đến vng cần tìm lưu lại quãng đường so sánh quãng đường ngắn Mơ tả thuật tốn tìm kiếm theo chiều rộng để tìm đường ngắn nhât: - Nếu vị trí chạy khỏi ma trận game - Nếu rẽ hai lần - Tăng chiều dài lên đánh dấu lại vị trí qua khơng lại đường 45 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 45 of 128 Header Page 46 of 128 - Nếu tìm đến vng thứ hai kiểm tra xem chiều dài đường ngắn lưu lại đường - Nếu chưa tìm đường đến vng thứ hai tiếp tục tìm kiếm mức ma trận Thuật toán chạy nhiều hướng khắp ma trận Chạy xong kiểm tra đường ngắn lưu lại đường Như tìm đường ngắn từ ô vuông thứ sang ô vuông thứ hai 3.4 Một số giao diện kết chạy chương trình 3.4.1 Giao diện chương trình tạo Hình 3.3: Giao diện chương trình tạo 46 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 46 of 128 Header Page 47 of 128 3.4.2 Giao diện chạy Auto Play Chương trình tự động tìm hình giống nhau, nối lại, đường ngắn tìm kiếm theo chiều rộng Hình 3.4: Giao diện chạy Auto Play 47 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 47 of 128 Header Page 48 of 128 3.4.3 Giao diện người chơi tự chơi Hình 3.5: Giao diện người chơi tự chơi 48 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 48 of 128 Header Page 49 of 128 KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN Kết luận Sau thời gian tìm hiểu, nghiên cứu tài liệu với giúp đỡ nhiệt tình giáo Lưu Thị Bích Hương nhiều thầy, giáo khoa Công nghệ Thông tin trường Đại học sư phạm Hà Nội em hồn thành khóa luận tốt nghiệp Qua đề tài “Một số thuật tốn tìm đường ngắn xây dựng ứng dụng game Pikachu”, khóa luận đạt kết sau: - Tìm hiểu kiến thức lý thuyết đồ thị - Tìm hiểu tốn tìm đường ngắn - Tìm hiểu số thuật tốn tìm đường ngắn như: + Thuật tốn tìm kiếm theo chiều rộng + Thuật tốn tìm kiếm theo chiều sâu + Thuật tốn tìm kiếm sâu dần + Thuật tốn Dijkstra tìm đường ngắn - Xây dựng chương trình minh họa game Pikachu qua thuật tốn tìm đường ngắn theo chiều rộng Hướng phát triển Luận văn xây dựng chương trình minh họa thuật tốn tìm đường ngắn xây dựng ứng dụng game Pikachu, cụ thể thuật tốn tìm kiếm theo chiều rộng, ứng dụng vào nhiều lĩnh vực thực tế trò chơi trí tuệ Tuy nhiên khơng thể áp dụng tất thuật tốn tìm đường ngắn để xây dựng game thuật tốn phức tạp Hướng phát triển đề tài thời gian tới thực thêm số thuật tốn tìm đường ngắn để xây dựng game Pikachu, cải tiến thuật toán nhằm giảm thời gian xử lý, thiết kế thêm số chức cho chương trình hồn thiện hơn, thiết kế chương trình để phát triển mơi trường mạng Tìm hiểu thêm 49 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 49 of 128 Header Page 50 of 128 ngôn ngữ khác để viết game Pikachu Thiết kế giao diện thân thiện với người sử dụng hơn, hồn thành phần thiếu sót hạn chế Em tiếp tục phát triển đề tài cách nghiên cứu thêm ngôn ngữ khác để kết hợp với công cụ ngôn ngữ lập trình C# nhằm làm cho giao diện đẹp hơn, thuận tiện với người sử dụng sản phẩm đóng gói trước tới tay người sử dụng Do thời gian thực không dài không thực tế nhiều nên luận văn em nhiều thiếu sót Em mong dẫn thêm thầy, cô giáo bạn bè 50 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 50 of 128 Header Page 51 of 128 TÀI LIỆU THAM KHẢO [1] Ngọc Bích - Quỳnh Nga - Tường Thụy - C# dành cho người tự học - Nhà Xuất Bản Thơng Tin Truyền Thơng [2] Nguyễn Thanh Thủy - Trí Tuệ Nhân Tạo - Nhà Xuất Bản Giáo Dục, 1995 - 1999 [3] Đinh Mạnh Tường - Giáo trình trí tuệ nhân tạo - Nhà xuất khoa học kỹ thuật, 2002 [4] Nguyễn Ngọc Bình Phương - Thái Thanh Phong - Các giải pháp lập trình C# 51 luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 51 of 128 ... cứu số thuật toán tìm đường ngắn như: Thuật tốn tìm kiếm theo chiều sâu, thuật tốn tìm kiếm theo chiều rộng, thuật tốn tìm kiếm sâu dần, thuật tốn Dijkstra - Game Pikachu sử dụng thuật tốn: Thuật. .. 2.3.3 Thuật tốn tìm kiếm theo chiều rộng (Breadth First Search) 32 2.3.4 Thuật tốn tìm kiếm sâu dần 35 2.3.4 Thuật toán Dijkstra tìm đường ngắn 37 CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG GAME PIKACHU. .. nghiên cứu tìm hiểu sâu vấn đề này, bắt đầu làm quen với công việc nghiên cứu khoa học em chọn đề tài: Một số thuật tốn tìm đường ngắn xây dựng ứng dụng Game Pikachu Đề tài xây dựng ngơn ngữ