Tải bản đầy đủ (.docx) (16 trang)

LẬP TRÌNH JAVA ĐỀ TÀI: XÂY DỰNG GAME TRÚC XANH

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (998.27 KB, 16 trang )

TRƯỜ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
Hà Nội, tháng 11 năm 2012
LỜ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!
2
MC LC
3
DANH MỤC HÌNH ẢNH
4
CHƯƠ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
STT 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ó.

7 Hướng dẫn chơi.

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.

5
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
2.1 Sơ đồ thuật toán
Hình 1.1 Sơ đồ thuật
toán
6
2.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.
7
CHƯƠ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.
o 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.
8
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
3.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.
9
• 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
3.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.
10
− 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 đó
chọn các mức chơi từ dễ trung bình đến khó. Trong khi đang chơi có thể tạm dừng
game 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.
11
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).
3.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.
12
CHƯƠ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
13
Hì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 trò chơi trúc xanh, với ưu điểm đơn giản và dễ chơi giúp cho
người chơi rèn luyện trí nhớ, nhưng cũng chính sự đơn giản đó đã làm trò chơi trở
14
lên đơn điệu và hình ảnh đồ họa không được bắt mắt có thể gây nhàm chán cho
người chơi khi chơi nhiều lần. Nên hướng phát triển củ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à 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 điểm người cao
nhất, tăng độ khó theo từng level, chơi hai người… Nhưng hướng chủ yếu là tăng
hiệu ứng đồ họa để người chơi có thể thấy một cách trực quan hơn với trò chơi,
tránh cảm giác nhàm chán khi chơi.
Họ và tên Công việc
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
15

×