Tải bản đầy đủ (.doc) (21 trang)

Xây dựng trò chơi băng chuyền

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 (1.09 MB, 21 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────

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
Đỗ Hoàng Giang
Vũ Quốc Hoàn
Lớp
: Truyền thông mạng – K52
Giáo viên hướng dẫn : ThS. Nguyễn Thị Thu Trang

Hà Nội, tháng 4 năm 2010


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

MỤ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

Lớp <Tên lớp> – K52 - <Tên đề tài>

2


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

MỤC LỤC ẢNH
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 4.Đặc tả use case
Hình 5.Biểu đồ lớp
Hình 6.Class Box
Hình 7.Class Dachser
Hình 8. Màn hình khởi động
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

Lớp <Tên lớp> – K52 - <Tên đề tài>

3


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

LỜ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

Lớp <Tên lớp> – K52 - <Tên đề tài>

4


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

CHƯƠ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ùng
mà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ận có 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

Lớp <Tên lớp> – K52 - <Tên đề tài>

5


Bài tập lớn


Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

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
Play game
View highscore
Exit game
Play again
Next Level
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

Lớp <Tên lớp> – K52 - <Tên đề tài>

6


Bài tập lớn

-

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang


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 .

Lớp <Tên lớp> – K52 - <Tên đề tài>

7


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

- Clock kích hoạt :
- Kết quả ( thua ) khi Time = 0 ( Time của hệ thống phụ thuộc vào clock );


2.3. Đặc tả use case

-

Hình 4.Đặc tả use case
Đối tượng image sử dụng để thay đổi image button và từ đó gián tiếp move box
.
Đối tượng button khi ấn vào các nút trên có thể tăng tốc độ , giảm tốc , chạy
game , dừng lại , tiếp tục …

Lớp <Tên lớp> – K52 - <Tên đề tài>

8


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

Chươ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>

Lớp <Tên lớp> – K52 - <Tên đề tài>

9


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

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){
Tăng điểm;
a=true;
}
else {
giảm điểm;
a= false;
}
return a;
b/ random() : int
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();
}
Lớp <Tên lớp> – K52 - <Tên đề tài>

10


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang
else { set lại tọa độ ban đầu cho hộp
và set lại đưởng dẫn ảnh cho box }
d/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
}
+ Tại trạm thì :
if (checkTD) {
tạo ảnh box mới
}

Hình 7.Class Dachser
Dachser :
+ 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
+ Các phương thức :
a/ actionPerormed (ActionEvent):
Bắt sự kiện cho từng button :
b/ mousePress(MouseEvent)
if ( tọa độ nhấn chuột nằm trong khu vực button){
đổi ảnh
}
c/random():int
Cho ra số tương ứng với loại box
d/init()
Khởi tạo tất cả các nút và ảnh có trong bài .
Lớp <Tên lớp> – K52 - <Tên đề tài>

11



Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

e/update(Graphics)
Background sẽ hiển thị tương ứng với biến numberWindow
f/run()
Kiểm tra và thay đổi numberWindow bằng đồng hồ và bằng
biến numberOfThreadOff.

Lớp <Tên lớp> – K52 - <Tên đề tài>

12


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

Chươ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

Lớp <Tên lớp> – K52 - <Tên đề tài>

13


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

XÂ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

Lớp <Tên lớp> – K52 - <Tên đề tài>

14


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

Hình 9 : Màn hình hướng dẫn sau khi ấn Help


Hình 10 : Giao diện khi chơi

Lớp <Tên lớp> – K52 - <Tên đề tài>

15


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

Hình 11. Giao diện sau khi đổi nút ở hình 10

Hình 12 . Giao diện tiếp tục

Lớp <Tên lớp> – K52 - <Tên đề tài>

16


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

Hình 13.Khi hết giờ hiện lên giao diện Game over

Lớp <Tên lớp> – K52 - <Tên đề tài>

17



Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

Hình 14. Giao diện khi chiến thắng

Lớp <Tên lớp> – K52 - <Tên đề tài>

18


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂ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ác
nhượ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ôn
ngữ Java và UML cũng mới được học từ đầu kì nên bọn em vẫn chưa thể hoàn
thà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ục
phá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 trong
game
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 ý

Lớp <Tên lớp> – K52 - <Tên đề tài>

19


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

TÀI LIỆU THAM KHẢO
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]


Phân tích và thiết kế hệ thống thông tin - Nguyễn Văn Ba - 2003.
Slide của cô Trang
Lập trình hướng đối tượng với Java - Đoàn Văn Ban
Java - Tập 1 – Phương Lan ( Nhà xuất bản lao động xã hội )
Java Design Objects , UML,and Process - Kick KnoernSchild
Object_Oriented_Design_in_Java - Stephen Gilbert and Bill McCarty
Teach Yourself Java 2 In 21 Days - Sams Publishing
/> />
Lớp <Tên lớp> – K52 - <Tên đề tài>

20


Bài tập lớn

Giáo viên hướng dẫn: ThS. Nguyễn Thị Thu Trang

PHỤ LỤC

Lớp <Tên lớp> – K52 - <Tên đề tài>

21



×