Chương trình có các yêu cầu cơ bản như: Các chức năng của trò chơi: tạo mới một màn chơi, chơi lại, tạm dừng, chơi tiếp, tính điểm, thông báo kết quả, thoát khỏi trò chơi, hướng dẫn
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN MÔN HỌC : LẬP TRÌNH JAVA
ĐỀ TÀI: XÂY DỰNG GAME TRÚC XANH
Giáo viên hướng dẫn:
Vũ Đức Minh
Nhóm sinh viên thực hiện:
1 Trần Văn Đại
2 Dư Văn Nguyện
3 Nguyễn Mạnh Thắng
Trang 2LỜI MỞ ĐẦU
Java là ngôn ngữ lập trình hướng đối tượng (tựa C++) do Sun Microsystem đưa
ra vào giữa thập niên 90.Chương trình viết bằng ngôn ngữ lập trình java có thể chạy trên bất kỳ hệ thống nào có cài máy ảo java (Java Virtual Machine) Java là ngôn ngữ lập trình hướng đối tượng Sức mạnh của phương pháp lập trình hướng đối tượng thể hiện ở chỗ khả năng mô hình hoá hệ thống dựa trên các đối tượng thực tế, khả năng đóng gói và bảo vệ an toàn dữ liệu, khả năng sử dụng lại mã nguồn để tiết kiệm chi phí và tài nguyên; đặc biệt là khả năng chia sẽ mã nguồn trong cộng đồng lập trình viên chuyên nghiệp Những điểm mạnh này hứa hẹn sẽ thúc đẩy phát triển một môi trường lập trình tiên tiến cùng với nền công nghiệp lắp ráp phần mềm với các thư viện thành phần có sẵn
Một đề tài Java phải làm nổi bật được tính chất của môn học, có tính thực tiễn và mang lại thiết thực và có thể triển khai trên thực tế Chính vì những lý do đó chúng em
đã quyết định lựa chọn đề tài Lập trình trò chơi trúc xanh để làm đề tài kết thúc môn
học này
Chương trình có các yêu cầu cơ bản như:
Các chức năng của trò chơi: tạo mới một màn chơi, chơi lại, tạm dừng, chơi tiếp, tính điểm, thông báo kết quả, thoát khỏi trò chơi, hướng dẫn chơi, thay đổi giao diện
Yêu cầu về đồ họa: trò chơi phải được thiết kế sao cho dễ sử dụng, thiết kế hợp
lý dễ thao tác
Xử lý các sự kiện của người chơi trong trò chơi: lật ô, xóa ô, sự kiện nhấn nút Trong quá trình giảng dạy, nhờ có sự hướng dẫn tận tình của thầy giáo Vũ Đức Minh cùng với sự giúp đỡ củacác thầy cô trong khoa, chúng em đã hoàn thành tốt
được bài tập với đề tài Lập trình game trúc xanh viết trên ngôn ngữ Java Từ đó
chúng em đã thấy được các trình ứng dụng được tạo ra như thế nào, đồng thời giúp chúng em nắm vững được các phương pháp thuật toán, cách lập trình hướng đối tượng trên Java
Trong quá trình làm đề tài dù đã cố gắng tìm hiểu nhưng vẫn không tránh khỏi sai sót và chưa được hoàn thiện hết các chức năng Chính vì vậy chúng em mong được
sự đóng góp ý kiến của các thầy cô
Chúng em xin chân thành cảm ơn!
Trang 3M C L C ỤC LỤC ỤC LỤC
CHƯƠNG 1 TÓM TẮT CHƯƠNG TRÌNH 6
1.1 Mục tiêu để tài 6
1.2 Chức năng, công việc đã làm được 6
1.3 Khái quát nội dung quyển báo cáo 6
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 7
2.1 Sơ đồ thuật toán 7
2.2 Diễn giải chi tiết 8
CHƯƠNG 3 PHÂN TÍCH THIẾT KẾ 9
3.1 Phân tích chương trình 9
3.2 Các khó khăn và hướng giải quyết 9
3.2.1 Các khó khăn và hướng giải quyết các sự kiện khi chơi 9
3.2.2 Chức năng 1: Xem giao diện chuẩn, giao diện tùy chỉnh 10
3.2.3 Chức năng 2: Thoát khỏi trò chơi 11
3.2.4 Chức năng 3: Tạo màn chơi mới 11
3.2.5 Chức năng 4: Tam dừng, Chơi tiếp 14
3.2.6 Chức năng 5: Hướng dẫn 15
3.3 Chi phí thời gian, độ ổn định 16
3.3.1 Chi phí thời gian 16
3.3.2 Độ ổn định 16
CHƯƠNG 4 KẾT QUẢ 17
4.1 Giao diện chính của chương trình 17
4.2 Hướng phát triển 19
Trang 4DANH MỤC HÌNH ẢNH
Hình 1.1 Sơ đồ thuật toán 7
Hình 4.1 Giao diện chương trình 17
Hình 4.2 Giao diện khi mới bắt đầu chơi và các menu của chương trình 17
Hình 4.3 Giao diện hướng dẫn chơi 18
Hình 4.4 Giao diện kết thúc lượt chơi 18
Hình 4.5 Thông tin về chương trình 18
Trang 5CHƯƠNG 1 TÓM TẮT CHƯƠNG TRÌNH 1.1 Mục tiêu để tài
Khi rảnh rỗi hoặc sau mỗi giờ làm việc căng thẳng thì mỗi người trong chúng ta đều muốn tìm cho mình một trò chơi hoặc một hoạt động để giảm căng thẳng và lấy lại tinh thần Có thể đó là các hoạt động thể thao, hoặc chơi các trò chơi giải trí tùy thuộc vào quỹ thời gian của từng người, và với những ai có ít quỹ thời gian nhưng muốn có một trò chơi mang tính giải trí cao thì game Trúc xanh là một trong nhưng game đáp ứng được nhu cầu đó
Mục tiêu chính của đề tài là giúp người chơi tăng cường trí nhớ và giác quan và thấy thoải mái tinh thần sau khi đã chinh phục được hết các ô chứa các hình
Đề tài có các mức chơi bình thường, khó và dễ phù hợp với từng người chơi và cũng không kém tính trí tuệ khi người chơi phải tính toán sao cho tổng số lần mở các hình là ít nhất
1.2 Chức năng, công việc đã làm được
1 Tạo giao diện thân thiện, dễ sử dụng
2 Có thể chơi 1 người hoặc 2 người
3 Random ảnh vào các button
4 Khi đang chơi có thể tạm dừng chơi
5 Tính điểm và lưu điểm của 10 người chơi có điểm
số cao nhất vào trong file
6 Chọn các mức độ dễ, trung bình, khó
1.3 Phạm vi nghiên cứu, phạm vi ứng dụng
- Phạm vi nghiên cứu: tự nghiên cứu
- Phạm vi ứng dụng: ứng dụng trên mỗi máy cá nhân
Trang 6
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Sơ đồ thuật toán
Hình 1.1 Sơ đồ thuật
toán
Trang 72.2 Diễn giải chi tiết
Các biến sử dụng:
Biến click: kiểm tra lần click là 1 hay 2 trong một lượt mở.
Biến Count: đếm số ô còn lại chưa mở Trò chơi kết thúc khi Count =0.
a, b: địa chỉ hàng cột của ô trong lượt click thứ nhất.
c, d: địa chỉ hàng cột của ô trong lượt click thứ hai.
Biến diem: lưu tổng số điểm của màn chơi.
Biến solanclick: lưu số lần click để mở hết các ô trong màn chơi.
Diễn giải sơ đồ:
Khi trò chơi bắt đầu các biến được reset như trong sơ đồ
Vấn đề là phải làm sao để xác định được khi người chơi lật mở một ô là lần thứ nhất hay thứ hai để xử lý
Nếu là lần mở đầu tiên thì tiến hành mở ô, hủy sự kiện nhấn nút vào ô được chọn Kiểm tra nếu là ấn nút đầu tiên của lượt mở từ thứ hai trở đi thì phải xác định trường hợp có hai ô được mở nhưng không đúng ở lượt mở trước do đó ta phải lật úp lại hai ô này
Nếu là lần mở thứ hai trong lượt mở thì tiến hành mở ô, sau đó so sánh với hình ảnh đã mở ở lượt click thứ nhất Nếu giống nhau thì lật hai ô, hủy sự kiện nhấn nút vào hai ô này Giảm biến đếm số ô còn lại đi 2 Đưa c= -1,d= -1 Tăng điểm thêm 10 Nếu không giống nhau giảm điểm đi 5, lấy lại sự kiện cho nút đã mở ở lượt click thứ nhất, lấy vị trí ô hiện tại để lật lại gán vào c, d Kiểm tra xem số ô còn lại có bằng 0 không, nếu bằng kết thúc màn chơi và thông báo điểm nếu không lặp lại các lượt click đến khi nào count =0
Trang 8CHƯƠNG 3 PHÂN TÍCH THIẾT KẾ 3.1 Phân tích chương trình
Yêu cầu
Chương trình phải có giao diện thân thiện, dễ sử dụng Đảm bảo đủ các chức năng cần thiết như chơi mới, chơi lại, tạm dừng, chọn mức độ khó,…
Chương trình này được xây dựng gồm một menubar chứa các chức năng của trò chơi, một panel để xem thông tin điểm của người chơi và một panel chính chứa 20
ô hình ảnh cho người chơi click
Thanh menubar nằm ở trên cùng, tiếp theo đến panel chứa điểm và ở giữa là panel chứa hình ảnh Panel ở giữa là panel chứa các button là các ảnh, số lượng các button được dựa vào mức độ khó mà người chơi lựa chọn, có 3 mức độ là: dễ, trung bình và khó
Mục tiêu
Chương trình đảm bảo các chức năng như chơi mới, thoát, hướng dẫn, giới thiệu thông tin về trò chơi, chọn mức độ khó, chơi hai người hoặc một người…
Một số khó khăn và giải quyết
- Làm sao tạo được 20 button gồm 10 cặp mà các cặp button có hình ảnh khác nhau và ngẫu nhiên
- Hướng giải quyết
Sử dụng 2 mảng, một mảng giatri gồm 20 phần tử để lưu 20 giá trị hình ảnh, 20
giá trị này được chia thành 10 cặp giá trị giống nhau Mục đích của mảng giatri là lưu trữ giá trị cho 20 button kia, tuy nhiên như vậy thì các giá trị này chưa được đưa ngẫu
nhiên vào 20 button Vì vậy, chúng ta sử dụng thêm một mảng vitri cũng gồm 20 phần
tử để tạo ra vị trí Mảng vị trí này được tạo ra nhờ sử dụng hàm random, do vậy sẽ tạo
ra được mảng vị trí có giá trị ngẫu nhiên từ 0->20 Sử dụng 2 mảng này ta sẽ đưa được
20 ảnh trong mảng giatri vào 20 button một cách ngẫu nhiên.
3.2 Thiết kế chương trình
Khái quát các chức năng
- Menu: hiển thị menu chọn mức độ khó và cách chơi 2 người hay 1 người
- Chơi:
o Chơi lại: chơi lại ván mới giống như ván đang chơi
Trang 9o Tạm dừng: enables = false tất cả các button để tạm dừng trò chơi.
o Chơi tiếp: enables = true tất cả các button để tiếp tục trò chơi
o Điểm cao: hiển thị danh sách 10 người chơi có điểm cao nhất
- Hướng dẫn:
o Giới thiệu: giới thiệu thông tin về chương trình, người thực hiện chương trình
o Cách chơi: giới thiệu cách chơi của chương trình
Chi tiết chức năng
3.2.1 Chức năng chọn chế độ chơi
Khi bắt đâu khởi động game sẽ có hai chế độ chơi một người hoặc hai người Với chế độ chơi một người cũng có các mức độ chơi dễ ( 4x5 ), trung bình (5x6) và khó ( 6x6 ) Mức độ dễ với kích thước (4x5) có ít ô và hình giúp cho người mới chơi có thể làm quen dần với cách chơi sau đó người chơi có thể chọn các mức cao hơn Người chơi xong một ván hệ thống sẽ lưu điểm và tên người chơi
Chọn chế độ chơi
Trang 103.2.2 Chức năng tạo màn chơi mới
Tạo màn chơi mới khi người chơi kết thúc trò chơi muốn chơi lại hoặc điểm thấp muốn chơi lại
Khó khăn:
Làm thế nào để tạo màn chơi mới mà không cần phải xử lý nhiều
Xác định các biến nào sẽ được reset lại, các chức năng nào sẽ ảnh hưởng
Tạo lại ngẫu nhiên các hình ảnh để thực hiện chơi lại sao cho không giống với các hình ảnh ban đầu
Lật lại tất cả các ô về trạng thái chưa lật
Xác định các phương thức nào sẽ được dùng
Hướng giải quyết:
Để không phải xử lý nhiều tạo mới một phương thức newgame( ) chứa tất cả code xử lý tạo lại màn chơi mới
Các biến sẽ được reset lại: biến tính điểm, biến tính số lượt click, biến tính số
ô đã được đánh, các biến lưu địa chỉ của một ô khi click Các chức năng bị ảnh hưởng: Tạm dừng, Chơi tiếp,…
Để lật lại các ô về trạng thái chưa lật:
+ Lấy hình ảnh đại diện cho hình khi chưa lật
+ setIcon của tất cả các nút là hình này
Các phương thức được sử dụng:
+ addActionListener( )
+ removeActionListener( )
+ setText( )
+ setIcon( )
Chức năng chơi lại, tạm dừng, chơi tiếp
Trang 113.2.3 Chức năng tạm dừng, chơi tiếp
Tạm dừng là chức năng cho phép người chơi vô hiệu hóa màn chơi khi đang bận
để có thể tiếp tục chơi khi rảnh, giúp tránh sự ảnh hưởng không cần thiết
Khó khăn:
Xác định khi nào thì có thể tạm dừng, chơi tiếp
Xác định các phương thức được sử dụng
Hướng giải quyết:
Xây dựng menu để thực hiện tạm dừng và chơi tiếp
Khi người dùng bắt đầu chơi thì có thể tạm dừng, sau khi tạm dừng thì có thể chơi tiếp Khi tạm dừng rồi thì không thể tạm dừng tiếp với chơi lại cũng vậy
Sử dụng phương thức setEnable( ) để thực hiện ẩn hiện menu tạm dừng và chơi tiếp
Khi tạm dừng tất cả các nút chơi sẽ ẩn, khi chơi tiếp tất cả các nut chơi sẽ hiện
3.2.4 Chức năng hướng dẫn
Chức năng hướng dẫn và giới thiệu Hướng dẫn là phần thể hiện cách chơi, thông tin về chương trình
Khó khăn:
Thể hiện phần hướng dẫn như thế nào cho trực quan
Sử dụng những phương thức nào
Hướng giải quyết:
Tạo một frame mới để thể hiện hướng dẫn
Thiết kế một ảnh có thông tin về hướng dẫn cách chơi trên đó và gắn nó làm nền của một Jlabel sau đó thêm label này lên panel
3.2.5 Chức năng 1 người chơi
Với một người tự chơi, sau khi khởi động game, chọn mục 1 player rồi sau đó
Trang 12game rồi tiếp tục chơi tiếp Sau khi chơi xong, máy sẽ lưu điểm và tên người chơi nếu
số điểm đó thuộc top 5 người chơi có số điểm cao nhất
Số điểm đó được lưu vào fie gồm tên người chơi và số điểm dành được:
- Sử dụng FileInputStream để đọc file.
- Sử dụng FileOutputStream để ghi file.
- Tiến hành duyệt file diem.txt, nếu gặp chỗ nào mà có điểm của người chơi
hiện tại lớn hơn điểm của người chơi đã có trong file thì chèn điểm của
người chơi hiện tại vào chỗ đó Lưu ý là file diem chỉ chứa 5 người chơi
cao nhất, do vậy sử dụng 1 biến đếm để đếm đủ 5 người
3.2.6 Chức năng chơi 2 người
Đại ơi viết hộ phần này với :D
3.3 Chi phí thời gian, độ ổn định
3.3.1 Chi phí thời gian
Đề tài được xây dựng từ tháng 10 năm 2012 và kết thúc vào tháng 11 năm 2012 bởi các thành viên của nhóm Thời gian đầu xây dựng gặp chút khó khăn về kỹ thuật
và tạo dựng hình ảnh, nhưng sau đó nhóm đã khắc phục được và hoàn thành đề tài trong thời gian trước dự kiến ( nhóm dự kiến sẽ hoàn thành vào tháng 12)
Trang 133.3.2 Độ ổn định
Phần mềm được viết trên nền tảng JDK hỗ trợ cho hê điều hành nên đề tài chạy
ổn định trên các hệ điều hành thông dụng như win xp, win 7, win vista và một số hệ điều hành khác
Trang 14CHƯƠNG 4 KẾT QUẢ
4.1 Giao diện chính của chương trình
Hình 4.1 Giao diện chương trình
Hình 4.2 Giao diện khi mới bắt đầu chơi và các menu của chương trình
Trang 15Hình 4.3 Giao diện hướng dẫn chơi
Hình 4.4 Giao diện kết thúc lượt chơi
4.2 Hướng phát triển
Với cách thức chơi đơn giản, các khối dữ liệu chức năng đầy đủ, giao diện thân thiện và dễ hiểu với mọi người Trò chơi đã đáp ứng được các yêu cầu được hướng tới
đó là: Tính ngẫu nhiên, hoạt động chính xác, với hướng dẫn dễ hiểu tạo sự dễ dàng khi chơi cho người chơi Đồng thời cũng các con số được xắp xếp một cách ngẫu nhiên giúp người chơi rèn luyện được trí nhớ của mình một cách tốt hơn Thông qua việc lập trình trò chơi chúng em đã hiểu thêm về cách lập trình theo hướng đối tượng, cách tính toán các cho việc thiết kế và hiểu rõ hơn về thuật toán xử lý
L p trình ập trình trò ch i trúc xanh ơi trúc xanh , v i u đi m đ n gi n và d ch i giúp choới ưu điểm đơn giản và dễ chơi giúp cho ưu điểm đơn giản và dễ chơi giúp cho ểm đơn giản và dễ chơi giúp cho ơn giản và dễ chơi giúp cho ản và dễ chơi giúp cho ễ chơi giúp cho ơn giản và dễ chơi giúp cho
Trang 16tr lên đ n đi u và hình nh đ h a không đơn giản và dễ chơi giúp cho ện trí nhớ, nhưng cũng chính sự đơn giản đó đã làm trò chơi ản và dễ chơi giúp cho ồ họa không được bắt mắt có thể gây nhàm chán ọa không được bắt mắt có thể gây nhàm chán ưu điểm đơn giản và dễ chơi giúp choợc bắt mắt có thể gây nhàm chánc b t m t có th gây nhàm chánắt mắt có thể gây nhàm chán ắt mắt có thể gây nhàm chán ểm đơn giản và dễ chơi giúp cho cho ngưu điểm đơn giản và dễ chơi giúp cho i ch i khi ch i nhi u l n Nên hơn giản và dễ chơi giúp cho ơn giản và dễ chơi giúp cho ều lần Nên hướng phát triển của chúng em sẽ là ần Nên hướng phát triển của chúng em sẽ là ưu điểm đơn giản và dễ chơi giúp choới ưu điểm đơn giản và dễ chơi giúp chong phát tri n c a chúng em sẽ làểm đơn giản và dễ chơi giúp cho ủa chúng em sẽ là nâng cao kh năng đ h a c a ph n m m trò ch i này, v i nhi u hi u ng vàản và dễ chơi giúp cho ồ họa không được bắt mắt có thể gây nhàm chán ọa không được bắt mắt có thể gây nhàm chán ủa chúng em sẽ là ần Nên hướng phát triển của chúng em sẽ là ều lần Nên hướng phát triển của chúng em sẽ là ơn giản và dễ chơi giúp cho ới ưu điểm đơn giản và dễ chơi giúp cho ều lần Nên hướng phát triển của chúng em sẽ là ện trí nhớ, nhưng cũng chính sự đơn giản đó đã làm trò chơi ứng và màu s c b t m t h n, đ ng th i sẽ xây d ng thêm m t s ch c năng nh : l uắt mắt có thể gây nhàm chán ắt mắt có thể gây nhàm chán ắt mắt có thể gây nhàm chán ơn giản và dễ chơi giúp cho ồ họa không được bắt mắt có thể gây nhàm chán ự đơn giản đó đã làm trò chơi ột số chức năng như: lưu ố chức năng như: lưu ứng và ưu điểm đơn giản và dễ chơi giúp cho ưu điểm đơn giản và dễ chơi giúp cho
đi m ngểm đơn giản và dễ chơi giúp cho ưu điểm đơn giản và dễ chơi giúp cho i cao nh t, tăng đ khó theo t ng level, ch i hai ngất, tăng độ khó theo từng level, chơi hai người… Nhưng hướng ột số chức năng như: lưu ừng level, chơi hai người… Nhưng hướng ơn giản và dễ chơi giúp cho ưu điểm đơn giản và dễ chơi giúp cho i… Nh ng hưu điểm đơn giản và dễ chơi giúp cho ưu điểm đơn giản và dễ chơi giúp choới ưu điểm đơn giản và dễ chơi giúp chong
ch y u là tăng hi u ng đ h a đ ngủa chúng em sẽ là ện trí nhớ, nhưng cũng chính sự đơn giản đó đã làm trò chơi ứng và ồ họa không được bắt mắt có thể gây nhàm chán ọa không được bắt mắt có thể gây nhàm chán ểm đơn giản và dễ chơi giúp cho ưu điểm đơn giản và dễ chơi giúp cho i ch i có th th y m t cách tr c quanơn giản và dễ chơi giúp cho ểm đơn giản và dễ chơi giúp cho ất, tăng độ khó theo từng level, chơi hai người… Nhưng hướng ột số chức năng như: lưu ự đơn giản đó đã làm trò chơi
h n v i trò ch i, tránh c m giác nhàm chán khi ch i.ơn giản và dễ chơi giúp cho ới ưu điểm đơn giản và dễ chơi giúp cho ơn giản và dễ chơi giúp cho ản và dễ chơi giúp cho ơn giản và dễ chơi giúp cho
1 Trần Văn Đại Cách tính điểm và các thông báo
2 Dư Văn Nguyện Xử lý ô
3 Nguyễn Mạnh
Thắng
Giao diện