Báo cáo môn học ngôn ngữ lập trình Java
Trang 1MỤC LỤC
Lời mở đầu 3
1.1 Lý do chọn đề tài 3
1.2 Mục tiêu của đề tài 3
1.3 Công nghệ sử dụng 3
1.4 Phạm vi nghiên cứu 4
Phân công công việc và đánh giá kết quả các thành viên trong nhóm 4
Nội dung báo cáo 4
3.1 Cơ sở lý thuyết 4
3.1.1 Giới thiệu 4
3.1.2 Một số tính chất của ngôn ngữ java 5
3.1.2.1 Đơn giản 5
3.1.2.2 Hướng đối tượng 5
3.1.2.3 Độc lập phần cứng và hệ điều hành 5
3.1.2.4 Mạnh mẽ 6
3.1.2.5 Bảo mật 7
3.1.2.6 Phân tán 7
3.1.2.7 Đa luồng 7
3.1.2.8 Linh động 7
3.2 Phân tích thiết kế hệ thống 7
3.2.1 Phân tích hệ thống 7
3.2.2 Thiết kế hệ thống 9
3.3 Kết quả 16
Kết luận 18
4.1 Đạt được 18
4.2 Chưa đạt được 20
Tài liệu tham khảo 20
Trang 2DANH MỤC HÌNH ẢNH
Hình 1: Bảng mô tả phân công công việc
Hình 2: Luồng xử lý các rẽ nhánh chức năng
Hình 3: Các lớp thành viên
Hình 4: Lớp Main chính
Hình 5: Lớp Game
Hình 6: Lớp Game thread
Hình 7: Lớp Game panel
Hình 8: Lớp Configuration
Hình 9: Lớp Figure
Hình 10: Lớp SquareBoad
Hình 11: Lớp SquareBoad Component
Hình 12: Mô tả mỗi quan hệ giữa các lớp
Hình 13: Bắt đầu trò chơi
Hình 14: Quá trình trò chơi
Trang 3Lời mở đầu
1 Lý do chọn đề tài
Công nghệ thông tin (CNTT) ngày càng có vai trò quan trọng trong cuộc sống hằng ngày của chúng ta Việc ứng dụng CNTT vào các lĩnh vực trong đời sống giúp công việc được tiến hành nhanh chóng và hiệu quả hơn Có rất nhiều công việc mới phát triển song song với sự phát triển của CNTT, một trong những số đó là hiệu ứng game, hướng đi dịch vụ mang lại hiệu quả kinh tế rất lớn
Chúng em chọn đề tài “Lập trình game xếp gạch bằng ngôn ngữ java” nhằm tìm hiểu sâu hơn về ngôn ngữ java trong lập trình hướng đối tượng, từ đó viết một ứng dụng cụ thể thử nghiệm làm cơ sở củng cố kiến thức và định hướng, kế hoạch xây dựng những ứng dụng game cụ thể, phát triển theo hướng dịch vụ trong tương lai
1.1 Mục tiêu của đề tài
Hiểu khái niệm phân tích và giải quyết bài toán lập trình hướng đối tượng: Xác định các đối tượng lớp, mỗi quan hệ giữa các lớp trong một hệ thống thông tin
Mục tiêu đề tài mục đích nhằm nghiên cứu môi trường phát triển, ngôn ngữ java xây dựng những ứng dụng cụ thể
1.3 Công nghệ sử dụng
Trong xu thế phát triển công nghệ thông tin như vũ bảo hiện nay,đặc biệt là trong ngành công nghệ phần mềm ,ngày càng đòi hỏi trình độ cao trong kĩ thuật lập trình.Chính vì vậy mà phương pháp lập trình hướng thủ tục cổ điển trước đây không đáp ứng được nhu cầu đặt ra của thời đại ,một phương pháp lập trình mới được xây
dựng theo nguyên lý Alan-Kay đã được ra đời nhằm đáp ứng những nhu cầu cấp thiết đó : “Phương pháp Lập Trình Hướng đối Tượng”.
Đồ án này được thiết kế theo phương pháp LTHDT bằng ngôn ngữ Java ,do SunMicroSystem đưa ra vào năm 1991 Chính vì vậy mà nó giải quyết được những vướng mắc gặp phải khi thiết kế theo phương pháp lập trình thủ tục thuần túy
Mã chương trình rõ ràng,dễ đọc , dễ hiểu và cô đọng
Chương trình được tổ chức thành những Class lắp ghép lại với nhau thành một khối thống nhất
Mỗi Class gồm có nhiều Method đảm nhận các vai trò khác nhau trong chương trinh
Chương trình có tính mềm dẻo cao
Có khả năng tái sử dụng tài nguyên
Trang 41.4 Phạm vi nghiên cứu
Nghiên cứu môi trường phát triển, ngôn ngữ java trong lập trình hướng đối tượng Tìm hiểu cách xây dựng các phương thức, thuộc tính đối tượng trong java
Phân công công việc và đánh giá kết quả các thành viên trong nhóm
Xây dựng các lớp, phương thức Hoàn thành
Hình 1: Bảng mô tả phân công công việc
Nội dung báo cáo
3.1 Cơ sở lý thuyết
3.1.1 Giới thiệu
Java là một ngôn ngữ lập trình được Sun Microsystems giới thiệu vào tháng 6 năm 1995 Từ đó, nó đã trở thành một công cụ lập trình của các lập trình viên chuyên nghiệp Java được xây dựng trên nền tảng của C và C++, do vậy nó sử dụng các cú pháp của C và các đặc trưng hướng đối tượng của C++
Vào năm 1991, một nhóm các kỹ sư của Sun Microsystems có ý định thiết kế một ngôn ngữ lập trình để điều khiển các thiết bị điện tử như tivi, máy giặt, lò nướng,… Mặc dù C và C++ có khả năng làm việc này nhưng trình biên dịch lại phụ thuộc vào từng loại CPU
Trình biên dịch thường phải tốn nhiều thời gian để xây dựng nên rất đắt, vì vậy
để mỗi loại CPU có một trình biên dịch riêng là rất tốn kém Do đó nhu cầu thực tế đòi hỏi một ngôn ngữ chạy nhanh, gọn, hiệu quả và độc lập thiết bị tức là có thể chạy trên nhiều loại CPU khác nhau, dưới các môi trường khác nhau “Oak” đã ra đời và vào năm 1995 được đổi tên thành Java Mặc dù mục tiêu ban đầu không phải cho Internet nhưng do đặc trưng không phụ thuộc thiết bị nên Java đã trở thành
Trang 53.1.2 Một số tính chất của ngôn ngữ java
Java là ngôn ngữ lập trình được phát triển từ ngôn ngữ lập trình C/C++ Nó kế thừa, phát huy các thế mạnh của ngôn ngữ C/C++ và lược bỏ đi các cú pháp phức tạp của C/C++ Ngôn ngữ lập trình Java có một số đặc trưng tiêu biểu: đơn giản, hướng đối tượng, độc lập phần cứng và hệ điều hành, mạnh mẽ, bảo mật, phân tán,
đa luồng và linh động
3.1.2.1 Đơn giản
Những người thiết kế mong muốn phát triển một ngôn ngữ dễ học và quen thuộc với đa số người lập trình Do vậy Java loại bỏ các đặc trưng phức tạp của C và C++ như:
Loại bỏ thao tác con trỏ, thao tác định nghĩa chồng toán tử
Không cho phép đa kế thừa mà sử dụng các giao diện
Không sử dụng lệnh “goto” cũng như file header (.h)
Loại bỏ cấu trúc “struct” và “union”
3.1.2.2 Hướng đối tượng
Java là ngôn ngữ lập trình thuần hướng đối tượng, mọi chương trình viết trên Java đều phải được xây dựng trên các đối tượng Nếu trong C/C++ ta có thể tạo ra các hàm (chương trình con không gắn với đối tượng nào) thì trong Java ta chỉ có thể tạo ra các phương thức (chương trình con gắn liền với một lớp cụ thể) Trong Java không cho phép các đối tượng có tính năng đa kế thừa mà được thay thế bằng các giao diện (interface)
3.1.2.3 Độc lập phần cứng và hệ điều hành
Đối với các ngôn ngữ lập trình truyền thống như C/C++, phương pháp biên dịch được thực hiện như sau :
Hình 1.1: Các biên dịch chương trình hệ thống
Trang 6Với mỗi nền phần cứng khác nhau, có một trình biên dịch khác nhau để biên dịch mã nguồn chương trình cho phù hợp với nền phần cứng ấy Do vậy, khi chạy trên một nền phần cứng khác bắt buộc phải biên dịch lại mã nguồn
Đối với các chương trình viết bằng Java, trình biên dịch Javac sẽ biên dịch
mã nguồn thành dạng bytecode Sau đó, khi chạy chương trình trên các nền phần cứng khác nhau, máy ảo Java dùng trình thông dịch Java để chuyển mã bytecode thành dạng chạy được trên các nền phần cứng tương ứng Do vậy, khi thay đổi nền phần cứng, không phải biên dịch lại mã nguồn Java
Hình 1.2: Biên dịch hệ thống java
3.1.2.4 Mạnh mẽ
Java là ngôn ngữ yêu cầu chặt chẽ về kiểu dữ liệu
Kiểu dữ liệu phải khai báo tường minh
Java không sử dụng con trỏ và các phép toán con trỏ
Java kiểm tra tất cả các truy nhập đến mảng, chuỗi khi thực thi để đảm bảo rằng các truy nhập đó không ra ngoài giới hạn kích thước
Trong các môi trường lập trình truyền thống, lập trình viên phải tự mình cấp phát bộ nhớ, trước khi chương trình kết thúc thì phải tự giải phóng
bộ nhớ đã cấp Vấn đề có thể nảy sinh khi lập trình viên quên giải phóng bộ nhớ đã xin cấp trước đó Trong chương trình Java, lập trình viên không phải bận tâm đến việc cấp phát bộ nhớ Quá trình cấp phát, giải phóng được thực hiện tự động, nhờ dịch vụ thu nhặt những đối tượng không còn sử dụng nữa (garbage collection)
Trang 7 Cơ chế bẫy lỗi của Java giúp đơn giản hóa qúa trình xử lý lỗi và hồi phục sau lỗi
3.1.2.5 Bảo mật
Java cung cấp một môi trường quản lý thực thi chương trình với nhiều mức
để kiểm soát tính an toàn:
Ở mức thứ nhất, dữ liệu và các phương thức được đóng gói bên trong lớp Chúng chỉ được truy xuất thông qua các giao diện mà lớp cung cấp
Ở mức thứ hai, trình biên dịch kiểm soát để đảm bảo mã là an toàn, và tuân theo các nguyên tắc của Java
Mức thứ ba được đảm bảo bởi trình thông dịch; chúng kiểm soát xem bytecode có đảm bảo các quy tắc an toàn trước khi thực thi không
Mức thứ tư kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi phạm giới hạn truy xuất trước khi nạp vào hệ thống
3.1.2.6 Phân tán
Java được thiết kế để hỗ trợ các ứng dụng chạy trên mạng bằng các lớp mạng (java.net) Hơn nữa, Java hỗ trợ nhiều nền chạy khác nhau nên chúng được sử dụng rộng rãi như là công cụ phát triển trên Internet - nơi sử dụng nhiều nền khác nhau
3.1.2.7 Đa luồng
Chương trình Java cung cấp giải pháp đa luồng (Multithreading) để thực thi các công việc đồng thời Chúng cũng cung cấp giải pháp đồng bộ giữa các luồng Đặc tính hỗ trợ đa luồng này cho phép xây dựng các ứng dụng trên mạng chạy hiệu quả
3.1.2.8 Linh động
Java được thiết kế như một ngôn ngữ động để đáp ứng cho những môi trường
mở Các chương trình Java chứa rất nhiều thông tin thực thi nhằm kiểm soát và truy nhập đối tượng lúc chạỵ Điều này cho phép khả năng liên kết mã động
3.2 Phân tích thiết kế hệ thống
3.2.1 Phân tích hệ thống
Quy trình thực hiện trò chơi và các thao tác
Khởi động trò chơi
Hướng đi thứ nhất: Người chơi thực hiện trò chơi, chương trình
cộng điểm, đến giới hạn điểm, chương trình tự động nâng mức độ
Trang 8của trò chơi lên Đến mức độ cao nhất, hệ thống thông báo kết thúc và dừng trò chơi
Hướng đi thứ hai: Người chơi thực hiện trò chơi, trong quá trình
chơi, người dùng muốn khởi tạo lại mới trò chơi
Hướng đi thứ ba: Người chơi thực hiện trò chơi, trong quá trình
chơi, người chơi muốn tạm dừng hoặc tiếp tục trò chơi
Hình 2: Luồng xử lý các rẽ nhánh chức năng
Trang 93.2.2 Thiết kế hệ thống
Hình 3: Các lớp thành viên
Trang 10Hình 4: Lớp Main chính
Trang 11Hình 5: Lớp Game
Hình 6: Lớp Game thread
Trang 12Hình 7: Lớp Game panel
Trang 13Hình 8: Lớp Configuration
Trang 14Hình 9: Lớp Figure
Trang 15Hình 10: Lớp SquareBoad
Hình 11: Lớp SquareBoad Component
Trang 16Hình 12: Mô tả mỗi quan hệ giữa các lớp
Lớp cha
Lớp con
Múi tên chỉ lớp con kế thừa lớp cha Quan hệ kết hợp có biến thể hiện Quan hệ kết hợp không có biến thể hiện
3.3 Kết quả
Trang 17 Bắt đầu chơi
Để bắt đầu trò chơi xếp gạch, người chơi click chuột vào nút “Bắt đầu”.
Tạm dừng trò chơi:
Trong quá trình chơi xếp gạch, khi muốn tạm dừng trò chơi lại,
người chơi nhấn nút “Tạm dừng” hoặc nhấn phím “P”.
Để tiếp tục quá trò chơi, người chơi nhấn nút “Tiếp tục” hoặc nhấn phím “P”.
Hiển thị gạch:
o Chức năng này giúp người chơi biết trước được lát gạch nào sẽ xuất hiện trong thao tác kế tiếp, giúp người chơi định hướng dễ dàng hơn
o Để tắt hoặc mở chức năng này, người chơi nhấn phím “N”.
Dịch chuyển và đảo gạch:
o Chức năng này cho phép người chơi dịch chuyển và đảo gạch theo chiều, hướng và dạng thù hình mà mình mong muốn
Dịch sang trái: Nhấn phím
Dịch sang phải: Nhấn phím
Dịch nhanh xuống dưới: Nhấn phím
Đảo gạch: Nhấn phím
Tính điểm:
o Chức năng này tính điểm cho người chơi, khi người chơi xếp một hàng đầy trên khung, hàng gạch này sẽ tự biến mất và người dùng
sẽ được cộng thêm 100 điểm
Mức độ và hoàn thành:
o Mức độ: Là chức năng làm tăng độ khó của game, khi người chơi đạt được 100 điểm thì mức độ sẽ được tăng lên 1 bậc, quá trình được tiếp tục cho đến khi người chơi về đích
o Hoàn thành: Khi người chơi đạt đến mức độ 9 thì chương trình sẽ báo bạn đã hoàn thành màn chơi và trò chơi lại bắt đầu lại từ đầu
Kết thúc:
Trang 18o Khi các viên gạch được chồng lên nhau, nếu như nó chạm tới đỉnh của khung chính thì chữ Kết thúc trò chơi xuất hiện Như vậy người chơi sẽ kết thúc trò chơi, và trò chơi sẽ khởi tạo lại
Kết luận
4.1 Đạt được
Hiểu và làm việc được với môi trường phát triển, ngôn ngữ java
Cơ hội tìm hiểu thực tế bài toán
Xây dựng được chương trình cụ thể
Hình 13: Bắt đầu trò chơi
Trang 19Hình 14: Quá trình trò chơi
Hình 15: Kết thúc trò chơi
Trang 204.2 Chưa đạt được
Chưa thực hiện được chức năng Lưu trò chơi
Trên một máy tính duy nhất, tại một thời điểm chưa thực hiện được chức năng chơi hai người, một người chơi bằng bàn phím, một người chơi bằng chuột
Chưa có chức năng đổi được giao diện cho các viên gạch theo ý của người chơi
Chưa có chức năng cho người chơi tự điều khiển mức độ của trò chơi
Tài liệu tham khảo
[1] java.sun.com
[2] Herbert Schildt Java 2 A Beginner’s Guide Secon
Edition McGraw-Hill - 2003
[3] Dr Harvey M Deitel - Paul J Deitel Java How
Program, 4th Ed (Deitel) Prentice Hall - 2002
[4] Simon Roberts – Philip Heller – Michael Ernest Comple
Java 2 Certification – study guide BPB Publications – 2000
[5] Cay S Horstmann – Gary Cornell Core Java Volum 1
Fundamentals The Sun Microsystems press 1997
[6] Cay S Horstmann – Gary Cornell Core Java Volum 2
Advanced Features The Sun Microsystems press 1997
[7] codeproject.com