Xây dựng trò chơi băng chuyền
Trang 1──────── * ───────
BÀI TẬP LỚN
MÔN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Đề 01A : Xây dựng trò chơi băng chuyền
Sinh viên thực hiện : Nguyễn Trung Giang
Phan Năng Duy
Trang 2MỤC LỤC
Mục lục 2 Mục lục ảnh 3 Lời nói đầu 4
1.1 Mô tả yêu cầu bài toán
KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN
1.2 Biểu đồ use case
1.2.1 Biểu đồ use case tổng quan
1.2.2 Biểu đồ use case phân rã mức 2
1.3 Đặc tả use case
PHÂN TÍCH THIẾT KẾ BÀI TOÁN
1.4 Biểu đồ lớp
1.5 Thiết kế chi tiết lớp
Chương 3 : CÔNG NGHỆ VÀ THUẬT TOÁN SỬ DỤNG
XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA
1.6 Kết quả chương trình minh họa
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
TÀI LIỆU THAM KHẢO
Trang 3
Hình 1 Biểu đồ use case tổng quan
Hình 2 Biểu đồ use case phân rã của play game
Hình 3.Biểu đồ use case phân rã của Equal
Hình 9 : Màn hình hướng dẫn sau khi ấn Help
Hình 10 : Giao diện khi chơi
Hình 11 Giao diện sau khi đổi nút ở hình 9
Hình 12 Giao diện tiếp tục
Hình 13.Khi hết giờ hiện lên giao diện Game over
Trang 4LỜI NÓI ĐẦU
Qua mấy thập kỉ gần đây , rất nhiều các ngôn ngữ lập trình ra đời và liên tục thay thế nhau trở thành ngôn ngữ phổ biến Từ lập trình hợp ngữ Assembly đến ngôn ngữ lập trình hướng cấu trúc thủ tục ( Pascal , C, ) Nhưng những ngôn ngữ này đều có một số hạn chế nhất định Nhất là khi làm một dự án lớn thì ta không thể làm đi làm lại một việc hoặc một người không thể làm được mà phải modul hóa
nó Ngôn ngữ lập trình hướng đối tượng ( OOP ) đã ra đời và giải quyết vấn đề đó
OOP ra đời và do phát triển nhanh mạnh trong lĩnh vực lập trình Trong quá trình học tập và nghiên cứu dưới sự hướng dẫn giảng dạy của cô Trang bọn em đã có được một nền tảng tương đối để có thể phát triển các ứng dụng khá đơn giản bằng Java Game băng chuyền
là sản phẩm đầu tiên của nhóm em nên có thể vẫn còn nhiều thiếu xót Bọn em rất mong nhận được những nhận xét của cô để cho chương trình ngày càng hoàn thiện hơn
Hà Nội 4 tháng 5 năm 2010
Nhóm Sinh viên
1 Nguyễn Trung Giang
2 Phan Năng Duy
3 Đỗ Hoàng Giang 4.Vũ Quốc Hoàn
Trang 5CHƯƠNG 2 KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN
2.1 Mô tả yêu cầu bài toán
<Mô tả bằng lời về bài toán được giao>
Trò chơi băng chuyền mô phỏng hệ thống băng chuyền sử dụng trong các nhà máy công nghiệp, sân bay, hay các công ty chuyển phát Trò chơi gồm nhiều màn, bị giới hạn về mặt thời gian Mỗi một màn là một sơ đồ băng chuyền với mức độ phức tạp tăng dần
Mỗi sơ đồ này gồm có:
- Một điểm giao hàng duy nhất (ví dụ cửa một nhà máy – hay từ một ô tô tải), hàng từ đây sẽ được băng chuyền vận chuyển tới các điểm cuối nhận hàng để từ đó được các thiết bị vận chuyển đưa đi Có nhiều điểm cuối nhận hàng tương ứng chờ sẵn tại đó là các phương tiện vận tải hàng khác nhau: máy bay, ôtô, tàu thủy
- Cứ một khoảng thời gian thì một kiện hàng được phát ra – có một màu nhất định và
nó phải được người chơi điều khiển băng chuyền để đến được đúng điểm nhận có cùngmàu Sau khi nhận xong, kiện hàng coi như mất đi trên băng chuyền và đèn hiệu màu tại các điểm nhậncó thể thay đổi để chờ các kiện hàng khác
- Băng chuyền như một đồ thị có hướng gồm có nhiều nút Tại mỗi nút người dùng cóthể bấm chuột làm thay đổi hướng di chuyển sang trái, phải, lên, xuống để chuyển hướng hàng sang dây chuyền kế tiếp Khi hàng được phát sinh ra càng nhiều thì người chơi sẽ phải phản ứng nhanh để chuyển tất cả các kiện hàng đến đúng nơi cần đến Mỗi lần hàng được chuyển đến đúng nơi nhận được một số điểm, nếu chuyển sai thì bịtrừ điểm Sau thời gian giới hạn cho mỗi màn chơi nếu hàng được chuyển hết (không còn di chuyển trên băng chuyền) thì coi như người chơi qua màn
- Người dùng có thể lựa chọn chế độ hỗ trợ, chương trình sẽ có gợi ý – hướng dẫn thao tác cần thực hiện tại các nút chuyển băng chuyền (khi có thể) để kiện hàng tới đích
- Đánh giá cao sản phẩm có giao diện sinh động bắt mắt
2.2 Biểu đồ use case
2.2.1 Biểu đồ use case tổng quan
Trang 6
Hình 1 Biểu đồ use case tổng quan
- Người dùng có thể nhấn kích hoạt các chức năng
- Random System thực hiện việc cho ra box bất kì
2.2.2 Biểu đồ use case phân rã mức 2
Biểu đồ use case cho hoạt động Play game
Trang 7
Hình 2 Biểu đồ use case phân rã của play game
- Người dùng có thể nhấn kích hoạt các chức năng
- Run ( để bắt đầu chạy chương trình )
- Stop , Continue Thread đang chạy dở
- Next Level : đến level tiếp sau khi đã qua bài
- Change speed : thay đổi tốc độ để có thể chơi dễ dàng hơn
- Change button : đổi ảnh button
- Move box : di chuyển box
- Trong khi Run ta có thể gọi đến :
- Compare System : hệ thống so sánh khi mà so sánh các thuộc tính
- Random System : hệ thống random số để ra 1 box bất kì
Biểu đồ use case cho hoạt động Equal :
Hình 3.Biểu đồ use case phân rã của Equal
- Compare System kích hoạt :
- Kết quả (qua level ) khi đã hoàn thành xong mục tiêu
Trang 9Chương II : PHÂN TÍCH THIẾT KẾ BÀI TOÁN
2.4 Biểu đồ lớp
Hình 5.Biểu đồ lớp
Trong game chúng em sử dụng các lớp chính :
- Tram : Lớp này lưu trữ tọa độ và đường dẫn đến ảnh của các trạm dừng
- NutChuyen : Lớp này lưu trữ tọa độ các nút trong bàn chơi
- Box : Lớp này sử dụng để điều khiển box Nó được kế thừa từ lớp Thread
và có chức năng
+ Box là gồm các chức năng : Chuyển động theo băng chuyền
Tạo box mới khi box đã đến trạm
- Dachser : Lớp này được kế thừa Applet và làm các công việc chính như điều khiển thời gian , vẽ ảnh , …
+ Các lớp Tram, NutChuyen và Box , Button đều có quan hệ Composition với lớp này
+ Kế thừa giao diện Action Listener , Runable và Mouse Listerner
2.5 Thiết kế chi tiết lớp
<Mô tả chi tiết về 2-4 lớp quan trọng>
Trang 10
Hình 6.Class Box
Box là gồm các chức năng : Chuyển động theo băng chuyền
Tạo box mới khi box đã đến trạm
+ Các thuộc tính : dem1,dem2,dem3 dùng để đếm số box về đúng trạm
s1[] lưu đường dẫn cho ảnh box
count ( = 1,2,3,4 ) : dùng để định hướng đường đi cho box
< khi count = - 1 thì box đứng yên >
currState : lưu lại trạng thái của của count khi ta stop Thread
Dachser : sử dụng để kiểm tra các sự kiện
+ Các phương thức :
a/ checkTD() : int
if ( Tọa độ Box == Tọa độ Trạm ) {
if ( đường dẫn ảnh Box == đường dẫn ảnh trạm){
Cho ra số 1,2,3 tương ứng với 3 loại hộp
c/ reset() : Được gọi khi box về trạm
if (dem1=0&dem2=0&dem3=0) {
numberOfThreadOff++
Thread.stop();
}
Trang 11d/run()
+ Tại những điểm ngoặt thì :
if (tọa độ box == tọa độ ngoặt ) {
biến count thay đổi
}
+ Tại nút chuyển thì
if (tọa độ box == tọa độ nút chuyển ) {
biến count đổi theo image của nút chuyển
+ Các thuộc tính : speed : lưu trữ tốc độ chuyển động của box
numberWindow : dùng để lưu trữ số thứ tự background
numberOfThreadOff : dùng để lưu trữ số tiến trình đã kết thúc threadState : lưu trữ trạng thái Thread
Trang 13Chương 3 : CÔNG NGHỆ VÀ THUẬT TOÁN SỬ DỤNG
Game nhóm em làm được sử dụng những thuật toán dưới đây :
- Làm cho hình không bị giật
Ban đầu nhóm gặp phải trường hợp khi chạy Applet thì chương trình bị giật Nhưng sau đó nhóm đã tìm được ra cách để giải quyết vấn đề đó Đó là khởi tạo một đối tượng Graphics và vẽ tất cả lên nó Sau đó mới cho Graphics đó lên Applet
- Sử dụng kĩ thuật đa luồng :
Nhóm đã tạo được 3 luồng cùng lúc bằng cách sử dụng 3 Thread chạy cùng
- Thuật toán random :
Cho ra 1 box bất kì từ điểm xuất
Trang 14XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA
2.6 Kết quả chương trình minh họa
Đây là giao diện cơ bản mà bọn em đã thực hiện : Khi khởi động applet thì ta có màn hình Start và
Hình 8 Màn hình khởi động
Trang 15Hình 9 : Màn hình hướng dẫn sau khi ấn Help
Hình 10 : Giao diện khi chơi
Trang 16Hình 11 Giao diện sau khi đổi nút ở hình 10
Hình 12 Giao diện tiếp tục
Trang 17Hình 13.Khi hết giờ hiện lên giao diện Game over
Trang 18Hình 14 Giao diện khi chiến thắng
Trang 19KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
<Phần này nêu kết luận đã làm được gì trong lần quá trình thực hiện bài tập lớn
Ưu, nhược điểm Sau đó đưa ra hướng phát triển cho đề tài, chủ yếu để khắc phục cácnhược điểm đã nêu>
- Game mà nhóm em làm theo em là đã tương đối hoàn thiện và thực hiện được 1
số chức năng chính với yêu cầu Tuy nhiên vì quỹ thời gian hạn chế và ngônngữ Java và UML cũng mới được học từ đầu kì nên bọn em vẫn chưa thể hoànthành hết theo ý muốn của mình Game còn 1 số hạn chế :
- Applet vẫn nặng và sẽ chạy chậm trên 1 số máy có cấu hình thấp
- Phần Highscore và Save game bọn em vẫn chưa làm được nhưng sẽ tiếp tụcphát triển sau
Hướng phát triển : Lưu highscore trong 1 file txt
Game save cũng vậy trong đó lưu giá trị các biến tronggame
- Lớp Box chúng em mới tạo được 3 box chuyển động cùng 1 lúc chứ chưa làmđược theo yêu cầu là sau 1 khoảng thời gian nhất định
- Việc đổi màu trạm cũng chưa làm
- Chương trình gợi ý
Trang 20
TÀI LIỆU THAM KHẢO
[1] Phân tích và thiết kế hệ thống thông tin - Nguyễn Văn Ba - 2003
[2] Slide của cô Trang
[3] Lập trình hướng đối tượng với Java - Đoàn Văn Ban
[4] Java - Tập 1 – Phương Lan ( Nhà xuất bản lao động xã hội )
[5] Java Design Objects , UML,and Process - Kick KnoernSchild
[6] Object_Oriented_Design_in_Java - Stephen Gilbert and Bill McCarty
[7] Teach Yourself Java 2 In 21 Days - Sams Publishing
[8] http://www.javaworld.com/
[9] http://www.vn4000.com/content/category/5/16/32/