làm trò chơi Puzzle sử dụng ngôn ngữ lập trình Java

27 3.4K 12
làm trò chơi Puzzle sử dụ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

Tài liệu tham khảo công nghệ thông tin làm trò chơi Puzzle sử dụng ngôn ngữ lập trình Java

Đề 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………………………………………………………… Phần I.Giới thiệu Game Puzzle……………………………………….3 Phần II.Giới thiệu công nghệ Java tảng J2SE……………… I Giới thiệu chung Java…………………………………………….5 II Máy ảo Java-JVM………………………………………………… 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 II III IV Sơ đồ phân rã chứa năng……………………………………………17 Sơ đồ luồng liệu mức đỉnh………………………………………18 Cấu trúc chương trình……………………………………………….19 Đặc tả chương trinh…………………………………………………25 Phần IV.Kết luận…………………………………………………… 27 Page of 28 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 phần lớn người đồng ý loại hình giải trí có sức thu hút lớn,nhất với giới trẻ nay.Đặc biệt sau đời Internet,game online xuất nhanh chóng gây sức hấp dẫn to lớn.Chúng ta chơi game online mạng,các game offline PC,các game dòng máy chuyên PS2,PS3 game phát triển mạnh thiết bị di động điện thoại di động,các máy Xbox Ở nước phát triển Nhật Bản,Mỹ có nhiều cơng ty chuyên sản xuất game Nintendo,Sony,Sega năm công ty đạt doanh thu hàng tỷ USD.Hay với nước sau Hàn Quốc,Trung Quốc có ngành cơng nghê game mạnh nhờ có đầu tư đắn chiến lược phát triển tốt Mặc dù VINASA xếp game định hướng công nghệ chiến lược hiệp hội giai đoạn 2006-2010, bên cạnh định hướng phần mềm nhúng ERP (bộ phần mềm hoạch định nguồn lực doanh nghiệp) thị trường game Việt Nam cịn yếu.Chưa có nhiều cơng ty chun lập trình game,những cơng ty phát triển game online chủ yếu cung cấp game nhập từ Hàn Quốc,Trung Quốc game nội vắng bóng thị trường.Đúng theo nhận định chuyên gia phát triển game Hàn Quốc:“ngành công nghiệp game Việt Nam giống đứa trẻ sơ sinh, cần giúp đỡ nuôi nấng (của Chính phủ) để phát triển”.Chắc hẳn có nhiều bạn trẻ theo đuổi ngành CNTT muốn tham gia vào lĩnh vực họ cần có giúp đỡ ủng hộ từ nhà giáo dục,từ sách,định hướng phát triển phủ.Đề tài tốt nghiệp làm trị chơi Puzzle sử dụng ngơn ngữ lập trình Java.Do tiếp cận lập trình game nên chương trình cịn có nhiều thiếu sót,mong thầy giúp đỡ,góp ý để hoàn thiện Để hoàn thành tập cố gắng thân cịn có tham gia góp ý,giúp đỡ thầy giáo 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 xin cám ơn bạn lớp,các bạn cộng đồng Java Việt Nam đóng góp ý kiến trình thực đề tài Page of 28 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 câu đố,đây trị chơi thuộc thể loại game trí tuệ Trị chơi giống trị chơi xếp hình,đầu tiên với kích thước trị chơi ô,trạng thái ban đầu khởi tạo ngẫu nhiên.Nhiệm vụ người chơi xếp chữ số cho đạt trạng thái win cho sau: Người chơi dịch chuyển số theo hướng lên xuống,sang trái phải cạnh trống.Độ khó trị chơi qui định giới hạn thời gian chơi số lần dịch chuyển.Nghĩa 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 bị thua Người chơi cố gắng xếp ô trạng thái win nhanh tốt dùng lần dịch chuyển tốt,khi win người chơi số điểm tính theo cơng thức: Số giây so với giây giới hạn*3+Số lần dịch chuyển số lần cho phép*5 Nếu số điểm bạn nằm top người có điểm cao bạn ghi danh vào top Page of 28 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 Cách thức chơi đơn giản.Khi tìm hiểu game có vấn đề thú vị.Đó có phải bạn đưa game trạng thái win khơng?Trong game có trạng thái mà khơng có giải quyết,đó trạng thái sau: Đã có nhiều người tham gia giải tình đến chưa thành cơng.Để biết rõ tình thú vị bạn xem them địa sau:http://www.holotronix.com/samlloyd15.php Chương trình xây dựng tảng J2SE Java.Chủ yếu lập trình GUI sử dụng Swing Java-sẽ giới thiệu phần II Page of 28 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 II.GIỚI THIỆU VỀ JAVA VÀ NỀN TẢNG J2SE I.Giới thiệu chung Java 1.Sự phát triển Java xây dựng vào cuối năm 1990 James Gosling có tên Oak(Oak:cây sồi,vì cửa sổ phịng làm việc Gosling nhìn gốc sồi).Gosling cơng ty Sun Microsystems giao nhiệm vụ 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 loại thiết bị phần cứng khác nhau.Đầu tiên Oak dung Dự án Xanh Sau chuyến du lịch nhóm phát triển Oak đến đảo Java Indonesia tiếng cà phê,Oak đôi tên thành Java từ đó.Sau thấy nhiều khái niệm hình tượng liên quan đến cà phê(như “bean” hạt cà phê) Sun, công ty phát minh ngơn ngữ Java, thức ban hành Java Development Kit (JDK) 1.0 vào năm 1995 hoàn tồn miễn phí để nhà phát triển tải về, học Java, xây dựng ứng dụng Java triển khai chúng hệ điều hành có hỗ trợ Java Ban đầu, Java chủ yếu dùng để phát triển Applet, ứng dụng nhúng vào trình duyệt, góp phần làm sinh động trang Web tĩnh vốn tẻ nhạt hồi dó Tuy nhiên, với phát triển công nghệ thông tin nhu cầu xã hội, Java applet dần vị trí thay vào đó, công ty, cộng đồng ủng hộ Java phát triển theo hướng khác Hiện nay, cơng nghệ Java chia làm ba phận: J2SE Page of 28 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 tả, công cụ, API nhân Java giúp phát triển ứng dụng desktop định nghĩa phần thuộc nhân Java J2EE Gồm đặc tả, công cụ, API mở rộng J2SE để phát triển ứng dụng qui mơ xí nghiệp, chủ yếu để chạy máy chủ (server) Bộ phận hay nhắc đến công nghệ công nghệ Servlet/JSP: sử dụng Java để làm ứng dụng web J2ME Gồm đặc tả, công cụ, API mở rộng để phát triển ứng dụng Java chạy điện thoại di động, thẻ thông minh, thiết bị điện tử cầm tay, robo ứng dụng điện tử khác Java trải qua bước phát triển quan trọng: Java 1.0 gắn liền với JDK đầu tiên, Java gắn với JDK 1.2 Java gắn với J2SDK 1.5 Ngày nay, nhắc đến Java người ta không cịn nhắc đến Java ngơn ngữ mà nhắc đến Java công nghệ hay tảng phát triển Nó bao gồm 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 tảng phát triển ứng dụng phần mềm có vị trí lớn năm cuối thể kỷ 20 đầu kỷ 21 Đánh dấu trưởng thành mơ hình hướng đối tượng , coi tảng mang tính chất cách mạng ngành phần mềm Mơ hình máy ảo Virtual Machine cho phép ứng dụng viết Java chạy nhiều hệ điều hành khác nhau.Khẩu hiệu tiếng Java “Write one,Run anywhere” hiểu “Viết lần,chạy khắp nơi” Java nhanh chóng nhiều nhà lập trình cơng nhận Các câu lệnh biểu diễn tượng tự số ngôn ngữ C , C++ Mặc dù Java bổ sung nhiều điểm , nét phân biệt Java lại đặc điểm mà bỏ qua : Page of 28 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 Như so với C Java khơng có : Số học địa nhớ (Con trỏ) , Bộ tiền xử lý, Câu lệnh goto , chuyển đổi kiểu tự động , biến hàm tổng thể , đị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 biên dịch để sinh mã đối tượng gọi la ByteCode (Mã byte ) ByteCode mã nhị phân máy tính tồn thực tế mà loại mã máy kiến tạo trung gian dễ dàng dịch sang để chạy bất ký máy tính cụ thể Thơng thường hầu hết môi trường (Hệ điều hành ) JVM gọi thực thi chương trình có tên Java JVM đọc chương trình ByteCode thơng dich biên dịch theo hệ lênhk thực tế Ðây đặc điểm có ý nghĩa lớn Chạy bytecode JVM lý phần mềm Java "viết lần, chạy khắp nơi" Các chương trình chạy Java (Java executable) cung cấp mã nhị phân chạy xử lý Nói cách khác, ứng dụng Java bạn chẳng hạn chương trình xyz Java chạy 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 JVM cài đặt hầu hết hệ điều hành(HDH) khác (Window , Linux, Mac OS ,…) nên tập tin class chạy hệ điều hành khác Điều nghĩa với file Java chạy nhiều HDH khác : Page of 28 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 tính phần mềm Tính dễ chuyển mang phần mềm khuynh hướng lý tưởng ngành cơng nghệ phần mềm Nó nghiên cứu, tìm kiếm từ lâu chưa thực đạt Java làm cho ngành cơng nghệ tiến lại gần tính dễ chuyển mang phần mềm nhiều tất hệ thống trước Tại cửa hàng bán phần mềm nay, có lẽ bạn thấy chủ yếu phần mềm dùng cho Windows (một số cho Windows 3.1, số cho Windows 95 Windows 3.1), số cho Mac số (có thể khơng có) cho Unix Khi Java trở thành ngơn ngữ phổ biến bạn chọn từ tất phần mềm có cửa hàng phần mềm bạn chọn mua chạy tất hệ thống máy tính mà bạn có Lúc người có lựa chọn rộng rãi giá phần mềm hạ nhà cung ứng phần mềm phân bổ chi phí phát triển thị trường rộng lớn 250 triệu máy tính khơng phải cho 91 triệu hệ thống Windows 3.1 cho 20 triệu hệ thống Macintosh cho triệu hệ thống Unix Máy ảo Java phải triển khai cho hệ thống máy tính sau bytecode chạy hệ thống Ðiểm quan trọng bytecode có khả chuyển mang tổng hợp Ðương nhiên vấn đề đặt để có JVM thích hợp cho mơi trường Có lẽ vấn đề tương tự trình máy tính cá nhân (PC) tương thích DOS trước Page of 28 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 Một điều lý thú bytecode dành riêng cho Java Nếu sửa đổi chương trình dịch số ngơn ngữ khác Ada hay Visual Basic để sinh bytecode chạy bytecode "ngon lành" JVM máy tính Ðây hướng mà nhà cung ứng phần mềm quan tâm Khả chạy mã hệ thống máy tính hành tinh lý mạnh mẽ để cải cách ý tưởng JVM hỗ trợ đắc lực cho hướng cải cách Java có đảm bảo tính dễ chuyển mang, bao gồm việc cung cấp giao diện người lập trình ứng dụng (API, Application Programmer Interface) loại nền; giao diện nhị phân ứng dụng (ABI, Application Binary Interface), cụ thể máy ảo Java, loại Ngồi ngơn ngữ Java cịn có qui định bắt buộc số điểm lâu để tuỳ thuộc vào cụ thể hoá người viết chương trình dịch Bằng cách u cầu tốn hạng đánh giá theo thứ tự nghiêm ngặt từ trái qua phải qui định kích thước tất kiểu (kiểu nguyên 32 bit, kiểu xác gấp đơi 64 bit v.v) Java đáp ứng khơng tính dễ chuyển mang mà cịn cách xử lý đồng chương trình hệ thống khác Java dùng Unicode tập ký tự chuẩn biểu diễn ký hiệu, ký tự hầu hết bảng chữ giới, kể ký tự tiếng Việt loại chữ tượng hình châu A' Trong thời gian tới, chuẩn tiếng Việt cho công nghệ thơng tin Việt nam dựa Unicode chắn Java dễ dàng hỗ trợ cho chuẩn Một điều dễ nhận thấy việc bảo đảm tính dễ chuyển mang ảnh hưởng tới tính thực phần mềm Tuy nhiên, ta có cân nhắc đáng giá Bạn hình dung xem, tất hệ thống xây dựng nhiều năm qua không cố gắng tiết kiệm chi phí hai byte "thừa" lưu giữ số năm byte byte khơng gặp phải cố đau đầu "vấn đề năm 2000" Với Java, thấy số điểm "cồng kềnh" "dư thừa" Tuy nhiên, qui định chặt chẽ chuẩn hố Java để đảm bảo tính dễ chuyển mang tính tương lai dài lâu Java với việc quản lý nhớ Trong lập trình, vấn đề nặng nề đặt việc quản lý nhớ động, có việc "dọn dẹp nhớ" - tức việc giải phóng phần nhớ mà chương trình dùng xong để dành cho mục đích khác Khi chương trình chạy, phân bổ nhớ để lưu giữ đối tượng Khi tồn đối tượng kết thúc khơng gian nhớ dành cho chúng cần giải phóng dùng lại cho đối tượng khác Nếu nhớ không giải Page of 28 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óng trình (chương trình) ngày lớn lên chiếm hết tất khơng gian nhớ, gây tràn Một số ngôn ngữ COBOL-74 không trang bị khả quản lý nhớ động (do số chương trình khó viết viết được) Một số ngôn ngữ khác Pascal, C, C++ lại trút gánh nặng quản lý 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 nhớ sử dụng phải giải phóng phần nhớ cần thiết Những chuyện dẫn đến nhiều loại lỗi khác chương trình, phổ biến lỗi khơng giải phóng nhớ gây "lỗ hổng" không khai báo lại nhớ Còn tệ lỗi gây việc cố giải phóng phần nhớ sử dụng dẫn đến hỏng liệu Các chương trình Java quản lý nhớ mức hệ thống người lập trình khơng phải lo lắng chuyện Thư viện thời gian chạy Java giám sát cấu trúc liệu Khi khơng cịn tham chiếu tới cấu trúc liệu khơng thể sử dụng chương trình khơng có cách để đọc ghi Lúc đối tượng việc dọn dẹp nhớ Java hướng tới việc dọn dẹp nhớ tự động Việc dọn dẹp nhớ tự động ảnh hưởng tới tính liên quan đến trình khác chạy sau để giám sát việc sử dụng nhớ Tuy nhiên thực tế rằng, có cân nhắc đáng giá Một hệ thống nhỏ thực dọn dẹp nhớ tự động dẫn tới cải thiện lớn thông qua việc gỡ bỏ loạt lỗi chương trình Java Có thể so sánh, chương trình C++ chịu trách nhiệm quản lý đống (heap) nhớ riêng chúng chúng phải có mã dài hơn, nhiều thời gian gỡ rối chương trình lớn thường dẫn tới lỗi khó phát xử lý việc dọn dẹp nhớ III.Giới thiệu tảng J2SE J2SE : viết tắt Java Standard Edition - Vừa đặc tả , vừa tảng thực thi (bao gồm phát triển triển khai) cho ứng dụng Java J2SE cung cấp API , kiến trúc chuẩn , thư viện công cụ cốt lõi để xây dựng ứng dụng Java Mặc dù J2SE tảng thiên phát triển sản phẩm chạy máy tính để bàn tính nó, bao gồm phần triển khai ngơn ngữ Java lớp gốc, công nghệ JDBC để truy vấn liệu chỗ dựa để Java tiếp tục mở rộng hỗ trợ thành phần mạnh mẽ dùng cho ứng dụng hệ thống quy mơ xí nghiệp thiết bị nhỏ Page 10 of 28 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 javax.swing.plaf.metal javax.swing.plaf.multi 8.javax.swing.table Cung cấp mô hình quan sát cho thành phần table, cho phép bạn xếp thông riêng biệt định dạng lưới với xuất tương tự bảng tính javax.swing.text Cung cấp điểm lớp giao tiếp dựa văn hỗ trợ thiết kế thông dụng biết đến document/view 10 javax.swing.text.html Sử dụng kỹ thuật đọc định dang văn HTML 11.javax.swing.text.html.parser Hỗ trợ việc phân tích HTML 12.javax.swing.text.rtf Sử dụng kỹ thuật đọc định dạng Rich Text Format 13.javax.swing.tree Định nghĩa mơ hình quan sát thành phần phân cấp , thay cấu trúc file dãy thuộc tính 14.javax.swing.undo Chứa chức cần thiết cho việc bổ sung chức undo Page 13 of 28 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 Một số cấu trúc swing bản: a.Cấu trúc GUI tổng quát: Page 14 of 28 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 swing: Page 15 of 28 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 KẾ I.Sơ đồ phân rã chức năng: Page 16 of 28 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 -Chương trình có chức chính,trong quan trọng chức Xử lý kết thúc.Nó bao gồm cơng việc: + Xử lý hoạt động trị chơi dịch chuyển cạnh trống +So sánh với trạng thái cần đạt để xét chiến thắng +So sánh điểm với điểm file danh sách người chơi có điểm số cao để ghi kỉ lục +Xét thời gian số lần dịch chuyển giới hạn để xử thua II.Sơ đồ dòng liệu mức đỉnh: NGƯỜI CHƠI XỬ LÝ KẾT THÚC THIẾT LẬP ĐỘ KHĨ KHỞI TẠO TRỊ CHƠI LƯU KỈ LỤC ĐIỂM Menu/New Thông báo bắt đầu b Menu/Hard Thời gian giới hạn Số lần dịch chuyển giới hạn Thông số giới hạn Thông báo thắng/thua Điểm Tên người chơi Page 17 of 28 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 ĐIỂM KỈ LỤC Tên người chơi Điểm III.Cấu trúc chương trình Page 18 of 28 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 Chương trình bao gồm lớp với thành phần chức sau: 1.Lớp gamer: -Lớp cài đặt giao diện Serializable để tạo đối tượng phục vụ ghi đọc file với lớp ObjectOutputStream ObjectInputStream: class gamer implements Serializable -Đối tượng người chơi ghi vào file gồm thuộc tính tên người chơi,điêm người chơi: gamer(String strName,int iDiem) 2.Lớp writeFile: Page 19 of 28 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ương thức void writeFile() ghi vào tập tin top.txt đối tượng người chơi tạo từ lớp gamer.Đây đối tượng khởi tạo danh sách người chơi có điểm số cao -Phương thức void writeList(gamer[] g) ghi vào tập tin top.txt mảng đối tượng gamer -Phương thức gamer[] readList() đọc tất đối tượng gamer file top.txt Trả giá trị cho mảng gamer g 3.Lớp puzzle: -Đây lớp quan trọng chương trình.Nó tạo JPanel bàn cờ gồm ô hình trên.Bao gồm thành phần chính: Tên biến Chức JButton btn[] Một mảng gồm JButton tương ứng với ô bàn cờ String lbBtn=”12345678 ” Nhãn gán cho ô bàn cờ.Đây đích để xác định chiến thắng String lbBtns=”12345687 ” Đích so sánh để xác định trạng thái “chết” String names Lưu tên người chơi int btnX,btnY Giá trị xác định vị trí bàn 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 người chơi int move Tính số lần dịch chuyển int timeMax,moveMax Giới hạn thời gian số lần dịch chuyển trò chơi Boolean boSta Xác định game bắt đầu.Giá trị lấy người chơi click vào nút Start Game writeFile write Đối tượng tạo từ lớp writeFile phục vụ Page 20 of 28 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 việc ghi đọc kỉ lục điểm file text gamer gms[],newGamer,tg Đối tượng tạo từ lớp gamer để lưu vào file với thong tin điểm tên người chơi File f Kiểm tra file text ghi danh sách người chơi có tồn không -Các JOptionPane: +Hiện thông báo điểm ,thời gian số lần dịch chuyển lại.Hỏi người chơi có ghi tên khơng : JOptionPane.showConfirmDialog(this,"LeftMove:"+leftMove+line+" LeftTime:”+timeMax+line+ "Your Score:" +diem + line + "Do you save your Score?", "Congretulation", JOptionPane YES_NO_OPTION); +Thông báo chiến thắng điểm số không vào top 5: JOptionPane.showMessageDialog(this, "You Win!Try again to Top Score!") +Thông báo rơi vào trạng thái “chết” chiến thắng: JOptionPane.showMessageDialog(this, "You can't Win!Try again"); +Thông báo hết chơi: JOptionPane.showMessageDialog(this, "Het gio!You Lost!") +Thông báo hết move: JOptionPane.showMessageDialog(this, "Het move!You Lost!") Tên hàm Chức void emptyLabel() Dùng vịng for xác định vị trí trống,lưu vị trị qua btnOX,btnOY void createBoard() Tạo bàn cờ với trạng thái ô ngẫu Page 21 of 28 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 nhiên void actionPerformed Xử lý kiện ô số bị click void gameAction() Xử lý hành động game kiểm tra cho phép dịch chuyển;xét giới hạn thời gian,số lần dịch chuyển;Xác định trạng thái cuối ;so sánh danh sách người chơi có điểm số cao để ghi kỉ lục JLabel setText(JLabel lb,String s) Lấy JLabel hiển thị số lần dịch chuyển void setMax(int i) Xác định giá trị thời gian số lần dịch chuyển giới hạn tương ứng với mức độ khó,dễ 4.Lớp startGame -Đây lớp chương trình.Chủ yếu tương tác với người chơi thông qua JMenu để khởi tạo game mới,thiết lập độ khó cho trị chơi.Gồm thành phần chức năng: Tên biến Chức JMenuBar menuBar Cung cấp lựa chọn cho người chơi 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 thời gian Page 22 of 28 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 JButton sta Khi người chơi click vào nút bắt đầu tính thời gian số lần dịch chuyển game JPanel subPanel Khung chứa sta,lbm,lbt.Được trình bày theo kiểu FlowLayout Puzzle puz Đối tượng bàn cờ JPanel mainPanel Khung chứa puz subpanel.Được trình bày theo kiểu BorderLayout int iMax Giá trị để xác định độ khó chọn mà lấy giá trị time move để hiển thị Thread thrTime Luồng để chạy thời gian cho chương trình gamer gamer[] Mảng đối tượng người chơi để lưu đối tượng người chơi đọc từ file top.txt String top[] Mảng lưu danh sách người chơi có điểm số cao để xuất JOptionPane -Các JOptionPanel: +Hiện 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 game: JOptionPane.showMessageDialog(this, "Puzzle Game!"); Page 23 of 28 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 sau: Page 24 of 28 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 -JMenu game gồm JMenuItem new:Tạo ván game JMenuItem High Score:Xem danh sách top score JMenuItem Exit:Thốt khỏi trị chơi -JMenu Hard gồm JRadioButtonMenuItem Easy:chọn mức độ dễ JRadioButtonMenuItem Normal:Mức độ trung bình JRadioButtonMenuItem Hard:Cấp độ khó -JMenu Helps gồm JMenuItem Author:giới thiệu tác giả JMenuItem About Game:Giới thiệu game Tên hàm JMenuBar createMenuBar() void actionPerformed class Class1 implements Runnable Chức Tạo menu Xử lý kiện người chơi chọn Menu hay click vào nút Start Game Lớp cài đặt giao diện Runable để chạy luồng tạo thời gian cho trò chơi IV.Tiến trình trị chơi: Khởi động trị chơi Page 25 of 28 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ựa chọn menu\Hard thiết lập độ khó: 2.1 If chọn Easy(mặc định):timeMax=120,moveMax=100 2.2 If chọn Normal:timeMax=60,moveMax=50 2.3 If chọn Hard:timeMax=20,moveMax=20 Lựa chọn menu\Game: 3.1 If chọn High Score:hiện danh sách người chơi có điểm cao 3.2 If chọn Exit:thốt khỏi trị chơi 3.3 If chọn New gọi createBoard() tạo bàn cờ random 3.3.1 While chưa click nút Start Game mà click vào ô cạnh ô trống thơng báo u cầu click nút Start Game để bắt đầu chơi 3.3.2 Click nút Start Game:-boSta=true -timeMax bắt đầu giảm -Mỗi lần dịch chuyển move+1 3.3.3 If move>=moveMax:thông báo hết move->end 3.3.4 If timeMax=0:thông báo hết giờ->end 3.3.5 Sau lần dịch chuyển kiểm tra chuỗi số thu với lbBtn: a.If tính:diem=timeMax*3+(moveMax-move)*5 b.Ghi danh sách người chơi có điểm số cao vào mảng gms c.for(i=0;iend 3.3.6 Nếu chuỗi số thu sau dịch chuyển = với lbBtns thơng báo trạng thái khơng thể chiến thắng.->end Lựa chọn menu\Hepls: Page 26 of 28 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 4.1 If lựa chọn Author bảng giới thiệu tác giả 4.2 If chọn About Game thông báo giới thiệu game PHẦN IV.TỔNG KẾT *Kết thúc đề tài thu số kết sau: -Trình bày số kiến thức công nghệ Java tảng J2SE -Làm quen 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 sau: +Cho phép người chơi dịch chuyển ô số để đưa trạng thái win Page 27 of 28 SV:Phạm Công Thành-Lớp 04B1 GVHD:Nguyễn Đức Tuấn ... dục,từ sách,định hướng phát triển phủ.Đề tài tốt nghiệp làm trị chơi Puzzle sử dụng ngơn ngữ lập trình Java. Do tiếp cận lập trình game nên chương trình cịn có nhiều thiếu sót,mong thầy giúp đỡ,góp... Chương trình xây dựng tảng J2SE Java. Chủ yếu lập trình GUI sử dụng Swing Java- sẽ giới thiệu phần II Page of 28 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. .. cung cấp Java API, máy ảo Java thành phần cần thiết khác để chạy Applet ứng dụng viết ngơn ngữ lập trình Java Mơi trường thực thi Java khơng có cơng cụ tiện ích trình biên dịch hay trình gỡ lỗi

Ngày đăng: 23/11/2012, 10:34

Từ khóa liên quan

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

Tài liệu liên quan