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

BÁO CÁO TIẾN ĐỘ BÀI TẬP LỚN java , Xây dựng game Cờ Caro bằng công cụ NetBean với ngôn ngữlập trình 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 (315.72 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


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

Phụ lục hình ảnh


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

Chương I : Giới thiệu
Giới thiệu game Cờ Caro

I.

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 quá khó khăn. Tuy nhiên điều đó
không hoàn toà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 đoá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.

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

II.
-

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 ô vuông với kích thước 20x20, có 2
quân 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 toán sử dụng

trong game.

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

I.
-

-

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 yêu cầu
máy phải có cấu hình cao.
Yê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.

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

II.
-

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 quá 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à thoá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 quá 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 hoà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ể hoàn thiện hơn.
 Undo game: khi chơi người chơi có thể tính toá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 toàn bộ bàn cờ.
-

Hàm tính điểm cho toà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 toá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 quá 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 toá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 hoàn thiện một cách
hoà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.



×