Tải bản đầy đủ (.pdf) (34 trang)

CT239 NIÊN LUẬN CƠ SỞ GAME SUDOKU THUẬT TOÁN VÉT CẠN QUAY LUI

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 (1.25 MB, 34 trang )

KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BỘ MÔN CÔNG NGHỆ PHẦN MỀM

NIÊN LUẬN CƠ SỞ NGÀNH KTPM

TRÒ CHƠI SUDOKU SỬ DỤNG THUẬT TOÁN
VÉT CẠN

Sinh viên thực hiện

Giảng viên hướng dẫn

Họ tên: Trương Phúc Vĩnh

Ths. Phan Huy Cường

MSSV: B1906809
Lớp: DI1996A5

HỌC KỲ II, 2021-2022


NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................


...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................

Khoa CNTT&TT, Đại học Cần Thơ

i


MỤC LỤC
CHƯƠNG 1. TỔNG QUAN ......................................................................................... 1
I. MÔ TẢ BÀI TOÁN ...........................................................................................1
II. MỤC TIÊU CẦN ĐẠT ĐƯỢC..........................................................................1

III. HƯỚNG GIẢI QUYẾT .....................................................................................1
IV. KẾ HOẠCH THỰC HIỆN .................................................................................2
CHƯƠNG 2. LÝ THUYẾT ........................................................................................... 3
I. KHÁI NIỆM ĐƯỢC SỬ DỤNG .......................................................................3
2.1.1 Trò chơi sudoku là gì? .................................................................................3
2.1.2 Thuật tốn vét cạn ........................................................................................3
2.1.3 Khái niệm JVM ............................................................................................3
2.1.4 Mơ hình MVC ..............................................................................................3
II. KẾT QUẢ VẬN DỤNG LÝ THUYẾT VÀO ĐỀ TÀI .....................................4
CHƯƠNG 3. ỨNG DỤNG............................................................................................ 7
I. PHÂN TÍCH U CẦU BÀI TỐN ................................................................7
3.1.1 u cầu chức năng .......................................................................................7
3.1.2 Yêu cầu phi chức năng ...............................................................................10
3.1.3 Yêu cầu phần mềm ....................................................................................10
II. XÂY DỰNG CẤU TRÚC DỮ LIỆU ..............................................................10
3.2.1 Tổ chức dữ liệu cần thiết ...........................................................................10
3.2.2 Thiết kế giải thuật ......................................................................................14
III. GIỚI THIỆU CHƯƠNG TRÌNH .....................................................................18
IV. QUY TRÌNH SỬ DỤNG .................................................................................21
CHƯƠNG 4. KẾT LUẬN ĐÁNH GIÁ ...................................................................... 22
I. KẾT QUẢ ĐẠT ĐƯỢC ...................................................................................22
II. HẠN CHẾ ........................................................................................................22
III. HƯỚNG PHÁT TRIỂN ...................................................................................22
PHỤ LỤC ...................................................................................................................... 23
I. CÀI ĐẶT ỨNG DỤNG ...................................................................................23
II. HƯỚNG DẪN SỬ DỤNG ...............................................................................23
TÀI LIỆU THAM KHẢO ............................................................................................. 29
Khoa CNTT&TT, Đại học Cần Thơ

ii



DANH MỤC HÌNH
Hình 2.1: Minh họa chu trình thực hiện của chương trình Java ......................................3
Hình 3.1: Sơ đồ usecase của ứng dụng ............................................................................7
Hình 3.2: Tổ chức cấu trúc dữ liệu gói Model ..............................................................11
Hình 3.3: Tổ chức cấu trúc dữ liệu gói View ................................................................ 12
Hình 3.4: Tổ chức dữ liệu gói Controller ......................................................................13
Hình 3.5: Lưu đồ thuật tốn tự sinh ngẫu nhiên các ơ số ..............................................15
Hình 3.6: Lưu đồ thuật tốn vét cạn để giải ơ số...........................................................17
Hình 3.7: Giao diện sảnh trị chơi..................................................................................18
Hình 3.8: Giao diện chọn cấp độ ...................................................................................19
Hình 3.9: Giao diện bàn cờ ............................................................................................19
Hình 3.10: Giao diện xem xếp hạng ..............................................................................20
Hình 3.11: Giao diện xem giới thiệu .............................................................................20
Hình 3.12: Quy trình sử dụng các chức năng chính của ứng dụng ...............................21

Khoa CNTT&TT, Đại học Cần Thơ

iii


DANH MỤC BẢNG
Bảng 1.1: Kế hoạch thực hiện đề tài................................................................................2
Bảng 3.1: Yêu cầu chức năng hiển thị xếp hạng .............................................................7
Bảng 3.2: Yêu cầu chức năng xem giới thiệu..................................................................8
Bảng 3.3: Yêu cầu chức năng điền giá trị vào ô số .........................................................8
Bảng 3.4: Yêu cầu chức năng chọn cấp độ câu đố ..........................................................8
Bảng 3.5: Yêu cầu chức năng quay lại ............................................................................9
Bảng 3.6: Yêu cầu chức năng xem lời giải......................................................................9

Bảng 3.7: Yêu cầu chức năng cảnh báo trùng số ............................................................9
Bảng 3.8: Yêu cầu chức năng lưu thời gian giải ...........................................................10

Khoa CNTT&TT, Đại học Cần Thơ

iv


Trị chơi Sudoku sử dụng thuật tốn vét cạn

CHƯƠNG 1.

Chương 1

TỔNG QUAN

I. MƠ TẢ BÀI TỐN
Trong thời đại ngày nay có rất nhiều các ứng dụng, các trị chơi được ra đời. Tuy nhiên,
vẫn có một trị chơi tuy đã xuất hiện khá lâu, và không quá cuồng nhiệt, bùng nổ nhưng
vẫn đem lại một sức hút lạ thường bởi chính sự đơn giản và lơi cuốn của nó, đó là trò
chơi Sudoku. Sudoku là một trò chơi đòi hỏi sự tư duy logic, cùng với đó là tính kiên trì
và sự tập trung cao độ của người chơi.
Xuất hiện ở Việt Nam khoảng giữa năm 2005, nhưng nó đã chiếm lĩnh một vị trí quan
trọng trong thị trường trị chơi giải trí ở nước ta và được thế hệ trẻ rất u thích. Ngồi
sự hấp dẫn của những con số, sự kích thích tư duy, suy nghĩ logic, Sudoku cịn hấp dẫn
giới trẻ vì một lý do nữa là có thể chơi được mọi lúc mọi nơi, trên xe buýt, trong giờ ra
chơi, thậm chí khi đi du lịch. Trước đây, khi cơng nghệ cịn chưa phát triển người chơi
Sudoku thường chơi theo cách truyền thống đó là trên các quyến sách, quyển vở, hay
trên báo chí thì ngày nay khi mà hầu như mỗi nhà, mỗi gia đình đều có trang bị một
chiếc máy tính nên việc chơi Sudoku trở nên vô cùng dễ dàng, và tiện lợi. Vì thế, việc

xây dựng một ứng dụng trị chơi để sử dụng trên máy tính là rất cần thiết. Để xây dựng
được ứng dụng đó thì việc lựa chọn một thuật tốn, một giải pháp để tạo ra ơ số cho trị
chơi và hỗ trợ giải các ơ số đó và vơ cùng quan trọng. Có nhiều thuật tốn có thể dùng
cho việc xây dựng ứng dụng Sudoku tuy nhiên thuật tốn được áp dụng ở đây đó chính
là thuật toán vét cạn. Thuật toán này được áp dụng cho việc sinh ngẫu nhiên ô số và hỗ
trợ giải câu đố.
II. MỤC TIÊU CẦN ĐẠT ĐƯỢC
Nắm bắt được vấn đề cần giải quyết cùng với mong muốn ứng dụng những kiến thức đã
học vào trong thực tiễn. Do đó mục tiêu của đề tài này là xây dựng một trò chơi đơn
giản và vận dụng được các kiến thức đã học. Bên cạnh đó trị chơi cần có giao diện đồ
họa cho phép người dùng giải thủ công ô số và cung cấp các tiện ích hỗ trợ giải trị chơi
Sudoku. Ngồi ra cần có chức năng nhập số và tự sinh ơ số cho bàn cờ Sudoku. Đặc biệt
trị chơi cần phải áp dụng được thuật toán vét cạn vào trong đề tài để giải ô số.
III. HƯỚNG GIẢI QUYẾT
Sử dụng mảng hai chiều 9x9 để lưu các ô số của bàn cờ Sudoku. Bước đầu tạo bàn cờ
Sudoku bằng cách chọn ngẫu nhiên các con số từ 1 đến 9 để điền vào từng ô số ở hàng
và cột tương ứng trong mảng 2 chiều 9x9. Nếu một số khơng thỏa điều kiện thì sẽ lặp
lại việc sinh số ngẫu nhiên. Giao diện đồ họa người dùng được xây dựng bằng Java
Swing, thân thiện, dễ sử dụng.

Khoa CNTT&TT, Đại học Cần Thơ

1


Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 1

IV. KẾ HOẠCH THỰC HIỆN

Để thực hiện đề tài cần lập ra một kế hoạch cho từng công việc để đảm bảo hoàn thành
đúng thời hạn. Sau đây là bảng kế hoạch được thiết kế cho đề tài (Bảng 1.1):
Bảng 1.1: Kế hoạch thực hiện đề tài
STT

Công việc thực hiện

Thời gian thực hiện

1

Xác định yêu cầu, phân tích các yêu cầu cần thiết.
tìm kiếm tài liệu liên quan về trị chơi Sudoku

Tuần 1 - 2

2

Củng cố kiến thức về thuật toán “vét cạn” và
nghiên cứu cách vận dụng vào đề tài

Tuần 3 - 4

3

Thiết kế giao diện, mơ hình tổng thể về ứng dụng,
và chức năng của ứng dụng

Tuần 5 - 6


4

Lập trình về thuật tốn của ứng dụng

Tuần 7 – 11

5

Lập trình về giao diện đồ họa của ứng dụng

Tuần 12 - 14

6

Kiểm thử ứng dụng và hoàn thiện báo cáo

Tuần 15 - 18

Khoa CNTT&TT, Đại học Cần Thơ

2


Trị chơi Sudoku sử dụng thuật tốn vét cạn

CHƯƠNG 2.

Chương 2

LÝ THUYẾT


I. KHÁI NIỆM ĐƯỢC SỬ DỤNG
2.1.1 Trò chơi sudoku là gì?
Trị chơi Sudoku ban đầu có tên là Number Place là trò chơi sắp xếp chữ số dựa trên
logic theo tổ hợp. Mục tiêu của trò chơi là điền các chữ số vào một lưới 9×9 sao cho
mỗi cột, mỗi hàng, và mỗi phần trong số chín lưới con 3×3 tất cả các chữ số từ 1 đến 9.
Điều kiện là chữ số được điền vào không xuất hiện 2 lần trong cùng một hàng, một cột
hoặc trong lưới con 3x3. Bàn cờ đã được điền một số ô, nhiệm vụ của người chơi là tiếp
tục điền số vào các ô trống cho đến khi tất cả các ô đều được điền các giá trị thỏa mãn.
2.1.2 Thuật toán vét cạn
Thuật toán “vét cạn” là một trong số các kỹ thuật quay lui. Do đó trước khi tìm hiểu về
thuật toán vét cạn cần biết thế nào là kỹ thuật quay lui. Kỹ thuật quay lui (backtracking)
là một quá trình phân tích đi xuống và quay lui trở lại theo con đường đã đi qua. Khi
chưa tìm thấy điểm dừng thì chúng ta tiếp tục phân tích đi xuống. Nếu tìm thấy được
điểm dừng hay có thể hiểu là một nơi xác định được lời giải, hoặc xác định được khơng
thể (hoặc khơng nên) tiếp tục phân tích theo hướng này nữa, thì lúc đó chúng ta sẽ quay
ngược lại theo con đường vừa đi qua để tìm một hướng phân tích khác thích hợp hơn.
Đối với thuật tốn “vét cạn” thì sẽ khơng xác định là nên hay khơng nên tiếp tục mà sẽ
ln phân tích cho đến khi đi đến tất cả các điểm dừng và xác định được là khơng thể
tiếp tục thì mới thực hiện quay lui trở lại theo con đường đã đi qua. Thuật tốn “vét cạn”
là một kỹ thuật rất hay vì nó sẽ đi qua hết tất cả các trường hợp để tìm ra lời giải, do đó
đảm bảo cho ra lời giải chính xác nhất.
2.1.3 Khái niệm JVM
JVM (Java Virtual Machine ) là một máy ảo Java được dùng để chuyển mã byte code
(.class) thành mã máy tương ứng (.exe) để thực thi trên các hệ điều hành và các kiến
trúc CPU khác nhau. Máy ảo này chứa các tập lệnh logic để xác định các hoạt động của
máy tính, được xem như một hệ điều hành thu nhỏ.
Source code

JDK


Byte code

JVM

Mã thực hiện

.java

Biên dịch

.class

Thơng dịch

.exe

Hình 2.1: Minh họa chu trình thực hiện của chương trình Java
2.1.4 Mơ hình MVC
Mơ hình MVC là một mẫu thiết kế nhằm tách biệt logic ứng dụng khỏi giao diện người
dùng. Chia một ứng dụng thành ba phần tương tác được với nhau, mỗi thành phần có

Khoa CNTT&TT, Đại học Cần Thơ

3


Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 2


một nhiệm vụ riêng biệt và độc lập với các thành phần khác, để dễ quản lý, phát triển và
bảo trì. Ba phần đó là:
• Model: quản lý, xử lý dữ liệu
• View: giao diện, xác định cách trình bày của ứng dụng
• Controller: quản lý tương tác giữa Model và View.
II. KẾT QUẢ VẬN DỤNG LÝ THUYẾT VÀO ĐỀ TÀI
Dựa trên những kiến thức đã học về thuật toán “vét cạn” để áp dụng vào việc giải một
câu đố bàn cờ Sudoku cụ thể như sau:
4

7

2

9

8

3

9

6

7

4

1


5

8

3

6

1

4

8

5

2

5

4

7

8

3

1


2

2

6

1

5

8

3

7

5

4

9

9

3

6

5


5

1

8

2

2

9

4

7

2

9

3

3

8

1

6


9

7

5

4

3

4

7

9

6

9

5

2

1

2

1


6

3

8

7

Cần điền vào tất cả các ô trống các giá trị từ 1 đến 9 và thỏa cả ba điều kiện:
1) Không trùng với số đã có trong hàng.
2) Khơng trùng với số đã có trong cột.
3) Không trùng với lưới con 3x3 trong bàn cờ 9x9.
Mô tả phương pháp giải: Vận dụng kiến thức về thuật tốn “vét cạn” ta sẽ duyệt qua
từng ơ số trên bàn cờ. Nếu ơ số đã có giá trị thì bỏ qua, nếu ơ số trống thì thực hiện chọn
một số một số nhỏ nhất trong khoảng từ 1 đến 9 để điền vào ô trống nếu số được chọn
thỏa cả ba điều kiện của đề bài thì duyệt ô kế tiếp. Nếu không thỏa một trong ba điều
kiện thì thực hiện tăng giá trị số được chọn lên một đơn vị. Kiểm tra lại xem có thỏa
điều kiện hay khơng. Nếu thỏa thì duyệt ơ kế tiếp. Nếu khơng thỏa thì tiếp tục tăng giá
trị số được chọn lên đến khi giá trị được chọn là số 9 mà vẫn khơng thỏa mãn điều kiện
thì thực hiện quay lui về ô vừa duyệt trước và tiếp tục tăng giá trị lên và kiểm tra điều
kiện. Tiếp tục như vậy cho đến khi tất cả các ô đều được điền các giá trị thỏa mãn điều
kiện.
Khoa CNTT&TT, Đại học Cần Thơ

4


Trị chơi Sudoku sử dụng thuật tốn vét cạn


Chương 2

Giải chi tiết:
Ta đặt matrix[i][j] tương ứng với ô ở hàng i và cột j, i và j có giá trị từ 0 đến 8. Đặt k là
giá trị được chọn để điền vào ô trống, k nhận giá trị từ 1 đến 9.
Duyệt ơ matrix[0][5]:
• K=1 => Thỏa điều kiện => Duyệt ơ trống kế tiếp
Duyệt ơ matrix[3][0]:







K=1 => Khơng thỏa điều kiện
K=2 => Không thỏa điều kiện
K=3 => Không thỏa điều kiện
K=4 => Không thỏa điều kiện
K=5 => Không thỏa điều kiện
K=6 => Thỏa điều kiện => Duyệt ô trống kế tiếp

Duyệt ơ matrix[3][5]:











K=1 => Khơng thỏa điều kiện
K=2 => Không thỏa điều kiện
K=3 => Không thỏa điều kiện
K=4 => Không thỏa điều kiện
K=5 => Không thỏa điều kiện
K=6 => Không thỏa điều kiện
K=7 => Không thỏa điều kiện
K=8 => Không thỏa điều kiện
K=9 => Không thỏa điều kiện => Quay lui

Quay lui về ơ matrix[3][0]:
• K=7 => Thỏa điều kiện => Duyệt ơ trống kế tiếp
Duyệt ơ matrix[3][5]:







K=1 => Không thỏa điều kiện
K=2 => Không thỏa điều kiện
K=3 => Không thỏa điều kiện
K=4 => Không thỏa điều kiện
K=5 => Không thỏa điều kiện
K=6 => Thỏa điều kiện => Duyệt ơ trống kế tiếp


Duyệt ơ matrix[5][0]:
• K=1 => Khơng thỏa điều kiện
• K=2 => Khơng thỏa điều kiện
Khoa CNTT&TT, Đại học Cần Thơ

5


Trị chơi Sudoku sử dụng thuật tốn vét cạn






Chương 2

K=3 => Không thỏa điều kiện
K=4 => Không thỏa điều kiện
K=5 => Không thỏa điều kiện
K=6 => Thỏa điều kiện => Duyệt ơ trống kế tiếp

Duyệt ơ matrix[6][5]:










K=1 => Khơng thỏa điều kiện
K=2 => Không thỏa điều kiện
K=3 => Không thỏa điều kiện
K=4 => Không thỏa điều kiện
K=5 => Không thỏa điều kiện
K=6 => Không thỏa điều kiện
K=7 => Không thỏa điều kiện
K=8 => Thỏa điều kiện => Duyệt ô trống kế tiếp

Duyệt ơ matrix[7][5]:





K=1 => Khơng thỏa điều kiện
K=2 => Không thỏa điều kiện
K=3 => Không thỏa điều kiện
K=4 => Thỏa điều kiện => Duyệt ô trống kế tiếp

=> Tất cả các ô đều đã được điền các giá trị thỏa mãn điều kiện.
=> Kết thúc quá trình giải câu đố Sudoku, bàn cờ Sudoku sau khi giải:
4

7

2


9

8

1

3

6

5

3

9

6

7

4

5

1

8

2


1

5

8

3

6

2

9

4

7

7

1

4

8

5

6


2

9

3

9

2

5

4

7

3

8

1

6

6

8

3


1

2

9

7

5

4

2

6

1

5

3

8

4

7

9


8

3

7

6

9

4

5

2

1

5

4

9

2

1

7


6

3

8

Khoa CNTT&TT, Đại học Cần Thơ

6


Trị chơi Sudoku sử dụng thuật tốn vét cạn

CHƯƠNG 3.

Chương 3

ỨNG DỤNG

I. PHÂN TÍCH U CẦU BÀI TỐN
3.1.1 u cầu chức năng
Để đáp ứng mục đích giải trí của người dùng, ứng dụng được xây dựng có các chức
năng quan trọng để hỗ trợ cho người dùng trong quá trình sử dụng. Các chức năng này
sẽ góp phần đem lại những sự trải nghiệm thú vị cho người chơi. Dưới đây là các chức
năng của ứng dụng được thể hiện trong sơ đồ usecase (Hình 3.1).

Hình 3.1: Sơ đồ usecase của ứng dụng
Yêu cầu chức năng hiển thị xếp hạng
Bảng 3.1: Yêu cầu chức năng hiển thị xếp hạng
Mã yêu cầu


REQ01

Mơ tả

Người dùng xem những người có thời gian hồn thành việc giải câu
đố nhanh nhất, phân theo từng cấp độ của trò chơi.

Đầu vào

Người dùng chọn vào “High Score” trên giao diện.

Xử lý

Lấy dữ liệu về tên, thời gian giải, cấp độ câu đố trên CSDL của nhóm
ba người chơi dẫn đầu bảng xếp hạng ở mỗi cấp độ câu đố.

Kết quả

Hiển thị nhóm ba người chơi dẫn đầu ở mỗi cấp độ câu đố.

Khoa CNTT&TT, Đại học Cần Thơ

7


Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 3


u cầu chức năng xem giới thiệu
Bảng 3.2: Yêu cầu chức năng xem giới thiệu
Mã yêu cầu

REQ02

Mô tả

Người dùng xem các thông tin về người thực hiện ứng dụng, thời gian
ra mắt của ứng dụng, phiên bản, mô tả ứng dụng.

Đầu vào

Người dùng chọn vào “Introduction” trên giao diện

Xử lý

Lấy dữ liệu về người thực hiện ứng dụng, thời gian ra mắt của ứng
dụng, phiên bản, mô tả ứng dụng.

Kết quả

Hiển thị giới thiệu lên giao diện.

Yêu cầu chức năng điền giá trị vào ô số
Bảng 3.3: Yêu cầu chức năng điền giá trị vào ô số
Mã yêu cầu

REQ03


Mô tả

Điền giá trị vào ô số

Đầu vào

Người dùng chọn một ô số bất kỳ sau đó nhập từ bàn phím hoặc chọn
số trên giao diện.

Xử lý

Lấy số người dùng vừa nhập hoặc chọn gán cho ô số vừa chọn để
điền giá trị.

Kết quả

Ô số được chọn hiển thị giá trị mà người dùng điền vào

Yêu cầu chức năng chọn cấp độ câu đố
Bảng 3.4: Yêu cầu chức năng chọn cấp độ câu đố
Mã yêu cầu

REQ04

Mô tả

Chọn cấp độ để tự sinh câu đố

Đầu vào


Người dùng chọn vào “Start game” trên giao diện

Xử lý

Kết quả





Nếu chọn “Easy” tự sinh câu đố ở cấp độ dễ.
Nếu chọn “Normal” tự sinh câu đố ở cấp độ trung bình.
Nếu chọn “Hard” tự sinh câu đố ở cấp độ khó.

Hiển thị câu đố ở cấp độ mà người dùng đã chọn.

Khoa CNTT&TT, Đại học Cần Thơ

8


Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 3

u cầu chức năng quay lại
Bảng 3.5: Yêu cầu chức năng quay lại
Mã yêu cầu

REQ05


Mô tả

Quay lại lượt điền ô số trước hoặc trạng thái câu đố ban đầu.

Đầu vào

Người dùng chọn vào “Undo” hoặc “Clear” trên giao diện
Nếu người dùng chọn “Undo” sẽ thực hiện xóa giá trị tại ơ số mà
người dùng vừa mới điền giá trị

Xử lý

Kết quả

Nếu người dùng chọn “Clear” sẽ lấy lại câu đố ban đầu hiển thị lên
giao diện.
Cập nhật lại trạng thái các ô số

Yêu cầu chức năng xem lời giải
Bảng 3.6: Yêu cầu chức năng xem lời giải
Mã yêu cầu

REQ06

Mô tả

Xem lời giải cho câu đố

Đầu vào


Người dùng chọn “Solve” trên giao diện

Xử lý

Sử dụng thuật tốn vét cạn để tìm lời giải cho câu đố.

Kết quả

Hiển thị lời giải của câu đố ra màn hình giao diện

Yêu chức năng cảnh báo trùng số
Bảng 3.7: Yêu cầu chức năng cảnh báo trùng số
Mã yêu cầu

REQ07

Mô tả

Cảnh báo nếu điền số bị trùng lặp

Đầu vào

Người dùng chọn một ô số bất kỳ và điền vào giá trị

Xử lý

Kiểm tra giá trị được điền có bị trùng lặp ở hàng, cột hoặc lưới con
3x3 của bàn cờ 9x9 hay khơng. Nếu có thì hiển thị ô số bị trùng lặp.


Kết quả

Hiển thị ô số chứa giá trị trùng lặp

Khoa CNTT&TT, Đại học Cần Thơ

9


Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 3

u cầu chức năng lưu thời gian giải
Bảng 3.8: Yêu cầu chức năng lưu thời gian giải
Mã yêu cầu

REQ08

Mô tả

Lưu thời gian hoàn thành giải câu đố

Đầu vào

Người dùng giải xong câu đố. Giao diện hiển thị hộp thoại “Save
result?”. Chọn “OK”. Sau đó nhập tên vào.

Xử lý


Lấy tên người dùng vừa nhập và thời gian hoàn thành giải câu đố lưu
vào CSDL.

Kết quả

Lưu thời gian hoàn thành giải câu đố vào CSDL

3.1.2 Yêu cầu phi chức năng
Yêu cầu phần cứng tối thiểu đối với máy tính:
• RAM: Tối thiểu 128 MB
• Ổ cứng: Cịn trống ít nhất 256MB
• Vi xử lí: 32-bit (x86) hoặc 64-bit (x64) có tốc độ 1 GHz trở lên.
3.1.3 Yêu cầu phần mềm
Yêu cầu phần mềm cần thiết để chạy ứng dụng:
• Hệ điều hành: Windows (Phiên bản: 7 trở lên), Linux (Phiên bản: Ubuntu, Linux
Mint, Debian,…)
• JDK 8 (Java Development Kit 8) trở lên.
• JRE 1.1 (Java Runtime Environment) trở lên.
II. XÂY DỰNG CẤU TRÚC DỮ LIỆU
3.2.1 Tổ chức dữ liệu cần thiết
Cấu trúc chung của ứng dụng:
Ứng dụng được thực hiện theo mơ hình MVC (Model – View – Controller) gồm các gói
như sau:
• Model: chứa các đối tượng mà ứng dụng tương tác, các phương thức để quản lý
và xử lý dữ liệu.
• View: giao diện của ứng dụng bao gồm các Jpanel, Jbutton, Jframe,… ở gói này
xác định cách trình bày của ứng dụng.
• Controller: khi người dùng tương tác với giao diện thì gói Controller sẽ đóng vai
trị cầu nối giữa View và Model, gọi các phương thức xử lý để trả về kết quả trên
giao diện.

Khoa CNTT&TT, Đại học Cần Thơ

10


Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 3

Gói Model:

Hình 3.2: Tổ chức cấu trúc dữ liệu gói Model
Trong gói này đã xây dựng cấu trúc các class:
• Class Cell: Một ô số trong 81 ô số của bàn cờ Sudoku. Mỗi ơ sẽ có vị trí hàng,
cột, và giá trị của ơ số.
• Class Board: Đây là đối tượng bàn cờ và có chứa các thuật tốn của ứng dụng:
sinh câu đố ngẫu nhiên theo cấp độ, giải câu đố, kiểm tra giá trị có thỏa điều kiện
hay khơng.
• Class Number: Trong q trình tự sinh câu đố ngẫu nhiên để tránh bị trùng các
giá trị ngẫu nhiên đã sinh ra cần tạo một đối tượng số để đánh dấu các số nào đã
được sử dụng.
• Class Player: Lưu những thông tin của người dùng như thời gian chơi và tên
người dùng, cấp độ câu đố khi người dùng muốn lưu kết quả sau khi giải thành
công.

Khoa CNTT&TT, Đại học Cần Thơ

11



Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 3

Gói View

Hình 3.3: Tổ chức cấu trúc dữ liệu gói View
Trong gói này đã xây dựng cấu trúc dữ liệu chứa các class là:
• Class MainFrame: Giao diện chính của ứng dụng, chứa tất cả các thành phần
giao diện của ứng dụng.
• Class JPanelBoard: Chứa câu đố bàn cờ Sudoku nơi mà người dùng sẽ tương
tác khi giải câu đố
• Class JPanelControl: Chứa các chức năng hỗ trợ giải và chức năng quay lại
giao diện sảnh của ứng dụng.
• Class JPanelLevel: Chứa các cấp độ tự sinh câu đố cho người dùng lựa chọn
mỗi cấp độ có một độ khó tương ứng.
• Class JPanelScore: Xem nhóm những người dẫn đầu theo từng cấp độ. Được
chọn lọc dựa trên thời gian hoản thành giải câu đố.
• Class JPanelHall: Sảnh chờ khi vừa khởi chạy ứng dụng bao gồm chức năng:
Start game, High Score, và Introduction.
• Class JPanelArea: Chứa lưới con 9 ơ nhỏ trong bàn cờ 9x9.
• Class JButtonCell: Một button trong 81 button của bàn cờ.
• Class JButtonImage: Một button chứa hình ảnh.
• Class JPanelIntro: Chứa các giới thiệu về tác giả, phiên bản, ngày phát hành,
các mô tả sơ lược về ứng dụng.
Khoa CNTT&TT, Đại học Cần Thơ

12



Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 3

Gói Controller

Hình 3.4: Tổ chức dữ liệu gói Controller
Trong gói này đã xây dựng cấu trúc dữ liệu chứa các class:
• Class Stack: Lưu lại ô số mà người dùng vừa điền giá trị vào
• Class ConnectDatabase: Chứa các phương thức dùng để kết nối CSDL.
• Class ControlGame: Chứa các phương thức, sự kiện của ứng dụng.
Dữ liệu cần thiết cho thuật tốn sinh số ngẫu nhiên:
matrix[][]: Mảng ơ số Sudoku
k: Giá trị random từ 1 đến 9 điền vào mảng ô số
num: đánh dấu số đã được random
i: Chỉ số hàng của mảng ô số
j: Chỉ số cột của mảng ô số
isValid(): Phương thức kiểm tra giá trị hợp lệ
Dữ liệu cần thiết cho thuật tốn giải ơ số:
matrix[][]: Mảng ô số Sudoku
k: Giá trị điền vào mảng ô số
i: Chỉ số hàng của mảng ô số
j: Chỉ số cột của mảng ô số
isValid(): Phương thức kiểm tra giá trị hợp lệ
Khoa CNTT&TT, Đại học Cần Thơ

13


Trị chơi Sudoku sử dụng thuật tốn vét cạn


Chương 3

3.2.2 Thiết kế giải thuật
Giải thuật sinh số ngẫu nhiên
Đầu vào: Một mảng ơ số Sudoku chưa có giá trị tất cả đều bằng 0.
Đầu ra: Một mảng ô số Sudoku đầy đủ các giá trị thỏa điều kiện.
• Mã giả:
function GENERATE(b):
FOR i=0 TO i<9 DO {
FOR j=0 TO j<9 DO {
IF (ô số hàng i cột j bằng 0) THEN {
WHILE (Còn số vẫn chưa sử dụng) DO {
Sinh số ngẫu nhiên gán giá trị cho k;
Điền giá trị k cho ô số;
Đánh dấu số k đã được sử dụng;
IF (Giá trị của ô số là hợp lệ và SOLVEGAME(b) bằng true)
THEN trả về true;
ELSE gán giá trị ô số bằng 0;
}
}
Trả về false;
}
}
Trả về true;

Khoa CNTT&TT, Đại học Cần Thơ

14



Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 3

• Lưu đồ thuật tốn:

Hình 3.5: Lưu đồ thuật tốn tự sinh ngẫu nhiên các ô số
Khoa CNTT&TT, Đại học Cần Thơ

15


Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 3

Giải thuật giải ơ số bằng thuật tốn vét cạn
Đầu vào: Một mảng ô số Sudoku chưa được giải
Đầu ra: Một mảng ơ số Sudoku đã được giải
• Mã giả:
function SOLVEGAME(b):
FOR i=0 TO i<9 DO {
FOR j=0 TO j<9 DO {
IF (ô số hàng i cột j bằng 0) THEN {
FOR k=1 TO k<9 DO {
Điền giá trị k cho ô số;
IF (Giá trị của ô số là hợp lệ và SOLVEGAME(b) bằng true)
THEN trả về true;
ELSE gán giá trị ô số bằng 0;

}
Trả về false;
}
}
Trả về true;

Khoa CNTT&TT, Đại học Cần Thơ

16


Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 3

• Lưu đồ thuật tốn:

Hình 3.6: Lưu đồ thuật tốn vét cạn để giải ô số
Khoa CNTT&TT, Đại học Cần Thơ

17


Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 3

III. GIỚI THIỆU CHƯƠNG TRÌNH
Các tính năng nổi bật










Tính năng tự sinh câu đố theo cấp độ người dùng lựa chọn.
Lưu lại kết quả, thành tích mỗi lần giải.
Lưu lại trạng thái bàn cờ khi thoát khỏi ứng dụng.
Hỗ trợ cả giải ơ số bằng cách nhấn phím và bằng cách chọn giá trị trên giao diện.
Có hiệu ứng đổi màu khi rê chuột vào các nút trên giao diện.
Có các cảnh báo trùng số, và các chức năng hỗ trợ giải khác.
Có thể xem ứng dụng thực hiện giải câu đố tự động ở từng ô số.
Giao diện thân thiện, dễ sử dụng và đáp ứng nhu cầu cần thiết của người dùng.

Giao diện ứng dụng
Giao diện sảnh: giao diện sẽ hiển thị đầu tiên khi người dùng khởi chạy ứng dụng bao
gồm các nút: Start game, High score, và Introduction. Mỗi nút đại diện cho một chức
năng của ứng dụng.

Hình 3.7: Giao diện sảnh trị chơi
Giao diện chọn cấp độ: ở đây có ba cấp độ sinh câu đố để người dùng lựa chọn (Easy,
Normal và Hard), mỗi cấp độ tương ứng với một độ khó khác nhau của câu đố bàn cờ
Sudoku.

Khoa CNTT&TT, Đại học Cần Thơ

18



Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 3

Hình 3.8: Giao diện chọn cấp độ
Giao diện bàn cờ: tại giao diện này người dùng đã có thể bắt đầu giải câu đố Sudoku.
Bên cạnh đó có thể sử dụng các tính năng hỗ trợ giải trong q trình giải

Hình 3.9: Giao diện bàn cờ

Khoa CNTT&TT, Đại học Cần Thơ

19


Trị chơi Sudoku sử dụng thuật tốn vét cạn

Chương 3

Giao diện xem xếp hạng: để xem những người có thành tích cao và đang dẫn đầu.Ở đây
sẽ chọn ra ba người có thành tích tốt nhất ở mỗi cấp độ câu đố.

Hình 3.10: Giao diện xem xếp hạng
Giao diện xem giới thiệu tác giả: giới thiệu về tên ứng dụng, tác giả, phiên bản, ngày
xuất bản, công cụ phát triển và các dịng mơ tả sơ lược về ứng dụng

Hình 3.11: Giao diện xem giới thiệu
Khoa CNTT&TT, Đại học Cần Thơ


20


×