Tải bản đầy đủ (.docx) (15 trang)

Báo cáo tiến độ bài tập lớn Java

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 (317.29 KB, 15 trang )

Báo cáo tiến độ bài tập lớn nhóm 3

Báo cáo tiến độ bài tập lớn
Java


Báo cáo tiến độ bài tập lớn nhóm 3

Phụ Lục
Chương I : Giới thiệu...............................................................................4
I.

Giới thiệu game Cờ Caro.................................................................4

II. Ý tưởng và phân chia cơng việc......................................................4
Chương II : Phân tích và thiết kế game...................................................5
I.

Yêu cầu của phần mềm..................................................................5

II. Yêu cầu với người chơi....................................................................5
III.

Sơ đồ User-Case...........................................................................6

IV.

Thiết kế giao diện........................................................................6

3.1. Giao diện....................................................................................6
3.2. Chức năng và cách sử dụng.....................................................11


IV.

Xây dựng các Module.................................................................13

4.1. Biểu đồ UML các module..........................................................13
V. Các thuật toán sử dụng................................................................13
5.1. Hàm lượng giá cho tồn bộ bàn cờ..........................................13
5.2. Thuật tốn Minimax và cắt tỉa alpha beta...............................14
VI.

Những khó khăn gặp phải..........................................................14

Phụ lục hình ản


Báo cáo tiến độ bài tập lớn nhóm 3

Hình
Hình
Hình
Hình
Hình
Hình
Hình

1
2
3
4
5

6
7

Sơ đồ User-Case......................................................................6
Giao diện chơi chính...............................................................7
Giao diện khi chiến thắng.....................................................8
Giao diện khi thua cuộc.........................................................9
Thanh công cụ chức năng.....................................................9
Menu trợ giúp........................................................................11
Biểu đồ UML các module.....................................................13


Báo cáo tiến độ bài tập lớn nhóm 3

Chương I : Giới thiệu
I.

Giới thiệu game Cờ Caro
Trò chơi cờ caro là một trị chơi quen thuộc nên có thể nhiều
người cho rằng xây dựng một phần mềm trò chơi tương tác giữa
người và máy là điều khơng q khó khăn. Tuy nhiên điều đó
khơng hồn tồn đúng, trị chơi cờ caro là một trị chơi trí tuệ và nó
địi hỏi người chơi phải có tư duy cao và khả năng phán đốn tình
huống tốt. Thực thế cho thấy rằng khơng phải ai cũng có thể chơi
giỏi trị chơi này vì thế việc xây dựng một chương trình có khả
năng “chơi” với người khác mà dành được chiến thắng đòi hỏi hệ
thống phải được lập trình để có thể tư duy và phán đoán giống như
một con người thật và hệ thống như vậy được gọi là hệ thống có trí
thơng minh nhân tạo.


II.

Ý tưởng và phân chia công việc
-

Xây dựng game Cờ Caro bằng công cụ NetBean với ngôn ngữ

-

lập trình Java.
Luật chơi:
 Xây dựng bàn cờ kẻ các ơ vng với kích thước 20x20, có 2
qn cờ là X và O.
 Người chơi có thể đánh với máy hoặc hai người chơi với
nhau.
 Người thắng là người đi được 5 quân cờ theo kiểu ngang,
dọc, hoặc đường chéo.
 Hai người hòa nhau khi bàn cờ hết chỗ mà vẫn chưa phân

-

biệt được thắng bại.
Phân chia công việc :
 Nguyễn Văn Phương: Thiết kế giao diện và xử lý sự kiện click
chuột.


Báo cáo tiến độ bài tập lớn nhóm 3

 Nguyễn Văn Sơn: Tìm hiểu và code các thuật tốn sử dụng

trong game.

Chương II: Phân tích và thiết kế game
I. Yêu cầu của phần mềm
-

-

Yêu cầu chức năng:
 Phần mềm chạy ổn định, mượt mà.
 Tốc độ xử lý nhanh.
 Việc cài đặt và sử dụng phần mềm đơn giản, không u cầu
máy phải có cấu hình cao.
u cầu phi chức năng
 Giao diện xử lý bắt mắt nhưng không quá cầu kì, giúp người
chơi thoải mái khi sử dụng.
 Phần mềm dễ dàng bảo trì, sửa chữa khi gặp lỗi.

II. Yêu cầu với người chơi
-

Game Caro đa phổ biến với rất nhiều người, với nhiều phiên bản
game được đưa ra, ở đây em xây dựng game Caro này phù hợp

-

với nhiều đối tượng người chơi.
Chế độ “Chơi với máy“, người chơi lựa chọn thứ tự chơi với máy

-


và mức độ khó của ván chơi.
Người chơi có thể chọn các chức năng của game như: tạo ván
mới, trở về nước đi trước hoặc sau.


Báo cáo tiến độ bài tập lớn nhóm 3

III. Sơ đồ User-Case

Hình 1 Sơ đồ User-Case

IV.Thiết kế giao diện
3.1. Giao diện.
-

Phần mềm với thiết kế giao diện đơn giản, rõ ràng giúp người
chơi dễ sử dụng và thực hiện các thao tác chơi, trong q trình
chơi, game được tính hợp thêm các âm thanh, hình ảnh, giúp
người chơi có những phút thư giãn, thoải mái.


Báo cáo tiến độ bài tập lớn nhóm 3

-

Một số hình ảnh của game cờ Caro:

Hình 2 Giao diện chơi chính



Báo cáo tiến độ bài tập lớn nhóm 3

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


Báo cáo tiến độ bài tập lớn nhóm 3

Hình 4 Giao diện khi thua cuộc

-

Giao diện với 2 thành phần chính : Giao diện chức năng và giao

-

diện người chơi.
Thanh công cụ chức năng bao gồm : menu chức năng và menu
trợ giúp người chơi.

Hình 5 Thanh cơng cụ chức năng


Báo cáo tiến độ bài tập lớn nhóm 3

 Thanh cơng cụ chức năng gồm có :
 Menu Game: tạo ra một ván mới và thốt trị chơi.




Menu Turn: Người chơi chọn lượt đi trước hoặc sau máy.

 Menu Level: Người chơi chọn mức độ khó của trị chơi.

 Menu Help: Cung cấp cho người chơi các chơi game và
thông tin nhóm phát triển game.

 Menu trợ giúp gồm có : Các nút bấm nhanh hỗ trợ tốt hơn
cho người chơi
trong quá trình chơi game như: Tạo nhanh ván mới , chọn
lượt đi , đánh lại. Tạo sự thuận tiện cho người chơi. Menu
cũng thể hiện mức độ khó của trị chơi giúp người chơi
chọn được mức độ khó phù hợp với trình độ của mình.

Hình 6 Menu trợ giúp


Báo cáo tiến độ bài tập lớn nhóm 3

-

Bàn cờ: được thiết kế với kích thước 20x 20 ơ, mỗi ơ có diện
tích 30x30 pixel. Kích thước như vậy là vừa phải cho người chơi
có thể thao tác cũng như quan sát để suy nghĩ nước cờ, tránh
nhầm lẫn trong các bước đi. Nếu màu nền bàn cờ là một màu
đơn sắc sang sủa và các quân cờ màu đậm, giúp người chơi dễ
dàng phân biệt được quân cờ trong q trình chơi.

-


Mỗi khi thắng hoặc thua sẽ có nhạc và hình ảnh minh họa hài
hước, hấp dẫn làm cho game hấp dẫn hơn , người chơi được
thoải mái khi chơi và làm cho người chơi có hứng chơi tiếp dù
thua hay thắng.

3.2. Chức năng và cách sử dụng.
-

Bất kì game nào cũng cần có chức năng hỗ trợ cho người chơi,
giúp người chơi xử lý khi chơi game được thuận tiện, dễ dàng
hơn. Sản phầm “Cờ Caro” cũng phát triển các chức năng cần
thiết để trị chơi hồn chỉnh và tạo sự thân thiện cũng như hỗ
trợ tốt nhất cho nhu cầu của người chơi đối với sản phẩm của

-

chúng em.
Game có những chức năng chính như sau:
 Chơi ván mới: Khi một ván đấu kết thúc hoặc bàn cờ đã kín
mà ván chơi kết thúc mà vẫn chưa phân được thằng thua thì
cần tạo ra một ván mới để chơi tiếp. Người chơi có thể tạo
ra một ván mới bằng cách click vào “Game “ sau đó chọn
“New Game” hoặc click vào biểu tượng

trên thanh công

cụ để tạo nhanh một ván mới.
 Lựa chọn lượt đi: Người chơi có thể lựa chọn lượt đi trước
hoặc sau máy tùy ý, người choi có thể lựa chọn lượt chơi



Báo cáo tiến độ bài tập lớn nhóm 3

bằng cách click vào “Turn“ rồi lựa chọn hoặc click vào biểu
tượng setting

để lựa chọn nhanh hơn.

 Chọn mức độ chơi: trò chơi gồm có 5 mức độ chơi khác
nhau, người chơi có thể chọn các mức độ phù hợp với trình
độ của mình và cũng có thể thử sức với các mức rất khó. Để
chọn mức độ khó của, người chơi có thể click vào menu
“Level” trên thanh cơng cụ để lựa chọn.
 Hướng dẫn cách chơi: tuy đây là trò chơi đơn giản và vô
cùng gần gũi với hầu hết tất cả mọi người, nhưng cũng
khơng tránh khỏi có những người chơi lần đầu tiên hoặc là
luật chơi của mỗi nơi có sự khác nhau nhất định trong cách
chơi, chính vì vậy cần phải hướng dẫn luật chơi để người
chơi có thể nắm bắt tránh sự nhầm lẫn khi chơi. Người chơi
có thể xem hướng dẫn chơi bằng cách click vào menu
“Help” và chọn “Rule” để xem hướng dẫn. Trong menu
“Help” có thêm mục “Information” cung cấp thơng tin tác
giả nếu người chơi muốn liên hệ đóng góp những ý kiến để
game có thể hồn thiện hơn.
 Undo game: khi chơi người chơi có thể tính tốn nhầm nước
đi hay vơ tình nhấn chuột tạo thành một nước đi khơng như
ý, chính vì vậy chức năng undo sẽ giúp người chơi có thể
loại bỏ các nước đi khơng như ý và thay vào đó là một nước
đi khác mà người chơi muốn. Người chơi cũng có thể undo 1
lần hoặc nhiều lần tùy ý. Để sử dụng chức năng undo người

chơi có thể nhấn vào biểu tượng undo
hỗ trợ.

trên thanh menu


Báo cáo tiến độ bài tập lớn nhóm 3

IV.Xây dựng các Module
4.1. Biểu đồ UML các module.

Hình 7 Biểu đồ UML các module

V. Các thuật toán sử dụng.
5.1. Hàm lượng giá cho tồn bộ bàn cờ.
-

Hàm tính điểm cho tồn bộ bàn cờ bằng cách sử dụng một xâu
lưu trữ các hàng, cột và đường chéo các kí tự, sau đó đếm các
trường hợp có trong xâu đó số điểm của bàn cờ tại thời điểm
xét sẽ được tính như sau:
 Sẽ có 2 loại điểm tương ứng với X và O, với các trường hợp
giống nhau thì điểm của X và O là như nhau. Giả sử O là


Báo cáo tiến độ bài tập lớn nhóm 3

máy, X là người chơi, điểm của bàn cờ sẽ bằng: trường hợp
o1*n1 + trường hợp o2*n2 +... - trường hợp x1*n3 - trường
hợp x2*n4 -..... (với n là số lần xuất hiện của một trường

hợp).
 Điểm càng dương tức là lợi thế đang nghiêng về máy, ngược
-

lại nếu điểm càng âm thì lợi thế càng nghiêng về người chơi.
Điểm càng dương tức là lợi thế đang nghiêng về máy, ngược lại
nếu điểm càng âm thì lợi thế càng nghiêng về người chơi.

5.2. Thuật toán Minimax và cắt tỉa alpha beta.
-

Đây là thuật tốn chính làm lên trí tuệ nhân tạo cho chương
trình và tạo ra các mức độ khó khác nhau cho người chơi. Giả
sử máy tính sẽ là max, người chơi là min, mỗi khi tới lượt đánh
của người chơi, người chơi sẽ cố gắng làm sao để điểm của bàn
cờ nghiêng về mình nhiều nhất có thể (âm nhất có thể) ngược
lại đến lượt máy tính thì muốn điểm của bàn cờ là dương nhất
có thể để dẫn đến chiến thắng, từ đó với một độ sâu cho trước,
mỗi khi tới lượt máy tính đánh máy lại duyệt trước số nước đi
bằng với độ sâu nhằm tìm ra nước đi khiến điểm sau các nước

-

đi đó đạt cực đại hoặc đạt được chiến thắng.
Thuật toán cắt tỉa alpha beta được xây dựng dựa trên ý tưởng
là nếu một nhánh tìm kiếm nào đó khơng thể cải thiện đối với
giá trị mà chúng ta đã tính ở một nhánh khác thì ta khơng cần
xét đến nhánh tìm kiến đó nữa. Ở đây, ta sử dụng hai biến giá
trị là alpha và beta để so sánh giá trị. alpha là giá trị của nước
đi tốt nhất đối với Max tính tới thời điểm hiện tại của nhánh tìm

kiếm, nếu một nhánh có giá trị tồi hơn alpha thì Max sẽ bỏ qua
nước đi ứng với nhánh đó. Beta được định nghĩa tương tự đối
với hàm Min.


Báo cáo tiến độ bài tập lớn nhóm 3

VI. Những khó khăn gặp phải.
-

Trong q trình thiết kế, chúng em đã gặp phải rất nhiều khó
khăn như ban đầu ý tưởng chỉ là thiết kế hàm lượng giá cho toàn
bộ bàn cờ sau đó sử dụng thuật tốn minimax kết hợp alphabeta
để tìm nước đi tiếp theo, tuy nhiên do không loại bỏ bớt các ô cần
duyệt lúc đầu nên chương trình chạy rất chậm, rất lâu đề tìm

-

được một nước mới, trong khi đó độ xâu khơng phải là quá lớn.
Phần thiết kế giao diện chúng em vẫn chưa hồn thiện một cách
hồn chỉnh được. Vẫn cịn nhiều lỗi nhỏ, chúng em sẽ cố gắng tìm
cách khắc phục trong các tuần tiếp theo.



×