Xây dựng trò chơi băng chuyền
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 : 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 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 Lời nói đầu .4 1.1 Mô tả yêu cầu 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 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 : 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 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 – K52 - 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 Biểu đồ use case tổng quan Hình Biểu đồ use case phân rã play game Hình 3.Biểu đồ use case phân rã 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 Màn hình khởi động Hình : Màn hình hướng dẫn sau ấn Help Hình 10 : Giao diện chơi Hình 11 Giao diện sau đổi nút hình Hình 12 Giao diện tiếp tục Hình 13.Khi hết lên giao diện Game over Lớp – K52 - 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 thập kỉ gần , nhiều ngôn ngữ lập trình đời liên tục thay 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 ngôn ngữ có số hạn chế định Nhất làm dự án lớn ta làm làm lại việc người làm mà phải modul hóa Ngôn ngữ lập trình hướng đối tượng ( OOP ) đời giải vấn đề OOP đời phát triển nhanh mạnh lĩnh vực lập trình Trong trình học tập nghiên cứu hướng dẫn giảng dạy cô Trang bọn em có tảng tương đối để phát triển ứng dụng đơn giản Java Game băng chuyền sản phẩm nhóm em nên nhiều thiếu xót Bọn em mong nhận nhận xét cô chương trình ngày hoàn thiện Hà Nội tháng năm 2010 Nhóm Sinh viên Nguyễn Trung Giang Phan Năng Duy Đỗ Hoàng Giang 4.Vũ Quốc Hoàn Lớp – K52 - Bài tập lớn Giáo viên hướng dẫn: ThS Nguyễn Thị Thu Trang CHƯƠNG KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN 2.1 Mô tả yêu cầu toán Trò chơi băng chuyền mô hệ thống băng chuyền sử dụng nhà máy công nghiệp, sân bay, hay công ty chuyển phát Trò chơi gồm nhiều màn, bị giới hạn mặt thời gian Mỗi một sơ đồ băng chuyền với mức độ phức tạp tăng dần Mỗi sơ đồ gồm có: - Một điểm giao hàng (ví dụ cửa nhà máy – hay từ ô tô tải), hàng từ băng chuyền vận chuyển tới điểm cuối nhận hàng để từ thiết bị vận chuyển đưa Có nhiều điểm cuối nhận hàng tương ứng chờ sẵn phương tiện vận tải hàng khác nhau: máy bay, ôtô, tàu thủy - Cứ khoảng thời gian kiện hàng phát – có màu định phải người chơi điều khiển băng chuyền để đến điểm nhận có màu Sau nhận xong, kiện hàng coi băng chuyền đèn hiệu màu điểm nhận thay đổi để chờ kiện hàng khác - Băng chuyền đồ thị có hướng gồm có nhiều nút Tại nút người dùng 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 Khi hàng phát sinh nhiều người chơi phải phản ứng nhanh để chuyển tất kiện hàng đến nơi cần đến Mỗi lần hàng chuyển đến nơi nhận số điểm, chuyển sai bị trừ điểm Sau thời gian giới hạn cho chơi hàng chuyển hết (không di chuyển băng chuyền) coi người chơi qua - Người dùng lựa chọn chế độ hỗ trợ, chương trình có gợi ý – hướng dẫn thao tác cần thự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 – K52 - Bài tập lớn Giáo viên hướng dẫn: ThS Nguyễn Thị Thu Trang Hình Biểu đồ use case tổng quan - - Người dùng nhấn kích hoạt chức Play game View highscore Exit game Play again Next Level Random System thực việc cho box 2.2.2 Biểu đồ use case phân rã mức Biểu đồ use case cho hoạt động Play game Lớp – K52 - Bài tập lớn - Giáo viên hướng dẫn: ThS Nguyễn Thị Thu Trang Hình Biểu đồ use case phân rã play game Người dùng nhấn kích hoạt chức - Run ( để bắt đầu chạy chương trình ) - Stop , Continue Thread chạy dở - Next Level : đến level tiếp sau qua - Change speed : thay đổi tốc độ để chơi dễ dàng - Change button : đổi ảnh button - Move box : di chuyển box - Trong Run ta gọi đến : - Compare System : hệ thống so sánh mà so sánh thuộc tính - Random System : hệ thống random số để box Biểu đồ use case cho hoạt động Equal : Hình 3.Biểu đồ use case phân rã Equal - Compare System kích hoạt : - Kết (qua level ) hoàn thành xong mục tiêu Lớp – K52 - 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 ( thua ) Time = ( Time 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 từ gián tiếp move box Đối tượng button ấn vào nút tăng tốc độ , giảm tốc , chạy game , dừng lại , tiếp tục … Lớp – K52 - 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 lớp : - Tram : Lớp lưu trữ tọa độ đường dẫn đến ảnh trạm dừng - NutChuyen : Lớp lưu trữ tọa độ nút bàn chơi - Box : Lớp sử dụng để điều khiển box Nó kế thừa từ lớp Thread có chức + Box gồm chức : Chuyển động theo băng chuyền Tạo box box đến trạm - Dachser : Lớp kế thừa Applet làm công việc điều khiển thời gian , vẽ ảnh , … + Các lớp Tram, NutChuyen Box , Button có quan hệ Composition với lớp + Kế thừa giao diện Action Listener , Runable Mouse Listerner 2.5 Thiết kế chi tiết lớp Lớp – K52 - 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 gồm chức : Chuyển động theo băng chuyền Tạo box box đến trạm + Các thuộc tính : dem1,dem2,dem3 dùng để đếm số box trạm s1[] lưu đường dẫn cho ảnh box count ( = 1,2,3,4 ) : dùng để định hướng đường cho box < count = - box đứng yên > currState : lưu lại trạng thái của count ta stop Thread Dachser : sử dụng để kiểm tra 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 số 1,2,3 tương ứng với loại hộp c/ reset() : Được gọi box trạm if (dem1=0&dem2=0&dem3=0) { numberOfThreadOff++ Thread.stop(); } Lớp – K52 - 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 set lại đưởng dẫn ảnh cho box } d/run() + Tại điểm ngoặt : if (tọa độ box == tọa độ ngoặt ) { biến count thay đổi } + Tại nút chuyển if (tọa độ box == tọa độ nút chuyển ) { biến count đổi theo image nút chuyển } + Tại trạm : if (checkTD) { tạo ảnh box } Hình 7.Class Dachser Dachser : + Các thuộc tính : speed : lưu trữ tốc độ chuyển động 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 kiện cho button : b/ mousePress(MouseEvent) if ( tọa độ nhấn chuột nằm khu vực button){ đổi ảnh } c/random():int Cho số tương ứng với loại box d/init() Khởi tạo tất nút ảnh có Lớp – K52 - 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 hiển thị tương ứng với biến numberWindow f/run() Kiểm tra thay đổi numberWindow đồng hồ biến numberOfThreadOff Lớp – K52 - 12 Bài tập lớn Giáo viên hướng dẫn: ThS Nguyễn Thị Thu Trang Chương : CÔNG NGHỆ VÀ THUẬT TOÁN SỬ DỤNG Game nhóm em làm sử dụng thuật toán : - Làm cho hình không bị giật Ban đầu nhóm gặp phải trường hợp chạy Applet chương trình bị giật Nhưng sau nhóm tìm cách để giải vấn đề Đó khởi tạo đối tượng Graphics vẽ tất lên Sau cho Graphics lên Applet - Sử dụng kĩ thuật đa luồng : Nhóm tạo luồng lúc cách sử dụng Thread chạy - Thuật toán random : Cho box từ điểm xuất Lớp – K52 - 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 chương trình minh họa Đây giao diện mà bọn em thực : Khi khởi động applet ta có hình Start Hình Màn hình khởi động Lớp – K52 - 14 Bài tập lớn Giáo viên hướng dẫn: ThS Nguyễn Thị Thu Trang Hình : Màn hình hướng dẫn sau ấn Help Hình 10 : Giao diện chơi Lớp – K52 - 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 đổi nút hình 10 Hình 12 Giao diện tiếp tục Lớp – K52 - 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 lên giao diện Game over Lớp – K52 - 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 chiến thắng Lớp – K52 - 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 - - - Game mà nhóm em làm theo em tương đối hoàn thiện thực số chức với yêu cầu Tuy nhiên quỹ thời gian hạn chế ngôn ngữ Java UML học từ đầu kì nên bọn em chưa thể hoàn thành hết theo ý muốn Game số hạn chế : Applet nặng chạy chậm số máy có cấu hình thấp Phần Highscore Save game bọn em chưa làm tiếp tục phát triển sau Hướng phát triển : Lưu highscore file txt Game save lưu giá trị biến game Lớp Box chúng em tạo box chuyển động lúc chưa làm theo yêu cầu sau khoảng thời gian định Việc đổi màu trạm chưa làm Chương trình gợi ý Lớp – K52 - 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 thiết kế hệ thống thông tin - Nguyễn Văn Ba - 2003 Slide cô Trang Lập trình hướng đối tượng với Java - Đoàn Văn Ban Java - Tập – Phương Lan ( Nhà xuất 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 In 21 Days - Sams Publishing http://www.javaworld.com/ http://www.vn4000.com/content/category/5/16/32/ Lớp – K52 - 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 – K52 - 21 [...]... 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 – K52 - 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 – K52 ... toán giao> Trò chơi băng chuyền mô hệ thống băng chuyền sử dụng nhà máy công nghiệp, sân bay, hay công ty chuyển phát Trò chơi gồm nhiều màn, bị giới hạn mặt thời gian Mỗi một sơ đồ băng chuyền với... màu định phải người chơi điều khiển băng chuyền để đến điểm nhận có màu Sau nhận xong, kiện hàng coi băng chuyền đèn hiệu màu điểm nhận thay đổi để chờ kiện hàng khác - Băng chuyền đồ thị có hướng... hạn cho chơi hàng chuyển hết (không di chuyển băng chuyền) coi người chơi qua - Người dùng lựa chọn chế độ hỗ trợ, chương trình có gợi ý – hướng dẫn thao tác cần thực nút chuyển băng chuyền (khi