Đề tài tốt nghiệpTrò chơi Puzzle
Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN MỤC LỤC Lời nói đầu………………………………………………………… 2 Phần I.Giới thiệu Game Puzzle……………………………………….3 Phần II.Giới thiệu công nghệ Java và nền tảng J2SE……………… .5 I. Giới thiệu chung về Java…………………………………………….5 II. Máy ảo Java-JVM………………………………………………… .7 III. Giới thiệu J2SE…………………………………………………… 11 IV. Giới thiệu gói javax.swing.*……………………………………… .11 Phần III.Phân tích thiết kế……………………………………………17 I. Sơ đồ phân rã chứa năng……………………………………………17 II. Sơ đồ luồng dữ liệu mức đỉnh………………………………………18 III. Cấu trúc chương trình……………………………………………….19 IV. Đặc tả chương trinh…………………………………………………25 Phần IV.Kết luận…………………………………………………… 27 Page 1 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN LỜI NÓI ĐẦU Nói đến game thì chắc phần lớn mọi người đều đồng ý đó là một loại hình giải trí có sức thu hút rất lớn,nhất là với giới trẻ hiện nay.Đặc biệt sau sự ra đời của Internet,game online xuất hiện và nhanh chóng gây được sức hấp dẫn to lớn.Chúng ta có thể chơi game online trên mạng,các game offline trên PC,các game trên các dòng máy chuyên như PS2,PS3 hiện nay game cũng đang được phát triển mạnh trên các thiết bị di động như điện thoại di động,các máy Xbox Ở các nước phát triển như Nhật Bản,Mỹ có rất nhiều các công ty chuyên về sản xuất game như Nintendo,Sony,Sega và mỗi năm các công ty này đạt doanh thu hàng tỷ USD.Hay với các nước đi sau như Hàn Quốc,Trung Quốc cũng có được một ngành công nghê game rất mạnh nhờ có sự đầu tư đúng đắn và chiến lược phát triển tốt. Mặc dù VINASA xếp game là một trong 3 định hướng công nghệ chiến lược của hiệp hội này trong giai đoạn 2006-2010, bên cạnh định hướng phần mềm nhúng và ERP (bộ phần mềm hoạch định nguồn lực doanh nghiệp) nhưng hiện tại thị trường game ở Việt Nam còn rất yếu.Chưa có nhiều công ty chuyên về lập trình game,những công ty phát triển game online thì chủ yếu là cung cấp các game nhập từ Hàn Quốc,Trung Quốc các game nội hầu như vắng bóng trên thị trường.Đúng như theo nhận định của một chuyên gia phát triển game của Hàn Quốc:“ngành công nghiệp game Việt Nam hiện nay giống như một đứa trẻ sơ sinh, rất cần được sự giúp đỡ và nuôi nấng (của Chính phủ) để phát triển”.Chắc hẳn hiện nay có rất nhiều bạn trẻ đang theo đuổi ngành CNTT cũng muốn tham gia vào lĩnh vực này và họ rất cần có được sự giúp đỡ và ủng hộ từ các nhà giáo dục,từ chính sách,định hướng phát triển của chính phủ.Đề tài tốt nghiệp này là làm trò chơi Puzzle sử dụng ngôn ngữ lập trình Java.Do mới tiếp cận về lập trình game nên chương trình còn có nhiều thiếu sót,mong các thầy giúp đỡ,góp ý để hoàn thiện hơn. Để hoàn thành bài tập này ngoài sự cố gắng của bản thân còn có sự tham gia góp ý,giúp đỡ của thầy giáo và bạn bè.Trước hết em xin gởi lời cảm ơn chân thành đến thầy giáo hướng dẫn Nguyễn Đức Tuấn đã nhiệt tình giúp đỡ để em hoàn thành đề tài.Ngoài ra xin cám ơn các bạn trong lớp,các bạn trong cộng đồng Java Việt Nam đã đóng góp ý kiến trong quá trình thực hiện đề tài. Page 2 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN PHẦN I:GIỚI THIỆU VỀ ĐỀ TÀI TRÒ CHƠI PUZZLE. Bản thân từ Puzzle có nghĩa là câu đố,đây là trò chơi thuộc thể loại game trí tuệ. Trò chơi này cũng giống như các trò chơi xếp hình,đầu tiên với kích thước trò chơi là 9 ô,trạng thái ban đầu được khởi tạo ngẫu nhiên.Nhiệm vụ của người chơi là xếp 8 chữ số sao cho đạt được trạng thái win cho như sau: Người chơi sẽ dịch chuyển các số theo các hướng lên xuống,sang trái phải khi ô cạnh nó là ô trống.Độ khó của trò chơi được qui định bằng giới hạn thời gian chơi và số lần dịch chuyển.Nghĩa là nếu người chơi chơi hết thời gian giới hạn hay số lần dịch chuyển giới hạn sẽ bị thua. Người chơi cố gắng xếp 8 ô về trạng thái win càng nhanh càng tốt và càng dùng ít lần dịch chuyển càng tốt,khi win người chơi sẽ được một số điểm tính theo công thức: Số giây ít hơn so với giây giới hạn*3+Số lần dịch chuyển ít hơn số lần cho phép*5 Nếu số điểm của bạn nằm trong top 5 người có điểm cao nhất thì bạn sẽ được ghi danh vào top. Page 3 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn 1 2 3 4 5 6 7 8 Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN Cách thức chơi có vẻ rất đơn giản.Khi tìm hiểu game này có một vấn đề khá thú vị.Đó là có phải bao giờ bạn cũng có thể đưa game về trạng thái win như trên không?Trong game có một trạng thái mà không có ai có thể giải quyết,đó là trạng thái sau: Đã có rất nhiều người tham gia giải quyết tình huống này nhưng đến nay chưa ai có thể thành công.Để biết rõ hơn về tình huống thú vị này bạn có thể xem them tại địa chỉ sau:http://www.holotronix.com/samlloyd15.php Chương trình được xây dựng trên nền tảng J2SE của Java.Chủ yếu là lập trình GUI sử dụng Swing trong Java-sẽ được giới thiệu trong phần II dưới đây. Page 4 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn 1 2 3 4 5 6 8 7 Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN PHẦN II.GIỚI THIỆU VỀ JAVA VÀ NỀN TẢNG J2SE I.Giới thiệu chung về Java. 1.Sự phát triển. Java được xây dựng vào cuối năm 1990 bởi James Gosling và khi đó nó có tên là Oak(Oak:cây sồi,vì cửa sổ phòng làm việc của Gosling nhìn ra một gốc sồi).Gosling được công ty Sun Microsystems giao nhiệm vụ xây dựng một phần mềm lập trình cho các mặt hàng điện dân dụng với mục tiêu là nhỏ gọn và tương thích được với nhiều loại thiết bị phần cứng khác nhau.Đầu tiên Oak được dung trong Dự án Xanh. Sau một chuyến du lịch của nhóm phát triển Oak đến đảo Java của Indonesia nổi tiếng về cà phê,Oak đã được đôi tên thành Java từ đó.Sau này chúng ta có thể thấy nhiều khái niệm và hình tượng liên quan đến cà phê(như “bean” là hạt cà phê). Sun, công ty đã phát minh ra ngôn ngữ Java, chính thức ban hành bản Java Development Kit (JDK) 1.0 vào năm 1995 hoàn toàn miễn phí để các nhà phát triển có thể tải về, học Java, xây dựng các ứng dụng Java và triển khai chúng trên các hệ điều hành có hỗ trợ Java. Ban đầu, Java chủ yếu dùng để phát triển các Applet, các ứng dụng nhúng vào trình duyệt, góp phần làm sinh động các trang Web tĩnh vốn hết sức tẻ nhạt hồi dó. Tuy nhiên, cùng với sự phát triển của công nghệ thông tin và nhu cầu của xã hội, Java applet đã dần mất đi vị trí của nó và thay vào đó, các công ty, cộng đồng ủng hộ Java đã phát triển nó theo một hướng khác. Hiện nay, công nghệ Java được chia làm ba bộ phận: J2SE Page 5 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN Gồm các đặc tả, công cụ, API của nhân Java giúp phát triển các ứng dụng trên desktop và định nghĩa các phần thuộc nhân của Java. J2EE Gồm các đặc tả, công cụ, API mở rộng J2SE để phát triển các ứng dụng qui mô xí nghiệp, chủ yếu để chạy trên máy chủ (server). Bộ phận hay được nhắc đến nhất của công nghệ này là công nghệ Servlet/JSP: sử dụng Java để làm các ứng dụng web. J2ME Gồm các đặc tả, công cụ, API mở rộng để phát triển các ứng dụng Java chạy trên điện thoại di động, thẻ thông minh, thiết bị điện tử cầm tay, robo và những ứng dụng điện tử khác. Java đã trải qua 3 bước phát triển quan trọng: Java 1.0 gắn liền với bản JDK đầu tiên, Java 2 gắn với JDK 1.2 và Java 5 gắn với J2SDK 1.5 Ngày nay, khi nhắc đến Java người ta không còn chỉ nhắc đến Java như là một ngôn ngữ mà nhắc đến Java như là một công nghệ hay một nền tảng phát triển. Nó bao gồm các bộ phận: • Máy ảo Java: JVM • Bộ công cụ phát triển: J2SDK • Các đặc tả chi tiết kĩ thuật (specifications) • Ngôn ngữ lập trình (programming language) 2.Một số đặc điểm. Java là một nền tảng phát triển các ứng dụng phần mềm có vị trí rất lớn trong những năm cuối thể kỷ 20 đầu thế kỷ 21 .Đánh dấu sự trưởng thành của mô hình hướng đối tượng , nó được coi là một nền tảng mang tính chất cách mạng trong ngành phần mềm . Mô hình máy ảo Virtual Machine đã cho phép các ứng dụng viết bằng Java có thể chạy trên nhiều hệ điều hành khác nhau.Khẩu hiệu nổi tiếng của Java là “Write one,Run anywhere” có thể hiểu là “Viết một lần,chạy khắp mọi nơi” Page 6 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN Java nhanh chóng được nhiều nhà lập trình công nhận . Các câu lệnh và các biểu diễn tượng tự trong một số ngôn ngữ như C , C++ . Mặc dù Java đã bổ sung khá nhiều điểm mới , nét phân biệt nhất của Java lại là những đặc điểm mà nó bỏ qua : Như so với C thì Java không có : Số học địa chỉ bộ nhớ (Con trỏ) , Bộ tiền xử lý, Câu lệnh goto , chuyển đổi kiểu tự động , các biến và hàm tổng thể , các định danh xác định kiểu. So với C++ thi Java không có : đa thừa kế , đa ABI (Application Binary Interface – Giao diện nhị phân ứng dụng) II. Máy ảo Java : Java Virtual Machine (JVM) : Mã nguồn Java được biên dịch để sinh ra mã đối tượng gọi la ByteCode (Mã byte ). ByteCode ở đây không phải là mã nhị phân của máy tính đang tồn tại thực tế nào mà nó là một loại mã máy kiến tạo trung gian có thể dễ dàng dịch sang để chạy trên bất ký máy tính cụ thể nào . Thông thường trong hầu hết các môi trường hiện tại (Hệ điều hành ) JVM được gọi thực thi bằng một chương trình có tên là Java .JVM đọc chương trình bằng ByteCode và thông dich hoặc biên dịch nó ra theo hệ lênhk thực tế . Ðây là một đặc điểm có ý nghĩa rất lớn. Chạy bytecode trên một JVM là lý do vì sao các phần mềm Java là "viết một lần, chạy khắp nơi". Các chương trình chạy được Java (Java executable) cung cấp một bộ mã nhị phân chạy trên mọi bộ xử lý. Nói cách khác, một ứng dụng bằng Java của bạn chẳng hạn là chương trình xyz nào đó bằng Java sẽ chạy trên mọi hệ thống hỗ trợ Java mà không cần phải có riêng "xyz cho DOS", "xyz cho Windows 3.1", "xyz cho Windows 95" . Bởi vì JVM có thể cài đặt trên hầu hết các hệ điều hành(HDH) khác nhau (Window , Linux, Mac OS ,…) nên cùng một tập tin class có thể chạy trên các hệ điều hành khác nhau đó . Điều này nghĩa là với một file Java có thể chạy trên nhiều HDH khác nhau : Page 7 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN Tính dễ chuyển mang và tính năng của phần mềm Tính dễ chuyển mang của phần mềm là khuynh hướng lý tưởng của ngành công nghệ phần mềm. Nó đã được nghiên cứu, tìm kiếm từ lâu nay nhưng chưa bao giờ thực sự đạt được. Java làm cho ngành công nghệ này tiến lại gần tính dễ chuyển mang của phần mềm nhiều hơn tất cả các hệ thống trước đó. Tại các cửa hàng bán phần mềm hiện nay, có lẽ bạn sẽ thấy chủ yếu là các phần mềm dùng cho Windows (một số chỉ cho Windows 3.1, một số cho cả Windows 95 và Windows 3.1), một số ít cho Mac và một số rất ít (có thể là không có) cho Unix. Khi Java trở thành ngôn ngữ phổ biến thì bạn có thể chọn từ tất cả các phần mềm có trong cửa hàng và phần mềm bạn chọn mua sẽ chạy trên tất cả các hệ thống máy tính mà bạn có. Lúc đó mọi người có được sự lựa chọn rộng rãi hơn và giá phần mềm cũng sẽ hạ do các nhà cung ứng phần mềm có thể phân bổ chi phí phát triển trên một thị trường rộng lớn 250 triệu máy tính chứ không phải chỉ cho 91 triệu hệ thống Windows 3.1 hoặc cho 20 triệu hệ thống Macintosh hoặc cho 8 triệu hệ thống Unix. Máy ảo Java phải được triển khai cho mỗi hệ thống máy tính và sau đó mọi bytecode sẽ chạy được trên hệ thống đó. Ðiểm quan trọng ở đây là bytecode có khả Page 8 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN năng chuyển mang tổng hợp. Ðương nhiên vấn đề đặt ra là làm sao để có các JVM thích hợp cho từng môi trường. Có lẽ vấn đề này cũng tương tự như quá trình để cho các máy tính cá nhân (PC) là tương thích DOS trước đây. Một điều lý thú là bytecode không phải chỉ dành riêng cho Java. Nếu sửa đổi một chương trình dịch đối với một số ngôn ngữ khác như Ada hay Visual Basic để nó sinh ra được bytecode thì cũng có thể chạy bytecode đó "ngon lành" trên JVM trên bất kỳ máy tính nào. Ðây là một hướng mà các nhà cung ứng phần mềm đang quan tâm. Khả năng chạy được mã trên mọi hệ thống máy tính trên hành tinh là lý do mạnh mẽ để cải cách. ý tưởng về JVM hỗ trợ đắc lực cho hướng cải cách này. Java có những đảm bảo tính dễ chuyển mang, bao gồm việc cung cấp cùng một giao diện người lập trình ứng dụng (API, Application Programmer Interface) trên mọi loại nền; cùng một giao diện nhị phân ứng dụng (ABI, Application Binary Interface), cụ thể là máy ảo Java, trên mọi loại nền. Ngoài ra ngôn ngữ Java còn có qui định bắt buộc một số điểm lâu nay vẫn để tuỳ thuộc vào sự cụ thể hoá của người viết chương trình dịch. Bằng cách yêu cầu rằng các toán hạng được đánh giá theo thứ tự nghiêm ngặt từ trái qua phải và qui định kích thước của tất cả các kiểu cơ bản (kiểu nguyên là 32 bit, kiểu chính xác gấp đôi là 64 bit v.v) Java đáp ứng không những tính dễ chuyển mang mà còn cả cách xử lý đồng nhất của chương trình trên các hệ thống khác nhau. Java dùng Unicode là tập ký tự chuẩn có thể biểu diễn các ký hiệu, ký tự trong hầu hết các bảng chữ cái trên thế giới, kể cả các ký tự tiếng Việt cũng như các loại chữ tượng hình của châu A'. Trong thời gian sắp tới, nếu chuẩn tiếng Việt cho công nghệ thông tin của Việt nam dựa trên Unicode thì chắc chắn Java dễ dàng hỗ trợ cho chuẩn đó. Một điều có thể dễ nhận thấy rằng việc bảo đảm tính dễ chuyển mang có thể ảnh hưởng tới tính năng thực hiện của phần mềm. Tuy nhiên, ta có một sự cân nhắc đáng giá. Bạn hãy hình dung xem, nếu tất cả các hệ thống được xây dựng trong nhiều năm qua không cố gắng tiết kiệm chi phí của hai byte "thừa" và lưu giữ các con số năm bằng 4 byte chứ không phải là 2 byte thì chúng ta đã không gặp phải sự cố đau đầu "vấn đề năm 2000" . Với Java, có thể thấy một số điểm là hơi "cồng kềnh" hoặc "dư thừa". Tuy nhiên, những qui định chặt chẽ và chuẩn hoá của Java chính là để đảm bảo tính dễ chuyển mang và tính năng của nó trong một tương lai dài lâu. Page 9 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN Java với việc quản lý bộ nhớ Trong lập trình, một vấn đề rất nặng nề được đặt ra là việc quản lý bộ nhớ động, trong đó có việc "dọn dẹp bộ nhớ" - tức là việc giải phóng những phần bộ nhớ mà chương trình đã dùng xong để dành cho những mục đích khác. Khi một chương trình chạy, nó sẽ phân bổ bộ nhớ để lưu giữ các đối tượng mới. Khi sự tồn tại của các đối tượng này đã kết thúc thì không gian bộ nhớ dành cho chúng cần được giải phóng và dùng lại cho các đối tượng khác. Nếu bộ nhớ không được giải phóng thì quá trình (chương trình) sẽ ngày càng lớn lên và sẽ có thể chiếm hết tất cả không gian nhớ, gây tràn. Một số ngôn ngữ như COBOL-74 không trang bị khả năng quản lý bộ nhớ động (do vậy một số chương trình hết sức khó viết hoặc không thể viết được). Một số ngôn ngữ khác như Pascal, C, C++ lại trút gánh nặng quản lý bộ nhớ lên vai người lập trình. Thậm chí người lập trình còn phải quan tâm xem phần nào của bộ nhớ đang được sử dụng và phải giải phóng phần nào của bộ nhớ khi cần thiết. Những chuyện này dẫn đến nhiều loại lỗi khác nhau của các chương trình, phổ biến là lỗi không giải phóng được bộ nhớ gây ra các "lỗ hổng" không bao giờ được khai báo lại trong bộ nhớ. Còn tệ hơn là các lỗi gây ra do việc cố giải phóng những phần bộ nhớ còn đang sử dụng dẫn đến hỏng hoặc mất dữ liệu. Các chương trình Java được quản lý về bộ nhớ ở mức hệ thống và người lập trình không bao giờ phải lo lắng về chuyện đó. Thư viện thời gian chạy của Java sẽ giám sát các cấu trúc dữ liệu. Khi không còn một tham chiếu nào tới một cấu trúc dữ liệu thì nó không thể là đang được sử dụng vì chương trình không có cách gì để đọc hoặc ghi nó. Lúc đó nó sẽ là đối tượng của việc dọn dẹp bộ nhớ. Java hướng tới việc dọn dẹp bộ nhớ tự động. Việc dọn dẹp bộ nhớ tự động ảnh hưởng tới tính năng vì nó liên quan đến các quá trình khác chạy trong nền sau để giám sát việc sử dụng bộ nhớ. Tuy nhiên thực tế đã chỉ ra rằng, ở đây cũng có một sự cân nhắc đáng giá. Một hệ thống nhỏ thực hiện dọn dẹp bộ nhớ tự động đã dẫn tới sự cải thiện rất lớn thông qua việc gỡ bỏ một loạt các lỗi của các chương trình Java. Có thể so sánh, các chương trình C++ chịu trách nhiệm quản lý các đống (heap) bộ nhớ của riêng chúng do vậy chúng phải có mã dài hơn, mất nhiều thời gian gỡ rối hơn và các chương trình lớn thường dẫn tới các lỗi rất khó phát hiện và xử lý về việc dọn dẹp bộ nhớ. Page 10 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn [...]... 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN Page 15 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN b.Cấu trúc Tree của swing: Page 16 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN PHẦN III.PHÂN TÍCH THIẾT... Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN PHẦN IV.TỔNG KẾT *Kết thúc đề tài đã thu được một số kết quả như sau: -Trình bày được một số kiến thức cơ bản về công nghệ Java và nền tảng J2SE -Làm quen và sử dụng thư viện lập trình JFC -Xây dựng thành công trò chơi Puzzle với chức năng chính như sau: +Cho phép người chơi dịch chuyển các ô số để đưa về trạng thái win +Cho phép người chơi. .. implements Serializable -Đối tượng người chơi được ghi vào file gồm 2 thuộc tính là tên người chơi, điêm của người chơi: gamer(String strName,int iDiem) Page 19 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN 2.Lớp writeFile: -Phương thức void writeFile() ghi vào tập tin top.txt 5 đối tượng người chơi được tạo ra từ lớp gamer.Đây là 5 đối... liệu mức đỉnh: Thời gian giới hạn KHỞI TẠO TRÒ CHƠI Số lần dịch chuyển giới hạn Menu/Har d NGƯỜI Menu/New Thông báo bắt đầu b CHƠI THIẾT LẬP ĐỘ KHÓ Tên người chơi Thông báo thắng/thua Thông số giới hạn ĐIỂM KỈ LỤC Tên người chơi XỬ LÝ KẾT THÚC Điểm Điểm Page 18 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn LƯU KỈ LỤC ĐIỂM Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN III.Cấu trúc... năng Page 22 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN JMenuBar menuBar Cung cấp các lựa chọn cho người chơi như tạo game mới,xem danh sách người chơi có điêm cao nhất,thiết lập độ khó JLabel lbm,lbt Hiển thị số lần dịch chuyển và thời gian JButton sta Khi người chơi click vào nút này thì bắt đầu tính thời gian và số lần dịch chuyển... thúc.Nó bao gồm các công việc: + Xử lý các hoạt động chính của trò chơi như dịch chuyển các ô ở cạnh ô trống +So sánh với trạng thái cần đạt được để xét chiến thắng Page 17 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN +So sánh điểm với điểm trong file danh sách người chơi có điểm số cao nhất để ghi kỉ lục +Xét thời gian và số lần dịch... số cao nhất để xuất ra JOptionPane -Các JOptionPanel: +Hiện ra danh sách người chơi có điểm số cao nhất: JOptionPane.showMessageDialog(this,top); +Hiện thông báo hướng dẫn về game: JOptionPane.showMessageDialog(this, "Puzzle Game!"); Page 23 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN -JMenuBar có cấu trúc như sau: -JMenu game gồm... Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN 3.3.5 Sau mỗi lần dịch chuyển kiểm tra chuỗi số thu được với lbBtn: a.If bằng nhau thì tính:diem=timeMax*3+(moveMax-move)*5 b.Ghi danh sách người chơi có điểm số cao nhất vào mảng gms c.for(i=0;iend 3.3.6 Nếu chuỗi... người chơi int btnX,btnY Giá trị xác định vị trí của các ô trên bàn cờ khi được click.btn[i] có btnX=i%3,btnY=i/3 int btnOX,btnOY Lưu vị trí ô trống.btnOX=i%3,btnOY=i/3 int diem Giá trị lưu điểm của người chơi int move Tính số lần dịch chuyển int timeMax,moveMax Giới hạn về thời gian và số lần dịch chuyển của Page 20 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle. .. nếu rơi vào top 5 +Thiết lập độ khó trò chơi +Hiện ra danh sách top 5 người chơi có điểm số cao nhất *Một số vấn đề tồn tại: -Chưa giải quyết được vấn đề khởi tạo random bàn cờ,người chơi xếp về trạng thái “chết”,không có chiến thắng -Chưa lưu kỉ lục người chơi theo các cấp độ khó khác nhau *Hướng phát triển them: -Đưa thêm các hình ảnh để cho game sinh động Tài liệu tham khảo : Website : + http://java.sun.com . Tuấn Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN PHẦN I:GIỚI THIỆU VỀ ĐỀ TÀI TRÒ CHƠI PUZZLE. Bản. Đề tài tốt nghiệp:Trò chơi Puzzle Khoa CNTH-Viện ĐH Mở HN Page 15 of 27 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn Đề tài tốt nghiệp:Trò chơi