Áp dụng các thuật toán trong trí tuệ nhân tạo xây dựng các chương trình trò chơi bằng ngôn ngữ lập trình java

63 918 2
Áp dụng các thuật toán trong trí tuệ nhân tạo xây dựng các chương trình trò chơi bằng ngôn ngữ lập trình java

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

MỤC LỤC MỤC LỤC Lời nói đầu Lời cảm ơn Error! Bookmark not defined Lời cam đoan Error! Bookmark not defined CHƯƠNG LÝ DO CHỌN ĐỀ TÀI .3 1.1 GIỚI THIỆU VỀ CÔNG NGHỆ TRI THỨC 1.1.1 Giới thiệu tri thức 1.1.2 Giới thiệu lý thuyết trò chơi 1.2 GIỚI THIỆU VỀ GAME 1.2.1 Lịch sử cờ vây 1.2.2 Lịch sử trò chơi xếp hình 1.2.3 Lý chọn đề tài CHƯƠNG 2: .8 CƠ SỞ LÝ THUYẾT 2.1 GIỚI THIỆU VỀ JAVA [2] 2.1.1 Lịch sử phát triển 2.1.2 Các đặc điểm Java 2.1.3 JDK – Java Development Kit - Bộ công cụ phát triển Java .10 2.1.4 Các đặc điểm thành phần AWT .11 2.1.5 Các thành phần AWT sử dụng 12 2.1.6 Đối tượng đồ hoạ 16 2.1.7 Xử lý kiện 20 2.1.8 WindowListener .23 2.1.9 Phân tuyến đa tuyến .24 2.1.10 Interface 25 2.2 GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO [1] 26 2.2.1 Lịch sử hình thành phát triển trí tuệ nhân tạo 26 2.2.2 Định nghĩa trí tuệ nhân tạo 28 2.2.3 Thử nghiệm Turing 28 2.2.4 Khái quát lĩnh vực ứng dụng trí tuệ nhân tạo 29 2.2.5 Không gian trạng thái .32 2.2.6 Chiến lược tìm kiếm tối ưu .33 2.2.7 Tìm kiếm có đối thủ 35 CHƯƠNG 3: .40 XÂY DỰNG CÁC CHƯƠNG TRÌNH TRÒ CHƠI 40 3.1 XÂY DỰNG CHƯƠNG TRÌNH TRÒ CHƠI CỜ VÂY 40 3.1.1 Ý tưởng 40 3.1.2 Thiết kế chương trình .45 3.1.3 Đánh giá chương trình 53 3.2 XÂY DỰNG TRÒ CHƠI XẾP HÌNH 54 3.2.1 Ý tưởng 54 3.2.2 Thiết kế chương trình .56 3.2.3 Đánh giá chương trình 60 KẾT LUẬN .61 TÀI LIỆU THAM KHẢO 62 Lời nói đầu Ngày với phát triển không ngừng khoa học kỹ thuật đặc biệt công nghệ thông tin lĩnh vực đưa lên hàng đầu thúc đẩy tăng trưởng phát triển kinh tế quốc gia Công nghệ thông tin dần khẳng định vai trò lĩnh vực khoa học, kỹ thuật giải trí Xuất phần mềm trò chơi giải trí mang lại lợi nhuận cao cho quốc gia có ngành tin học phát triển mạnh Khi máy tính cá nhân trở thành phần đời sống người, sản phẩm giải trí máy ngày có hội để phát triển, đặc biệt game mini game chơi cờ Tuy nhiên yêu cầu game hay cao, đồ họa, xử lý kiện…Do viết game vừa hội vừa thách thức người lập trình phương pháp tốt để hoàn thiện kĩ lập trình lập trình viên Hiện nay, có nhiều ngôn ngữ lập trình dùng để viết game, Java ngôn ngữ ấy, với kĩ thuật xử lí hình ảnh, âm hỗ trợ sẵn, Java có đầy đủ sức mạnh để xây dựng game hoàn hảo, lí để Java chọn làm ngôn ngữ viết lên game trình bày đề tài Game viết báo cáo dừng mức tìm hiểu, chưa thể trở thành game thương mại, giúp người đọc hiểu điều viết game, hỗ trợ Java game Tuy rằng, lĩnh vực xây dựng trò chơi game không mẻ, qua kỳ học tập, nghiên cứu với mong muốn vận dụng kiến thức học vào triển khai đề tài thiết kế trò chơi game; em lựa chọn đề tài tốt nghiệp là: Áp dụng trí tuệ nhân tạo xây dựng chương trình trò chơi ngôn ngữ lậ trình Java CHƯƠNG 1: LÝ DO CHỌN ĐỀ TÀI 1.1 GIỚI THIỆU VỀ CÔNG NGHỆ TRI THỨC 1.1.1 Giới thiệu tri thức Tri thức hiểu biết kiểm nghiệm Tri thức sức mạnh, tài nguyên trở thành tiềm lực cạnh tranh Hiện nay, trí tuệ nhân tạo đà phát triển đạt thành tựu rực rỡ đóng góp vào tảng công nghệ thông tin tạo sản phẩm liên quan đến việc sử dụng công nghệ tri thức máy tính Trí tuệ nhân tạo tạo dụng tri thức có mối quan hệ gắn bó mật thiết với hình thành lên lĩnh vực khoa học tri thức Tạo dụng tri thức tập hợp trình điều hành sáng tạo, phổ biến sử dụng tri thức để đạt mục tiêu Khoa học tri thức chọn ba khoa học (cùng với khoa học thông tin khoa học vật liệu) thiết lập phát triển viện Khoa Học Công nghệ tiên tiến Nhật Bản viết tắt JAIST Mục tiêu thúc đẩy phát triển tạo dụng tri thức tiến hành nghiên cứu liên qua đến tảng cho xã hội tri thức dựa kết hợp khoa học quản lý, khoa học hệ thống khoa học thông tin Trong nhiều tình huống, sẵn tri thức vậy: Kỹ sư tri thức cần thu thập tri thức từ chuyên gia lĩnh vực, cần hiểu biết luật mô tả lĩnh vực cụ thể Các hệ thống học mô hình dạng số liên quan đến kỹ thuật nhằm tối ưu tham số Học theo dạng số bao gồm mạng Neural nhân tạo, giải thuật di truyền, toán tối ưu truyền thống Các kỹ thuật học theo số không tạo sở tri thức tường minh Trí tuệ nhân tạo nhánh khoa học công nghệ liên quan đến việc làm cho máy tính có lực trí tuệ người, tiêu biểu khả “suy nghĩ”, “hiểu ngôn ngữ” biết “học tập” máy Máy tính sinh chủ yếu thực việc tính toán, trí tuệ nhân tạo nhằm cho máy biết lập luận, có “trí thông minh” Một thí dụ đóng góp trí tuệ nhân tạo sản phẩm công nghệ thông tin đọ trí Deep Junior Gary Karparov đầu năm 2003 sau chiến thắng Deep Blue trước nhà vô địch cờ vua năm 1997 Bản chất trí tuệ nhân tạo đưa tri thức người vào để máy hiểu cung cấp cho máy khả suy diễn khai thác tri thức Tạo sử dụng tri thức cốt tử hoạt động kinh tế xã hội, khoa học, quản lý… liên quan chặt chẽ đến tiến khoa học công nghệ đặc biệt tiến công nghệ thông tin Tạo dụng tri thức cần tìm hiểu cách sâu rộng 1.1.2 Giới thiệu lý thuyết trò chơi John von Newmann người hình thức lý thuyết trò chơi đầu năm 1970, lý thuyết trò chơi bắt đầu áp dụng cho nghiên cứu ngành khoa học, từ Sinh học tới Triết học Cuối cùng, lý thuyết trò chơi gần thu hút ý nhà Khoa học máy tính ứng dụng trí tuệ nhân tạo Điều khiển học Lý thuyết trò chơi nhánh toán học ứng dụng, nghiên cứu tình chiến thuật đối thủ lựa chọn hành động khác để cố gắng làm tối đa kết nhận Trong lý thuyết trò chơi có năm yếu tố sở: Người chơi (players), giá trị gia tăng (Added values), Quy tắc (Rules), chiến thuật (Tacties), phạm vi (Scope) Năm yếu tố hợp thành PARTS thành phần chơi Các trò chơi game giải trí áp dụng chiến thuật lý thuyết trò chơi ví dụ trò chơi đối kháng, chương trình máy tính chơi trò chơi đấu trí trò chơi cờ Vua, cờ Tướng, cờ Vây, go, checker… trò chơi trò chơi đối kháng, diễn hai đấu thủ người chơi mong muốn tới đích trước dành chiến thắng chơi (ván chơi) Đặc điểm trò chơi là: * Có hai đấu thủ, người nước tới lượt * Các đấu thủ biết tình trạng trận đấu * Trận đấu không kéo dài vô tận, phải diễn hoà, bên thắng bên thua Thông thường ta hay gọi trò chơi loại cờ Đôi ta gọi trò chơi MiniMax (dựa tên thuật toán tìm kiếm áp dụng cho chúng) 1.2 GIỚI THIỆU VỀ GAME 1.2.1 Lịch sử cờ vây Cờ vây loại cờ cổ, chơi cách khoảng 4000 năm bắt nguồn từ nước Trung Hoa Cờ vây ngày phổ biến vùng Đông Á Nhật nước có số người chơi cờ cao Cờ vây tới Nhật từ kỷ thứ đến đầu kỷ 13, chơi rộng rãi khắp nơi đất nước Sự phát triển Internet làm cho phổ biến khắp giới đến có 36 triệu người yêu thích môn cờ (thống kê hiệp hội cờ Vây nghiệp dư giới năm 1999) Môn cờ vây người Việt Nam biết tới từ lâu, qua thời gian, chiến tranh nên cách chơi Nó phổ biến lại Việt Nam vào năm 1993 có giảng viên không chuyên từ Trung Quốc sang giảng dạy giúp cho ngành thể dục thể thao Hà Nội Cờ vây có từ xa xưa, không bị biến đổi theo thời gian trò chơi cổ khác Lý luật chơi cờ vây đơn giản, người chơi được, không cần đến trí thông minh ưu việt Trong cờ vây quân quân nào, giá trị y hệt nhau, không quân có tên tuổi, vua, có tướng Cờ vây muốn biết chơi dễ, để chơi tới thành “cao cờ” khó 1.2.2 Lịch sử trò chơi xếp hình Nguồn gốc trò chơi xếp hình (Jigsaw puzzle) phải quay năm 1790 nhà làm đồ châu Âu dán đồ gỗ cắt chúng thành mảnh nhỏ (Dissected map) loại đồ chơi mang tính giáo dục thành công có Trẻ em nước học địa lý thông qua việc chơi với đồ xếp hình Hoa Kỳ hay giới Các nghệ nhân sáng tạo trò chơi xếp hình kỳ 17 hẳn vô sửng sốt trước biến đổi qua 230 năm qua Các xếp hình dành cho trẻ em từ học đến giải trí, thể nhiều loại vật khác thú, thơ ca mẫu giáo (nursery ryhmes), câu truyện với siêu anh hùng Disney Nhưng bất ngờ lớn đời xếp hình dành cho người lớn vào năm đầu kỷ 20 Các mảnh ghép ngày cắt xác đường kẻ màu mảnh chuyển tiếp có hai màu đỏ đen, ví dụ vùng màu nâu (mái nhà) xếp gần mảnh màu xanh (bầu trời) năm mang đến hai cách tân đáng kể chúng cải tiến từ nguyên liệu ban đầu gỗ giá thành tương đối đắt sang nguyên liệu bìa cứng với số lượng mảnh ghép ngày tăng Ngày nay, phát triển internet góp phần làm cho trò chơi phổ biến rộng rãi thu hút ý giới lứa tuổi Trò chơi xếp hình đòi hỏi kiên nhẫn, ráp nhanh hay chậm tuỳ thuộc vào khả nhạy bén người có vài nguyên tắc chung giúp cho việc ghép hình thuận lợi ráp mảnh bìa trước, tìm chỗ nối tiếp thông qua màu sắc, hình thái gom mảnh màu vào chỗ 1.2.3 Lý chọn đề tài Như biết lý thuyết xây dựng game đặc biệt game chơi cờ, xếp hình cần sử dụng nhiều thuật toán có độ khó cao, kỹ thuật lập trình game, lập trình giao diện, chức đồ hoạ sử dụng game… Đề tài em thực áp dụng lý thuyết trò chơi, thuật toán tìm kiếm có đối thủ, tìm kiếm tối ưu: Thuật toán MiniMax, phương pháp cắt cụt alpha-beta, thuật toán A* trí tuệ nhân tạo kỹ thuật lập trình game ngôn ngữ lập trình Java Trong thời gian tìm hiểu nghiên cứu, tiến hành xây dựng hoàn chỉnh game cờ mini, trò chơi xếp hình em củng cố bổ sung nhiều kiến thức trí tuệ nhân tạo, công nghệ tri thức lập trình hướng đối tượng với Java Những phân tích lý để em chọn đề tài muốn sử dụng khả đồ hoạ Java để xây dựng chương trình game, muốn áp dụng lý thuyết trò chơi, thuật toán tìm kiếm trí tuệ nhân tạo để xây dựng chương trình game chơi cờ, xếp hình Các game đón nhận giới không nhiều thời gian phù hợp với thời lượng làm đồ án Chương trình em gồm ba chức sau: Tạo ván cờ Người chơi với máy cấp độ khác dễ, trung bình, khó Hai người chơi với Chương trình xếp hình em gồm có chức chọn hình, tự động xếp hình Chương trình thiết kế với bàn cờ ma trận n*n có hai loại quân, loại quân chọn nước trạng thái bàn cờ tương ứng với nút trò chơi Như vậy, lượt bạn phải tìm trạng thái tốt Cái tốt hàm đánh giá mà số lượng trạng thái bàn cờ nhiều tất nút phải có cách giảm số lượng nút thuật toán alpha-beta câu trả lời Trò chơi xếp hình dựa sở toán số (bài toán Ta canh) sử dụng thuật toán tối ưu trí tuệ nhân tạo để giải A* lựa chọn tốt cho ta kết mong đợi với thời gian thực chấp nhận CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 GIỚI THIỆU VỀ JAVA [2] 2.1.1 Lịch sử phát triển Java đời vào năm 90 kỉ 20, xuất với tên Oak dự án nhằm xây dựng phần mềm lập trình cho mặt hàng điện dân dụng với mục tiêu nhỏ gọn tương thích với nhiều thiết bị phần cứng khác Lúc đầu xuất Java không gây nhiều ý, song đến năm 1993 hệ thống web giới đời, Java lúc khẳng định công cụ lập trình hoàn hảo web Từ đến Java không ngừng phát triển trở thành công cụ lập trình đầy sức mạnh, đặc biệt lĩnh vực phát triển ứng dụng internet, mà không thua ngôn ngữ lập trình khác 2.1.2 Các đặc điểm Java 2.1.2.1 Đơn giản Một mục tiêu xây dựng Java nhỏ gọn đơn giản, Java không cần hướng dẫn đặc biệt hay kéo dài Mặc dù để hết ngõ ngách Java vấn đề khó với lập trình viên Khá dễ viết, dễ biên dịch Mặt khác kích thước Java nhìn chung nhỏ gọn hẳn VB hay Visual C 2.1.2.2 Hướng đối tượng Java thiết kế ngôn ngữ hướng đối tượng mạnh, ứng dụng viết Java phải xây dựng đối tượng, thông qua đối tượng, tạo hàm phổ dụng với Java với C++ Java không hỗ trợ đa kế thừa Một lớp Java bao gồm vùng trạng thái đối tượng, phương thức (method) chức đối tượng dùng để trả lời tác động đối tượng khác Lớp Java lớp trừu tượng, lớp tập hợp trạng thái chung thông tin ứng xử Tuy lớp dẫn xuất hoàn toàn đối tượng thật 2.1.2.3 Phân tán Java thiết kế để hỗ trợ ứng dụng phân tán lớp mạng thuộc gói java.net Ngoài lớp chuẩn bị để thiết lập kết nối mức ổ cắm, nghĩa cần cắm vào hay kết nối chạy máy 2.1.2.4 Thông dịch Java ngôn ngữ thông dịch, Các ứng dụng Java chạy phần cứng khác nhau, miễn có thông dịch, gỡ rối, thư viện thời gian động Khi lập trình viên cần ý đến thư viện module dùng chung mà không cần lệ thuộc vào ngôn ngữ máy 2.1.2.5 Mạnh mẽ Có thể dùng Java để tạo nên chương trình mạnh mẽ không mắc nhiều lỗi chạy Biến Java phải khai báo cách tường minh 2.1.2.6 Bảo mật Java viết để chạy môi trường mạng phân tán, phải có tính bảo mật Kĩ thuật xác minh Java dựa cách mã hóa theo khóa công khai Java không hỗ trợ biến trỏ 2.1.2.7 Kiến trúc trung tính Khả thông dịch với nguồn mã lệnh biên dịch dạng bytecode cho phép tạo máy Java ảo (JVM- Java virtual machine) hệ thống, ứng dụng Java chạy trung tính máy ảo 2.1.2.8 Khả chuyển Do có JVM giới thiệu cần cài đặt để chương trình chạy tốt máy ảo cài đặt chạy hệ thống Các kiểu liệu Java định nghĩa không phụ thuộc vào xử lý hay vào hệ điều hành mà ứng dụng cài đặt Phương thức Medium() tương tự phương thức Easy() khác chỗ cách chọn nước chương trình Nếu hàm Easy() chọn nước ngẫu nhiên nước hợp lệ hàm Medium() chọn nước ô có điểm (giá trị ma trận rate đề cập trên) cao nhất, tức ô có khả dẫn tới ô nằm góc, ô xét ô góc không cần xét mà định vào ô (theo phần đánh giá trên) xt=0; yt=0; max=0; for(i=1;i-1) {tg.gan(old[n]); n ++m; hap[m]=new TT() hap[m].gan(tg); // Lưu trạng thái phát triển if (tg.ketThuc()) break;// Nếu trạng thái kết thúc stop else duyệt trạng thái kề // Thêm đỉnh kề vào danh sách phát triển theo trọng số hàm đánh giá if (tg.x>0) { k=new TT(tg,1,m); if (this.kiemtra(k)) insert(k);} if (tg.x[...]... là trong công nghệ máy tính như người ta đã mong đợi hay không vẫn chưa có lời giải áp thoả đáng 2.2.2 Định nghĩa trí tuệ nhân tạo Các tác giả đã đưa ra rất nhiều định nghĩa về trí tuệ nhân tạo Em xin dẫn ra dưới đây một số định nghĩa:  Trí tuệ nhân tạo là sự nghiên cứu các năng lực trí tuệ thông qua việc sử dụng các mô hình tính toán – Charniak and McDormott, 1985”  Trí tuệ nhân tạo là nghệ thuật. .. thuật tạo ra các máy thực hiện các chức năng đòi hỏi sự thông minh khi được thực hiện bởi con người – Kurzweil, 1990”  Trí tuệ nhân tạo là lĩnh vực nghiên cứu tìm cách giải thích và mô phỏng các hành vi thông minh trong thuật ngữ các quá trình tính toán – Schalkoff, 1990”  Trí tuệ nhân tạo là sự nghiên cứu các tính toán để có thể nhận thức lập luận và hành động – Winston, 1992”  Trí tuệ nhân tạo. .. THIỆU VỀ TRÍ TUỆ NHÂN TẠO [1] 2.2.1 Lịch sử hình thành và phát triển của trí tuệ nhân tạo Những năm gần đây, khá nhiều sách, báo công trình nghiên cứu khoa học đề cập đến các kỹ thuật tính toán, người ta hay nhắc nhiều đến thuật ngữ như: máy tính thông minh, máy tính thế hệ V, hệ chuyên gia, mạng ngữ nghĩa các ngôn ngữ lập trình như LISP, PROLOG mở đường áp dụng hàng loạt các hệ thống chương trình có... dạng của bàn cờ sử dụng trong các trò chơi này dễ dàng biểu diễn vào máy tính, trong khi không đòi hỏi một hình thức khó hiểu cần thiết nào để nắm bắt những tinh tế và ngữ nghĩa trong những lĩnh vực bài toán phức tạp hơn Do có thể chơi các trò chơi một cách dễ dàng nên việc thử nghiệm các chương trình chơi trò chơi không phải trả một gánh nặng nào về tài chính hay đạo đức Các trò chơi có thể phát sinh... ngôn ngữ lập trình đầu tiên dùng cho trí tuệ nhân tạo LISP (List Procesing), các nghiên cứu về TTNT mới phát triển mạnh mẽ, thuật ngữ TTNT do Marvin Misky một chuyên gia nổi tiếng cũng ở MIT đưa ra năm 1961 trong một bài báo “Steps Forwards To Artificial 26 Intelligence” Những năm 60 có thể xem là một mốc quan trọng trong quá trình xây dựng các máy có khả năng suy nghĩ Các chương trình chơi cờ và các. .. thể là không gian các đối tượng rời rạc Xét một vấn đề trong không gian trạng thái sao cho việc giải quyết vấn đề được quy về việc tìm kiếm trong không gian trạng thái Một phạm vi rộng lớn các vấn đề, đặc biệt các câu đố, các trò chơi, có thể mô tả bằng cách sử dụng khái niệm trạng thái và toán tử (phép biến đổi trạng thái) Ví dụ, trong trò chơi cờ vây mà em xây dựng mỗi cách bố trí các quân trên bàn... kiến chuyên gia trong một số lĩnh vực chuyên môn sâu như y học hay toán học (Các trò chơi cờ, xếp hình là một ngoại lệ dễ thấy với qui tắc này) Vì những lý do đó, các trò chơi cung cấp một không gian mênh mông cho việc nghiên cứu các tìm kiếm heuristic Các chương trình chơi trò chơi, trái ngược với tính đơn giản của chúng, 30 đưa ra các thử thách riêng của chúng, bao gồm các đấu thủ mà các nước đi của... kết với các lớp mới có thể ở một máy chủ ở xa trên mạng 2.1.3 JDK – Java Development Kit - Bộ công cụ phát triển Java Java được xây dựng chủ yếu trong bộ công cụ phát triển Java JDK như là thư viện chuẩn Trong đó chứa các trình thông dịch, biên dịch, giúp đỡ, soạn tài liệu…Đó chính là cái nền phát triển các ứng dụng của Java JDK có các hàm giao diện AWT, thư viện dùng lại độc lập JavaBeans, JFC Java ngày... các ngành con Trong khi chia sẻ một tiếp cận giải quyết vấn đề cơ bản, các ngành con này quan tâm đến các ứng dụng khác nhau như: Tìm kiếm, trò chơi, Robot đưa thư, hệ chuyên gia… 2.2.4.1 Trò chơi Ngay thời gian đầu của việc nghiên cứu vấn đề tìm kiếm trong không gian trạng thái, người ta đã tiến hành thử nghiệm bằng cách sử dụng các trò chơi thông dụng có bàn cờ như cờ vây, cơ vua và trò đố 15 ô Ngoài... 2.1.5.2 Trình đơn menu a Các thành phần của trình đơn Trình đơn mà Java cung cấp sẽ gồm các đối tượng sau: Thành phần đối tượng Java Thanh trình đơn MenuBar Trình đơn xổ xuống Menu Các mục chọn MenuItem Trình đơn con Menu Mục chọn có khả năng đánh dấu CheckboxMenuItem Dùng đối tượng MenuBar ta có thể tạo một thanh trình đơn và gắn nó vào một cửa sổ ứng dụng bằng cách: - Tạo một thanh trình đơn: MenuBar mb=new

Ngày đăng: 02/08/2016, 22:06

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan