Báo cáo bài tập lớn lập trình hướng đối tượng

12 4.7K 7
Báo cáo bài tập lớn lập trình hướng đối tượng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

báo cáo lập trình hướng đối tượng nhóm 19 Ngày 07 tháng 08 năm 2014 MỤC LỤC Tổng quan ……………………………………………………………4 Phân tích thiết kế mức kiến trúc ……………………………………5 Thiết kế chi tiết ………………………………………………………6 Các vấn đề gặp phải …………………………………………………8 Kết luận đánh giá ……………………………………………………10 Tài liệu tham khảo ………………………………………………… 12 LỜI NÓI ĐẦU Lập trình hướng đối tượng (gọi tắt OOP, từ chữ anh ngữ object-oriented programing), hay gọi lập trình hướng đối tượng, kỹ thuật lập trình hỗ trợ công nghệ hướng đối tượng OOP xem giúp tăng suất, đơn giản hóa độ phức tạp bảo trì mở rộng phần mềm cách cho phép lập trình viên tập trung vào đối tượng phần mềm bậc cao Ngoài ra, nhiều người cho OOP dễ tiếp thu cho người học lập trình phương pháp trước Một cách giản lược, khái niệm nỗ lực nhằm giảm nhẹ thao tác viết mã nguồn cho người lập trình, cho phép họ tạo ứng dụng mà yếu tố bên tương tác với chương trình giống tương tác với đối tượng vật lý Những đối tượng ngôn ngữ OOP kết hợp mã liệu mà chúng nhìn nhận đơn vị Mỗi đối tượng có tên riêng biệt tất tham chiếu đến đối tượng tiến hành qua tên Như vậy, đối tượng có khả nhận vào thông báo, xử lý liệu (bên nó), gửi hay trả lời đến đối tượng khác hay đến môi trường Chương 1: Tổng quan - Ngôn ngữ sử dụng: JavaSE Sử dụng thư viện có sẵn như: java.awt.*, java.swing.*, java.xml.*… tham khảo số Game-Engine có sẵn Sử dụng ảnh lấy từ game pacman cổ điển Chương trình hoàn toàn nhóm tự thiết kế lập trình Áp dụng tư hướng đối tượng thiết kế lập trình lớp Chương 2: Phân tích thiết kế mức kiến trúc 2.1 Mô tả yêu cầu toán Người chơi điều khiển nhân vật game di chuyển theo đồ (map) có sẵn để đến đích định trước Đến đích người chơi chiến thắng (victory) Khi đến đích map chương trình tự động chuyển map khác Trên đường xuất nhiều quái vật Nhiệm vụ người chơi điều khiển phím lên (up), xuống(down), trái(left), phải(right) để tránh quái vật Khi gặp quái vật số tốc độ(speed), máu(blood), sức mạnh(attack) nhân vật bị giảm xuống Khi số nhỏ người chơi thua cuộc(Over) 2.2 Biểu đồ lớp Charactor Player Ghost Map Position GameData Main Region Thread GameCanvas Sprite GameLoop GameApplication Game SpriteSheet Main Chương 3: Thiết kế chi tiết 3.1 Tổng quan thiết kế toán 3.1.1 Các package toán - Game.simpleRPG: Gồm tất class tạo người chơi(player), tạo quái vật(ghost), tạp đồ(map), xử lý chuyển động … - org.game.engine: Gồm engine phục vụ load ảnh, load file, trợ giúp bắt kiện 3.1.2 Các interface 3.1.3 Các abstract class - Game: Thuộc package org.game.engine Mội đối tượng muốn vẽ lên frame phải thực thi interface Nó có phương thức cần thực thi abstract public void draw(Graphics2D g) Game # over: boolean # title: String # delay: int + isOver: boolean + getTitle: String + getDelay: int + keyPressed: void 3.2 Thiết kế phần load đồ(map) hình ảnh - Class Main sử dụng phương thức khởi tạo để gọi đến phương thức khởi tạo lớp SpiteSheet - Phương thức khởi tạo lớp SpiteSheet nhận đầu vào String tên ảnh(images) tên file txt chứa thông tin ảnh - Ảnh(images) ảnh người chơi(player), quái vật(ghost), thông báo đồ(map) File txt chứa tọa độ thông tin cần thiết ảnh để load ảnh hình 3.3 Thiết kế chi tiết phần chơi game - Trò chơi lớp Main Lớp Main kế thừa từ lớp trừu tượng(abstract class) Game để bắt kiện từ bàn phím Phương thức public static void main() gọi đến phương thức lớp GameApplication để vẽ lên Frame ban đầu - Lớp Main có phương thức: + public void keyPressed(KeyEvent e) để bắt kiện từ bàn phím phím lên, xuống, trái, phải + public void update() để gọi đến phương thức di chuyển người chơi quái vật + public void draw(Graphics2D g) để vẽ hình đồ, quái vật, người chơi, thông số người chơi, thông báo thất bại hay chiến thắng - Lớp GameData() có phương thức: + private void setMap(int m) để thay đổi map qua + public void attack(Ghost g, Player g) để tạo phương thức chiến đấu + public void moveGhosts(int [] reqDirs) tạo chuyển động ghost - Lớp Position xác định tọa độ người quái vật - Lớp Player Ghost kế thừa từ lớp Character thuộc tính vị trí, attack, blood, speed, phương thức protected boolean move() để di chuyển - Lớp Map load file Mazes.txt để load đường cho người chơi quái vật - Lớp GameLoop kế thừa từ lớp Thread để chia luông, tách luồng đặc biệt quan trọng xử lý giao diện Chương 4: Các vấn đề gặp phải 4.1 Các vấn đề thiết kế vẽ map vẽ nhân vật Nhóm gặp nhiều vấn đề thiết kế phần vẽ nhân vật tạo map Thứ nhất, tìm ảnh game mà trình độ sử dụng photoshop nhiều hạn chế Rất may nhóm tìm mạng ảnh game pacman Nhóm sử dụng thêm file text để xác định tọa độ cho việc đọc file ảnh Thứ hai, sau tìm ảnh, có thêm vấn đề người chơi quái vật di chuyển theo đường mà map vẽ mà không lệch Cuối nhóm định dùng file text với ký tự 0, 1, 2, 3, 4, 5, 6, cho việc tạo đồ 4.3 Các vấn đề thiết kế phần chơi game Thứ nhất, việc vẽ hình ảnh lên hình chuyển động thật lúc đầu làm cho nhóm gặp nhiều khó khăn Sau vấn đề cho đối tượng chuyển động kèm với xử lý kiện đối tượng không chuyển động mà vị trí sau hết thời gian chuyển động Qua tìm hiểu nhóm biết rằng: Thực ra, chương trình chạy hàm main(), dòng lệnh lệnh tạo cửa sổ lên, phía bắt đầu chạy ngầm vòng lặp vô hạn Vòng lặp nói làm nhiều việc quan trọng, có việc bản: vẽ giao diện đón bắt xử lý kiện Hai công việc không thực đồng thời thời điểm Để thực việc ta phải tách việc vẽ sang thread song song khác Thứ vấn đề hình ảnh chuyển động bị giật… nhóm sử dụng kỹ thuật Double Buffering: Vẽ tất hình ảnh vào BufferedImage vẽ lên hình Chương 5: Kết luận đánh giá 5.1 Đánh giá - Kết đạt được: Trong trình làm tập lớn nhóm hiểu sâu ngôn ngữ lập trình java, đặc biệt đồ họa Thu nhiều kinh nghiệm việc thiết kế lập trình hướng đối tượng - Khiếm khuyết: Khó khăn việc phân chia công việc nhóm Khó khăn để phân chia công việc cho người làm độc lập với Và hạn chế mặt thời gian nên chưa thực toàn chức mong muốn như: hiệu ứng âm thanh, xử lý đồ họa chưa hoàn hảo… 10 5.2 Phân chia công việc nhóm - Phần công việc chung: Cả nhóm thống yêu cầu toán Về việc phân chia package, việc lựa chọn class trừu tượng class quan trọng - Phần công việc riêng: + Nguyễn Bá Duy : Làm phần chơi game + Nguyễn Khánh Hoàng : Làm phần tạo đồ + Hoàng Văn Giáp : Làm phần xử lý luồng + Nguyễn Trọng Quý : Làm phần xử lý luồng + Triệu Văn Dũng : Làm phần đọc file viết báo cáo + Trần Văn Đức : Làm phần xử lý ảnh file info.txt 11 Chương 6: Tài liệu tham khảo Bộ ảnh lấy mạng Chương trình hoàn toàn nhóm thiết kế tự lập trình Các kiến thức lập trình java tham khảo ở: - stackoverflow.com - congdongjava.com - ntu.edu.sg - wikipedia.org - youtube.com 12 [...]... Triệu Văn Dũng : Làm phần đọc file và viết báo cáo + Trần Văn Đức : Làm phần xử lý ảnh và file info.txt 11 Chương 6: Tài liệu tham khảo Bộ ảnh được lấy trên mạng Chương trình hoàn toàn do nhóm thiết kế và tự lập trình Các kiến thức về lập trình java tham khảo ở: - stackoverflow.com - congdongjava.com - ntu.edu.sg - wikipedia.org - youtube.com 12 ... chung: Cả nhóm thống nhất về yêu cầu bài toán Về việc phân chia các package, việc lựa chọn các class trừu tượng và các class quan trọng - Phần công việc riêng: + Nguyễn Bá Duy : Làm phần chơi game + Nguyễn Khánh Hoàng : Làm phần tạo bản đồ + Hoàng Văn Giáp : Làm phần xử lý luồng + Nguyễn Trọng Quý : Làm phần xử lý luồng + Triệu Văn Dũng : Làm phần đọc file và viết báo cáo + Trần Văn Đức : Làm phần xử lý ... 12 LỜI NÓI ĐẦU Lập trình hướng đối tượng (gọi tắt OOP, từ chữ anh ngữ object-oriented programing), hay gọi lập trình hướng đối tượng, kỹ thuật lập trình hỗ trợ công nghệ hướng đối tượng OOP xem... Đánh giá - Kết đạt được: Trong trình làm tập lớn nhóm hiểu sâu ngôn ngữ lập trình java, đặc biệt đồ họa Thu nhiều kinh nghiệm việc thiết kế lập trình hướng đối tượng - Khiếm khuyết: Khó khăn... đơn vị Mỗi đối tượng có tên riêng biệt tất tham chiếu đến đối tượng tiến hành qua tên Như vậy, đối tượng có khả nhận vào thông báo, xử lý liệu (bên nó), gửi hay trả lời đến đối tượng khác hay

Ngày đăng: 04/11/2015, 15:31

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan