1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

12 4,9K 8
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 555,37 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Một cách giản lược, đây là khái niệm và là một nỗ lực nhằm giảm nhẹ các thao tác viết mã nguồn cho người lập trình, cho phép họ tạo ra các ứng dụng mà các yếu tố bên ngoài có thể tương t

Trang 1

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

Trang 2

MỤC LỤC

1 Tổng quan ………4

2 Phân tích thiết kế mức kiến trúc ………5

3 Thiết kế chi tiết ………6

4 Các vấn đề gặp phải ………8

5 Kết luận đánh giá ………10

6 Tài liệu tham khảo ……… 12

Trang 3

LỜI NÓI ĐẦU

Lập trình hướng đối tượng (gọi tắt là OOP, từ chữ anh ngữ object-oriented programing), hay còn gọi là lập trình hướng đối tượng, là kỹ thuật lập trình hỗ trợ công nghệ hướng đối tượng OOP được xem là giúp tăng năng suất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào các đối tượng phần mềm ở bậc cao hơn Ngoài ra, nhiều người còn cho rằng OOP dễ tiếp thu hơn cho những người mới học về lập trình hơn là các phương pháp trước đó

Một cách giản lược, đây là khái niệm và là một nỗ lực nhằm giảm nhẹ các thao tác viết mã nguồn cho người lập trình, cho phép họ tạo ra các ứng dụng mà các yếu tố bên ngoài có thể tương tác với các chương trình đó giống như là tương tác với các đối tượng vật lý

Những đối tượng trong một ngôn ngữ OOP là các kết hợp giữa mã và dữ liệu

mà chúng được nhìn nhận như là một đơn vị duy nhất Mỗi đối tượng có một tên riêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến hành qua tên của nó Như vậy, mỗi đối tượng có khả năng nhận vào các thông báo, xử lý dữ liệu (bên trong của nó), và gửi ra hay trả lời đến các đối tượng khác hay đến môi trường

Trang 4

Chương 1: Tổng quan

- Ngôn ngữ sử dụng: JavaSE

- Sử dụng các thư viện có sẵn như: java.awt.*, java.swing.*, java.xml.*… và tham khảo một số Game-Engine có sẵn

- Sử dụng bộ ảnh lấy từ game pacman cổ điển

- Chương trình hoàn toàn do nhóm tự thiết kế và lập trình

- Áp dụng tư duy hướng đối tượng trong thiết kế và lập trình các lớp

Trang 5

Chương 2: Phân tích và thiết kế mức kiến trúc

2.1 Mô tả yêu cầu bài toán

Người chơi điều khiển 1 nhân vật trong game di chuyển theo bản đồ (map) có sẵn để đến được đích đã định trước Đến được đích người chơi sẽ chiến thắng

(victory) Khi đến được đích của map chương trình sẽ tự động chuyển map khác Trên đường đi sẽ xuất hiện nhiều quái vật Nhiệm vụ của người chơi là điều khiển 4 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 các chỉ

số tốc độ(speed), máu(blood), sức mạnh(attack) của nhân vật sẽ bị giảm xuống Khi một trong các chỉ số trên nhỏ hơn hoặc bằng 0 người chơi sẽ thua cuộc(Over)

2.2 Biểu đồ lớp

Charactor

GameData

Ghost Player

Map

Position

Main

Trang 6

Chương 3: Thiết kế chi tiết

3.1 Tổng quan về thiết kế bài toán

3.1.1 Các package trong bài toán

- Game.simpleRPG: Gồm các tất cả các class tạo người chơi(player), tạo quái vật(ghost), tạp bản đồ(map), xử lý các chuyển động …

- org.game.engine: Gồm các engine phục vụ load ảnh, load file, và trợ giúp bắt các sự kiện

3.1.2 Các interface

3.1.3 Các abstract class

Main

GameCanvas

Game

Sprite

GameLoop

Trang 7

- Game: Thuộc package org.game.engine Mội đối tượng muốn vẽ lên frame đều phải thực thi interface này Nó có một phương thức cần được thực thi abstract public void draw(Graphics2D g)

3.2 Thiết kế phần load bản đồ(map) và các hình ảnh

- Class Main sẽ sử dụng phương thức khởi tạo để gọi đến phương thức khởi tạo của lớp SpiteSheet

- Phương thức khởi tạo của lớp SpiteSheet sẽ nhận đầu vào là 2 String là tên của ảnh(images) và tên của file txt chứa thông tin của ảnh

- Ảnh(images) là các ảnh của người chơi(player), quái vật(ghost), các thông báo và các bản đồ(map) File txt chứa các tọa độ và các thông tin cần thiết của ảnh để load ảnh ra màn hình

3.3 Thiết kế chi tiết phần chơi game

- Trò chơi sẽ bắt đầu từ lớp Main Lớp Main kế thừa từ lớp trừu tượng(abstract class) Game để bắt các sự kiện từ bàn phím Phương thức public static void main() gọi đến phương thức của lớp GameApplication để vẽ lên Frame ban đầu

- Lớp Main có các phương thức:

Game

# over: boolean # title: String # delay: int

+ isOver: boolean + getTitle: String + getDelay: int + keyPressed: void

Trang 8

+ public void keyPressed(KeyEvent e) để bắt sự kiện từ bàn phím là các phím lên, xuống, trái, phải

+ public void update() để gọi đến các phương thức di chuyển của người chơi và quái vật

+ public void draw(Graphics2D g) để vẽ ra màn hình bản đồ, quái vật, người chơi, thông số người chơi, và thông báo thất bại hay chiến thắng

- Lớp GameData() có các phương thức:

+ private void setMap(int m) để thay đổi map mới khi qua màn

+ public void attack(Ghost g, Player g) để tạo phương thức chiến đấu + public void moveGhosts(int [] reqDirs) tạo các chuyển động của ghost

- Lớp Position xác định tọa độ của người và quái vật

- 2 Lớp Player và Ghost kế thừa từ lớp Character các thuộc tính vị trí, attack, blood, speed, và phương thức protected boolean move() để di chuyển

- Lớp Map load file Mazes.txt để load đường đi cho người chơi và 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 khi xử lý giao diện

Chương 4: Các vấn đề gặp phải

4.1 Các vấn đề khi thiết kế vẽ map và vẽ nhân vật

Nhóm đã gặp rất nhiều vấn đề khi thiết kế phần vẽ nhân vật và tạo map

Thứ nhất, là làm sao tìm được bộ ảnh của game khi mà trình độ sử dụng

photoshop còn nhiều hạn chế Rất may là nhóm đã tìm được trên mạng bộ ảnh của game pacman Nhóm đã sử dụng thêm 1 file text để xác định tọa độ cho việc đọc file ảnh

Trang 9

Thứ hai, sau khi tìm được bộ ảnh, thì có thêm vấn đề làm sao để cho người chơi

và quái vật di chuyển theo đúng đường mà map đã vẽ mà không đi lệch ra ngoài Cuối cùng nhóm đã quyết định dùng file text với các ký tự 0, 1, 2, 3, 4, 5, 6, 7 cho việc tạo bản đồ

Trang 10

4.3 Các vấn đề khi thiết kế phần chơi game

Thứ nhất, việc vẽ các hình ảnh lên màn hình và chuyển động như thật lúc đầu

đã làm cho nhóm gặp nhiều khó khăn Sau đó là vấn đề khi cho đối tượng chuyển động đi kèm với xử lý sự kiện thì đối tượng không chuyển động mà chỉ hiện ra vị trí sau khi 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 khi chạy bắt đầu từ hàm main(), tuần tự từng dòng lệnh cho đến lệnh tạo cửa sổ rồi hiện lên, thì phía dưới đang bắt đầu chạy ngầm 1 vòng lặp vô hạn Vòng lặp nói trên làm rất nhiều việc quan trọng, trong đó có 2 việc cơ bản: vẽ giao diện và đón bắt

xử lý sự kiện Hai công việc đó không bao giờ thực hiện đồng thời tại mỗi thời điểm

Để thực hiện được việc trên ta phải tách việc vẽ sang 1 thread song song khác

Thứ 2 vấn đề hình ảnh chuyển động bị giật… nhóm đã sử dụng kỹ thuật

Double Buffering: Vẽ tất cả các hình ảnh vào một BufferedImage rồi mới vẽ lên màn hình

Chương 5: Kết luận và đánh giá

- Kết quả đạt được: Trong quá trình làm bài tập lớn nhóm đã hiểu sâu hơn về ngôn ngữ lập trình java, đặc biệt là đồ họa Thu được nhiều kinh nghiệm trong việc thiết kế lập trình hướng đối tượng

- Khiếm khuyết: Khó khăn trong việc phân chia công việc trong nhóm Khó khăn để phân chia công việc sao cho mỗi người có thể làm độc lập với nhau Và vì hạn chế về mặt thời gian nên chưa thực hiện được toàn bộ những chức năng mong muốn

Trang 11

5.2 Phân chia công việc trong nhóm

- Phần công việc 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ý ảnh và file info.txt

Trang 12

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

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

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w