1. Trang chủ
  2. » Công Nghệ Thông Tin

Báo cáo bài tập lớn môn Java Game Pluzz

37 3,7K 42
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

Tiêu đề Báo cáo bài tập lớn môn Java Game Pluzz
Tác giả Nhóm 14
Người hướng dẫn Vũ Đức
Trường học Trường Đại Học Điện Lực
Chuyên ngành Java Game
Thể loại báo cáo
Định dạng
Số trang 37
Dung lượng 1,35 MB

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

Nội dung

“Game Xếp Hình”. Hay còn được gọi là Puzzle, có nghĩa là câu đố, đây là trò chơi thuộc thể loại game trí tuệ. Trò chơi này cũng giống như các trò chơi xếp hình, đầu tiên với kích thước trò chơi là 9 ô, trạng thái ban đầu được khởi tạo ngẫu nhiên.

Trang 1

MỤC LỤC

DANH MỤC CÁC HÌNH ẢNH VÀ SƠ ĐỒ 2

TÓM TẮT ĐỀ TÀI 3

1 Cơ sở lý thuyết 4

1.1 Giới thiệu về ngôn ngữ Java: 4

1.2 Một số tính chất của ngôn ngữ Java: 4

1.2.1 Đơn giản: 4

1.2.2 Hướng đối tượng: 4

1.2.3 Độc lập phần cứng và hệ điều hành: 5

1.2.4 Mạnh mẽ: 6

1.2.5 Bảo mật: 6

1.2.6 Phân tán: 7

1.2.7 Đa luồng 7

1.2.8 Linh động 7

2 Quá trình xây dựng chương trình: 7

2.1 Xác định yêu cầu: 7

2.1.1 Yêu cầu chức năng: 7

2.1.2 Yêu cầu phi chức năng: 7

2.2 Thiết kế chương trình: 7

2.2.1 Biểu đồ Usecase: 7

2.2.2 Biểu đồ trình tự: 8

2.2.3 Thiết kế thuật toán : 11

2.2.4 Thiết kế giao diện người dùng 12

3 Kết quả: 15

Trang 2

Hình 1.1: Các biên dịch chương trình hệ thống

Hình 1.2: Biên dịch hệ thống java

Hình 2.1 Biểu đồ Usecase

Hình 2.2 Biểu đồ trình tự bắt đầu chơi game

Hình 2.3 Biểu đồ trình tự tự động chơi game

Hình 2.4 Biểu đồ trình tự thêm ảnh

Hình 2.5 Biểu đồ trình tự cài đặt game

Hình 2.6 Bài toán mô tả hàm ước lượng Heuristic

Hình 3.1 Giao diện chính của chương trình

Hình 3.2 Các chức năng chính của chương trình

Hình 3.3 Giao diện bắt đầu chơi game

Hình3.4 : Giao diện thiết lập độ khó cho trò chơi

Hình 3.5 : Giao diện game khi Win

Hình 3.6 : Giao diện hỏi người chơi có muốn Autorun không

Hình 3.7 : Giao diện khi game đang tự động chơi

Hình 3.8 : Giao diện Add Image

Hình 3.9 : Giao diện cài đặt trò chơi

Hình 3.10 : Giao diện hướng dẫn cho người chơi

Trang 3

PHÂN CÔNG CÔNG VIỆC VÀ ĐÁNH GIÁ KẾT QUẢ

Họ Tên Nhiệm Vụ Kết Quả

Đinh Thu Quỳnh Xác định yêu cầu và thiết kế

chương trình ( Các biểu đồ ) Hoàn thành

Phạm Đức Mạnh Thiết kế thuật toán và kết

Nguyễn Quốc Hùng Cơ sở lý thuyết và thiết kế

giao diện người dùng Hoàn thành

Trang 4

Java là một ngôn ngữ lập trình dạng lập trình hướng đối tượng (OOP) Khác vớiphần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã nguồn thành mã máyhoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn thànhbytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy.Bằng cách này, Java thường chạy chậm hơn những ngôn ngữ lập trình thông dịch khácnhư C++, Python, Perl, PHP, C#

Ngôn ngữ lập trình Java được giới thiệu vào năm 1990 Sau đó không lâu, ngônngữ này được sử dụng rộng rãi và phổ biến đối với các lập trình viên chuyên nghiệpcũng như các nhà phát triển phần mềm

Để hiểu rõ hơn về Java nhóm chúng em đã tìm hiểu và xây dựng một chương

trình đơn giản là “Game Xếp Hình” Hay còn được gọi là Puzzle, có nghĩa là câu đố,

đây là trò chơi thuộc thể loại game trí tuệ Trò chơi này cũng giống như các trò chơixếp hình, đầu tiên với kích thước trò chơi là 9 ô, trạng thái ban đầu được khởi tạo ngẫunhiên Nhiệm vụ của người chơi là xếp 8 chữ số sao cho đạt được trạng thái win chonhư sau:

1 2 3

4 5 6

7 8Người chơi sẽ dịch chuyển các số theo các hướng lên xuống,sang trái phải khi ôcạnh nó là ô trống.Độ khó của trò chơi được qui định bằng giới hạn thời gian chơi và

Trang 5

3 Kết quả

4 Hạn chế thiếu xót và hướng phát triển

1 Cơ sở lý thuyết

1.1 Giới thiệu về ngôn ngữ Java:

Java là một ngôn ngữ lập trình được Sun Microsystems giới thiệu vào tháng 6 năm

1995 Từ đó, nó đã trở thành một công cụ lập trình của các lập trình viên chuyênnghiệp Java được xây dựng trên nền tảng của C và C++, do vậy nó sử dụng các cúpháp của C và các đặc trưng hướng đối tượng của C++

Vào năm 1991, một nhóm các kỹ sư của Sun Microsystems có ý định thiết kế mộtngôn ngữ lập trình để điều khiển các thiết bị điện tử như tivi, máy giặt, lò nướng,…Mặc dù C và C++ có khả năng làm việc này nhưng trình biên dịch lại phụ thuộc vàotừng loại CPU

Trình biên dịch thường phải tốn nhiều thời gian để xây dựng nên rất đắt, vì vậy để

Trang 6

1.2 Một số tính chất của ngôn ngữ Java:

Java là ngôn ngữ lập trình được phát triển từ ngôn ngữ lập trình C/C++ Nó kếthừa, phát huy các thế mạnh của ngôn ngữ C/C++ và lược bỏ đi các cú pháp phức tạpcủa C/C++ Ngôn ngữ lập trình Java có một số đặc trưng tiêu biểu: đơn giản, hướng đốitượng, độc lập phần cứng và hệ điều hành, mạnh mẽ, bảo mật, phân tán, đa luồng vàlinh động

1.2.1 Đơn giản:

Những người thiết kế mong muốn phát triển một ngôn ngữ dễ học và quen thuộcvới đa số người lập trình Do vậy Java loại bỏ các đặc trưng phức tạp của C và C++như:

- Loại bỏ thao tác con trỏ, thao tác định nghĩa chồng toán tử

- Không cho phép đa kế thừa mà sử dụng các giao diện

- Không sử dụng lệnh “goto” cũng như file header (.h)

- Loại bỏ cấu trúc “struct” và “union”

1.2.2 Hướng đối tượng:

Java là ngôn ngữ lập trình thuần hướng đối tượng, mọi chương trình viết trênJava đều phải được xây dựng trên các đối tượng Nếu trong C/C++ ta có thể tạo ra cáchàm (chương trình con không gắn với đối tượng nào) thì trong Java ta chỉ có thể tạo racác phương thức (chương trình con gắn liền với một lớp cụ thể) Trong Java không cho

Trang 7

Đối với các ngôn ngữ lập trình truyền thống như C/C++, phương pháp biên dịchđược thực hiện như sau :

Hình 1.1: Các biên dịch chương trình hệ thống

Với mỗi nền phần cứng khác nhau, có một trình biên dịch khác nhau để biên dịch mã nguồn chương trình cho phù hợp với nền phần cứng ấy Do vậy, khi chạy trên một nền phần cứng khác bắt buộc phải biên dịch lại mã nguồn

Đối với các chương trình viết bằng Java, trình biên dịch Javac sẽ biên dịch mãnguồn thành dạng bytecode Sau đó, khi chạy chương trình trên các nền phần cứngkhác nhau, máy ảo Java dùng trình thông dịch Java để chuyển mã bytecode thành dạngchạy được trên các nền phần cứng tương ứng Do vậy, khi thay đổi nền phần cứng,không phải biên dịch lại mã nguồn Java

Trang 8

Hình 1.2: Biên dịch hệ thống java

1.2.4 Mạnh mẽ:

Java là ngôn ngữ yêu cầu chặt chẽ về kiểu dữ liệu

- Kiểu dữ liệu phải khai báo tường minh

- Java không sử dụng con trỏ và các phép toán con trỏ

- Java kiểm tra tất cả các truy nhập đến mảng, chuỗi khi thực thi để đảm bảo rằng cáctruy nhập đó không ra ngoài giới hạn kích thước

- Trong các môi trường lập trình truyền thống, lập trình viên phải tự mình cấp phát

Trang 9

Java cung cấp một môi trường quản lý thực thi chương trình với nhiều mức đểkiểm soát tính an toàn:

- Ở mức thứ nhất, dữ liệu và các phương thức được đóng gói bên trong lớp Chúngchỉ được truy xuất thông qua các giao diện mà lớp cung cấp

- Ở mức thứ hai, trình biên dịch kiểm soát để đảm bảo mã là an toàn, và tuân theo các

nguyên tắc của Java

- Mức thứ ba được đảm bảo bởi trình thông dịch chúng kiểm soát xem bytecode có

đảm bảo các quy tắc an toàn trước khi thực thi không

- Mức thứ tư kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi phạm giới

hạn truy xuất trước khi nạp vào hệ thống

1.2.6 Phân tán:

Java được thiết kế để hỗ trợ các ứng dụng chạy trên mạng bằng các lớp mạng(java.net) Hơn nữa, Java hỗ trợ nhiều nền chạy khác nhau nên chúng được sử dụngrộng rãi như là công cụ phát triển trên Internet - nơi sử dụng nhiều nền khác nhau

Java được thiết kế như một ngôn ngữ động để đáp ứng cho những môi trường

mở Các chương trình Java chứa rất nhiều thông tin thực thi nhằm kiểm soát và truynhập đối tượng lúc chạỵ Điều này cho phép khả năng liên kết mã động

Trang 10

2 Quá trình xây dựng chương trình:

2.1 Xác định yêu cầu:

2.1.1 Yêu cầu chức năng:

Game xếp hình (hay còn gọi là Puzzle) là một trò chơi điều khiển các khối trượt trong một khung được đánh số thứ tự ngẫu nhiên với một ô bị thiếu Nhiệm vụ của chúng ta là trượt các khối Các khối trượt là những con số hoặc hình ảnh sao cho kết quả được dãy số sắp xếp tăng hoặc giảm dần, hoặc các hình được ghép lại từ các miếngnhỏ thành hình ban đầu

2.1.2 Yêu cầu phi chức năng:

Giao diện game đơn giản, thân thiện và dễ sử dụng với người chơi

2.2 Thiết kế chương trình:

2.2.1 Biểu đồ Usecase:

Trang 11

Hình 2.1 Biểu đồ Usecase

2.2.2 Biểu đồ trình tự:

2.2.2.1 Biểu đồ trình tự New game:

Trang 12

Hình 2.2 Biểu đồ trình tự bắt đầu chơi game

2.2.2.2 Biểu đồ trình tự Solve:

Trang 13

Hình 2.3 Biểu đồ trình tự tự động chơi game

Trang 14

2.2.2.3 Biểu đồ trình tự Add image:

Hình 2.4 Biểu đồ trình tự thêm ảnh

Trang 15

Hình 2.5 Biểu đồ trình tự cài đặt game

2.2.3 Thiết kế thuật toán :

Để giải quyết vấn đề liên quan đến tìm đường đi và đồ thị thì A* là một giải thuật tìm kiếm thường được sử dụng Ta chọn nó không chỉ vì tính hiệu quả mà còn vì rất dễ dàng để hiểu và cài đặt

Ta rất dễ thấy là mỗi trạng thái của bảng số là một hoán vị của ma trận (m x n) phần tử ( với m là cạnh), như vậy không gian trạng thái của nó là (m x n)! Với 8-puzzle là 9! =

362880 (m = 3) và 15-puzzle là 16! = 20922789888000 ( m = 4) Ta có thể khi tăng m lên 1 đơn vị thì không gian trạng thái tăng lên rất nhanh, nên với m>3 thì rất ít khi

Trang 16

Procedure A *

Begin Đặt trạng thái đầu vào ds L;

While true do Begin

If ds L rỗng then Begin

Thông báo thất bại;

Kết thúc;

End;

u <- trạng thái đầu;

If u ≡ đích then Begin

Thông báo thành công;

Kết thúc;

End;

For mỗi v kề u do Begin

g(v) = g(u) + k(v,u);

f(v) = g(v) + h(u);

Đặt v vào ds L sao cho L tăng dần theo hàm f;

Trang 17

2.2.4 Thiết kế giao diện người dùng

2.2.4.1 Giao diện chính:

Giao diện chính gồm các chức năng:

- Chức năng New game: hiển thị ra màn hình có các chức năng như sau: Chọn kích

thước ảnh có thể là 3x3,4x4,5x5 , chọn kiểu ảnh là ảnh và số hoặc ảnh số, chọn ước lượng heuristic1,2,3 Sau đó start game

Dữ liệu đầu vào là ảnh mẫu bất kì, được chia làm 9 ô bị xáo trộn và đã được thiết lập kiểu ảnh, size ảnh Dữ liệu đầu ra là thông báo thắng, ảnh sau khi được sắp xếp hoàn chỉnh giống với hình ban đầu đã cho

Hàm ước lượng Heuristic đơn giản nhất sẽ đếm số ô sai khác so với trạng thái

đích trong từng trạng thái Trạng thái có số ô sai khác ít nhất sẽ gần đích hơn và là

trạng thái tốt nhất để kiếm tra kế tiếp

Trang 18

h(n) là ước lượng heuristic cho khoảng cách từ trạng thái n đến trạng thái đích.

- Chức năng Solve ( tự giải quyết game ):

Sau khi ấn nút Solve ở màn hình new game Giao diện hiện ra sẽ hỏi người chơi bạn có muốn tự động chơi game hay không Khi người chơi ấn Yes, ở bảng thông báo

đã hiện ra kết quả được tính sẵn Sau đó game sẽ tự động chơi với ước lượng và số bước đi ngắn nhất trong thời gian sớm nhất đã được thiết lập sẵn từ trước

Dữ liệu đầu vào là ảnh mẫu bất kì, được chia làm 9 ô bị xáo trộn và đã được thiết lập kiểu ảnh, size ảnh Dữ liệu đầu ra là thông báo thắng, ảnh sau khi được sắp xếp hoàn chỉnh giống với hình ban đầu đã cho

2.2.4.2 Giao diện Add Image:

Chức năng thêm ảnh Có thể tải ảnh từ máy tính của bạn vào giao diện game để

Trang 19

2.2.4.4 Giao diện Help:

Hướng dẫn cách chơi game

Trang 20

3.1 Chương trình hoàn chỉnh:

Giao diện chương trình lúc ban đầu hình vẽ:

Trang 21

Để bắt đầu chơi, người chơi phải click menu File, khi đó 1 menu sổ xuống như hình vẽ:

Trang 22

Tiếp theo chọn New Game để bắt đầu chơi.

Khi đó trên giao diện chương trình ta sẽ thấy các mảnh ghép sẽ được săp xếp xáo trộn với nhau như hình vẽ:

Trang 23

Hình 3.3 Giao diện bắt đầu chơi game

Trang 24

Và nhiệm vụ của người chơi lúc này là phải sắp xếp lại tấc cả các mảnh ghép để được bức ảnh như cũ.

Trước khi chơi game, người chơi có thể thiết lập độ khó cho trò chơi nếu muốn như sau:

Hình 3.4 : Giao diện thiết lập độ khó cho trò chơi

Trang 25

Sau đó bắt đầu chơi:

Trang 26

Hình 3.5 : Giao diện game khi Win.

Sau khi hoàn thành trò chơi trên giao diện sẽ hiển thị thông báo bạn đã thắng và hiển

thị thời gian và số bước bạn đã đạt được, sau đó người chơi có hai nút chọn chơi lại hoặc thoát.

Trang 27

Giao diện Solve : Tự động chơi game.

Với những thiết lập đã được chọn ban đầu Người chơi ấn Solve giao diện hiện ra sẽ hỏi người chơi có muốn tự động chơi game không, người chơi chọn Yes hoặc No

Hình 3.6 : Giao diện hỏi người chơi có muốn Autorun không.

Trang 28

Khi người chơi chọn Yes, trên màn hình chính sẽ hiện thông báo kết quả thắng

đã được tính sẵn, game đang tự động chơi

Trang 29

Hình 3.7 : Giao diện khi game đang tự động chơi

Trang 30

Chức năng Edit: Add Image

Người chơi có thể chọn ảnh bất kỳ từ máy tính để tải vào game như hình dưới đây:

Trang 31

Chức năng Tool: Option

Trang 32

Hình 3.9 : Giao diện cài đặt trò chơi.

Chức năng Help

Trang 33

Hình 3.10 : Giao diện hướng dẫn cho người chơi.

3.2 Các khó khăn gặp phải và cách giải quyết:

Do thời gian còn hạn chế, bài làm lại gồm các thành viên trong nhóm cùng làm nênrất khó để đồng nhất các ý kiến của các thành viên Các thành viên trong nhóm lại xa nhau nên việc liên lạc trao đổi bài còn gặp nhiều khó khăn Việc tiếp cận với một ngôn ngữ mới cũng gặp rất nhiều khó khăn về cú pháp và câu lệnh

Vượt qua những khó khăn trên, nhóm chúng em đã tích cực trao đổi bài với nhau qua mail, điện thoại để tìm cách giải quyết bài toán Các thành viên cũng ý thức được

và đã tìm hiểu những vấn đề còn vướng mắc qua sách vở và các tài liệu lưu trữ trên internet

Trang 34

KẾT LUẬN

Mục tiêu đã hoàn thành

- Đã xây dựng được một chương trình game gồm có các chức năng cơ bản : Bắt đầu

chơi, Tạo độ khó của trò chơi, Tự động giải quyết được trò chơi

- Đã tìm hiểu được rõ thêm về Java.

Các thiếu xót cần bổ sung

Trang 36

[1] Ngô Công Thắng; Bài giảng Lập trình Java

[2] Phạm Quang Dũng Bài giảng lập trình Java Trường ĐH Nông Nghiệp Hà Nội 2009[3] Bài giảng Java căn bản Aptech 2010

[4] Java cơ sở Trường ĐH Sư phạm kỹ thuật Hưng Yên 2008

Ngày đăng: 20/05/2013, 15:21

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Các biên dịch chương trình hệ thống - Báo cáo bài tập lớn môn Java Game Pluzz
Hình 1.1 Các biên dịch chương trình hệ thống (Trang 7)
Hình 1.2: Biên dịch hệ thống java - Báo cáo bài tập lớn môn Java Game Pluzz
Hình 1.2 Biên dịch hệ thống java (Trang 8)
Hình 2.1 Biểu đồ Usecase - Báo cáo bài tập lớn môn Java Game Pluzz
Hình 2.1 Biểu đồ Usecase (Trang 11)
Hình 2.3 Biểu đồ trình tự tự động chơi game - Báo cáo bài tập lớn môn Java Game Pluzz
Hình 2.3 Biểu đồ trình tự tự động chơi game (Trang 13)
Hình 2.4 Biểu đồ trình tự thêm ảnh - Báo cáo bài tập lớn môn Java Game Pluzz
Hình 2.4 Biểu đồ trình tự thêm ảnh (Trang 14)
Hình 2.5 Biểu đồ trình tự cài đặt game - Báo cáo bài tập lớn môn Java Game Pluzz
Hình 2.5 Biểu đồ trình tự cài đặt game (Trang 15)
Hình 3.1 Giao diện chính của chương trình - Báo cáo bài tập lớn môn Java Game Pluzz
Hình 3.1 Giao diện chính của chương trình (Trang 20)
Hình 3.3 Giao diện bắt đầu chơi game - Báo cáo bài tập lớn môn Java Game Pluzz
Hình 3.3 Giao diện bắt đầu chơi game (Trang 23)
Hình 3.4 : Giao diện thiết lập độ khó cho trò chơi - Báo cáo bài tập lớn môn Java Game Pluzz
Hình 3.4 Giao diện thiết lập độ khó cho trò chơi (Trang 24)
Hình 3.5 : Giao diện game khi Win. - Báo cáo bài tập lớn môn Java Game Pluzz
Hình 3.5 Giao diện game khi Win (Trang 26)
Hình 3.6 : Giao diện hỏi người chơi có muốn Autorun không. - Báo cáo bài tập lớn môn Java Game Pluzz
Hình 3.6 Giao diện hỏi người chơi có muốn Autorun không (Trang 27)
Hình 3.7 : Giao diện khi game đang tự động chơi - Báo cáo bài tập lớn môn Java Game Pluzz
Hình 3.7 Giao diện khi game đang tự động chơi (Trang 29)
Hình 3.9 : Giao diện cài đặt trò chơi. - Báo cáo bài tập lớn môn Java Game Pluzz
Hình 3.9 Giao diện cài đặt trò chơi (Trang 32)

TỪ KHÓA LIÊN QUAN

w