1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo bài tập lớn học phần “trí tuệ nhân tạo” đề tài trò chơi tic tac toe

36 56 0

Đ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 đề Trò chơi Tic Tac Toe
Tác giả Hồ Quang Huy, Nguyễn Linh Chi
Người hướng dẫn Người hướng dẫn
Trường học Trường Đại Học Hàng Hải Việt Nam
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2020
Thành phố Hải Phòng
Định dạng
Số trang 36
Dung lượng 2,53 MB

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

Nội dung

Trong game có sử dụng thuật toán MiniMax với độ sâu là 4 và thuật toán cắt cụt alpha-beta để giảm thời gian tính toán.. Do thời gian có hạn nên chúng em chưa thể tối ưu được các thuật to

Trang 1

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM

KHOA CÔNG NGHỆ THÔNG TIN

Sinh viên thực hiện: Hồ Quang Huy – MSV: 78333

Nguyễn Linh Chi – MSV: 77305

Trang 2

Hải phòng, tháng 11 năm 2020

Trang 3

TRƯỜNG ĐẠI HỌC HÀNG HẢI KHOA CÔNG NGHỆ THÔNG TIN

-*** -BÀI TẬP LỚN HỌC PHẦN: TRÍ TUỆ NHÂN TẠO

- Tìm hiểu về cây trò chơi và thuật toán Minimax

- Viết chương trình cho bài toán

- Làm báo cáo bài tập lớn

4 Yêu cầu

- Làm báo cáo

- Nộp báo cáo

Trang 4

Hải Phòng, tháng 10 năm 2019

NGƯỜI HƯỚNG DẪN

M C LỤ Ụ

ii

Trang 5

MỤC LỤC iii

DANH MỤC CÁC HÌNH VẼ, BẢNG BIỂU iv

DANH MỤC CÁC TỪ VIẾT TẮT v

MỞ ĐẦU 1

CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN 2

1.1 Mô t bài toán ả 2

1.2 M c têu ụ 3

1.3 H ướ ng gi i quyêết bài toán ả 3

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 4

2.1 Cây trò ch i ơ 4

2.2 Thu t toán Minimax ậ 5

2.3. Mô ph ng gi i thu t Minimax cho trò ch i Tic Tac Toe ỏ ả ậ ơ 6

2.4 Đánh giá thu t toán ậ 8

2.4.1 Ư u đi m ể 8

2.4.2 Nh ượ c đi m ể 8

2.5 Ngôn ng l p trình (công c cài đ t) s d ng ữ ậ ụ ặ ử ụ 8

CHƯƠNG 3: CHƯƠNG TRÌNH CÀI ĐẶT BÀI TOÁN 9

1 Code l nh ệ 9

2 Kêết quả 18

https://kingbazoka.blogspot.com/2012/?view=classic 19

Trang 6

DANH MỤC CÁC HÌNH VẼ, BẢNG BIỂU

iv

Trang 7

Recommandé pour toi

Tổng ôn ngữ pháp tiếng anh Chuyên ĐỀ 16 - LIÊN TỪ

Trang 8

DANH MỤC CÁC TỪ VIẾT TẮT

v

Trang 9

MỞ ĐẦU

Hiện nay, nền CNTT đang ngày càng phát triển mạnh mẽ với sự phát triển của KH-CN Việc ứng dụng trí tuệ nhân tạo trong các ứng dụng hàng ngày làm cho máy móc biết suy nghĩ hay giải quyết những bài toán một cách thông minh nhất và việc phát triển game đã trở nên vô cùng phổ biến, đặc biệt

là những game mang tính trí tuệ cao Và Tic Tac Toe là một game như vậy

Chính vì lý do đó mà chúng em đã quyết định lựa chọn Tic Tac Toe làm

đề tài cho bài tập lớn Đây là tài liệu dùng để miêu tả một cách cơ bản về việc xây dựng game Tic Tac Toe Trong game có sử dụng thuật toán MiniMax với

độ sâu là 4 và thuật toán cắt cụt alpha-beta để giảm thời gian tính toán Tài liệu này giúp ta có một cái nhìn tổng quát về việc áp dụng thuật toán MiniMax và cắt cụt alpha-beta vào game cờ Caro

Do thời gian có hạn nên chúng em chưa thể tối ưu được các thuật toán

sử dụng trong game, nhưng chúng em sẽ cố gắng hoàn thiện trong thời gian sớm nhất Nhóm thực hiện đề tài này với mục đích xây dựng game Caro có tính nhân tạo cao Tuy nhiên trong quá trình thực hiện không thể tránh khỏi cónhững sai sót, chúng em rất mong nhận được những góp ý và đánh giá của cô

Trang 10

CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN

1.1 Mô tả bài toán

Tic-tac-toe là một dạng đơn giản của trò đánh cờ Caro Đây trò chơi phổ biến dùng viết trên bàn cờ giấy có 9 ô, 3x3 gồm hai người chơi, một người dùng ký hiệu , người kia dùng ký hiệu O X

Luật chơi: Hai người chơi lần lượt điền ký hiệu của mình vào một ô bất kỳ (ô đó chưa được đánh) trên bàn cờ Khi 9 ô được điền đầy, trò chơi kết thúc ở

1 trong 3 trạng thái:

 Khi có 3 quân thẳng hàng ( ngang, dọc hoặc chéo) liên tiếp

o Người chơi ký hiệu X thắng

o Người chơi ký hiệu O thắng

 Khi không có 1 đường thẳng/chéo nào được ghi: 2 người chơi sẽ cùng hòa

Hình 1: Trò chơi Tic Tac Toe

Trang 11

1.2 Mục tiêu

- Đến lượt chơi của mình, người chơi cố gắng tạo ra 3 nước cờ thẳng hàng thì sẽ chiến thắng

- Hoặc cố ngăn cản đối thủ của mình tạo ra 3 nước cờ thẳng hàng

1.3 Hướng giải quyết bài toán

* Để giải quyết bài toán này và tìm ra nước đi tối ưu, chúng ta sẽ sử

• Có 2 người chơi là Min và Max

• MAX: là người chơi cố gắng dành chiến thắng

• MIN: là người chơi ngăn cản điểm số của MAX

 Áp dụng vào game Tic Tac Toe

- Người chơi cầm quân X đóng vai trò như Max

- Người chơi cầm quân O đóng vai trò như Min

- Để quyết định nước đi tiếp theo, ta xây dựng một thủ tục đệ quy gồm 2 hàm:

max_value() để tìm nước đi tiếp theo cho quân X

min_value() để tìm nước đi tiếp theo cho quân O

Trang 12

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

- TTBĐ là sự sắp xếp các quân cờ trong lúc đầu của cuộc chơi Trong hình trên ( Hình 3 ) người chơi O chỉ có thể đặt quân cờ đầu tiên vào 3 vị trí Lượt đi tiếp theo dành cho người chơi X, tại vị trí thứ nhất có 5 cách đi quân cờ, vị trí thứ 2 có 2 cách đi quân cờ, vị trí thứ 3 có 5 cách đi quân cờ Tương tự cho cáclượt đi tiếp theo, số lượt đi tối đa cho cả 2 đối thủ trong trò chơi là 9

Cách xây dựng cây trò chơi:

4

Hình 3: Cây trò ch i Tic Tac Toe ơ

Trang 13

 Gốc của cây ứng với trạng thái u

 Có thể gọi đỉnh ứng với TT X ( O ) đưa ra nước đi là đỉnh X ( O )

 Nếu 1 đỉnh là X ( O ) ứng với trạng thái thì đỉnh con của nó là tất cả u

các đỉnh biểu diễn trạng thái , nhận được từ do X ( O ) thực hiện v u

nước đi hợp lệ nào đó

2.2 Thuật toán Minimax

- Đây là 1 thuật toán đệ quy được dùng trong tìm kiếm có đối thủ và được sử dụng làm chiến lược cho tìm kiếm nước đi trong KGTK của trò chơi có tính chất đối kháng

Ví dụ: Trong trò chơi đối kháng (cờ Vua, cờ Tướng, cờ Caro,…) khi người

chơi đánh với máy, thì KGTT là cả bàn cờ đó – KGTT là cách mà máy tính biểu diễn bàn cờ thực hiện lên bộ nhớ máy tính Với mỗi nước đi, sẽ làm cho KGTT của bàn cờ thay đổi thành một KGTT mới Như vậy để tìm ra nước đi tốt nhất cho máy chiến lược tìm kiếm nước đi Minimax sẽ được sử dụng

Hàm đánh giá:

- Hàm đánh giá sẽ quyết định chất lượng của một chương trình

- Để thiết kế 1 hàm đánh giá cần phụ thuộc vào các yếu tố: các quân cờ của 2 bên, số lượng quân cờ còn lại, sự sắp xếp các quân cờ,…Eval(u) = (Rows, Columns, Diagonal còn mở đối với MAX)

= (Rows, Columns, Diagonal còn mở đối với MIN)

Trang 14

2.3. Mô phỏng giải thuật Minimax cho trò chơi Tic Tac Toe

 MAX: người chơi sử dụng ký hiệu O

 MIN: người chơi sử dụng ký hiệu X

- Trong trò chơi từ TT hiện tại sẽ dự đoán được nước đi của TT tiếp theo cho đến khi gặp TT chiến thắng (Node lá) Nếu nó không là node lá (trò chơi chưa kết thúc nhưng vì giới hạn các ô nên không thể tính đến node lá) TTKT là trạng thái có 3 ô liên tiếp ngang, dọc, chéo có cùng một quân cờ X hoặc O ( Là X thì MIN win, là O thì MAX win, các ô đều kín và TT chưa kết thúc thì 2 bên hòa )

-Ta chỉ tính giá trị của các node ở mức cao nhất được giới hạn Các node ở mức trước được tính dựa trên các node con của nó Node đó đang là MAX thì giá trị của nó sẽ là giá trị của node lớn nhất trong tất cả các node con của

nó Node đó đang là MIN thì giá trị của nó sẽ là giá trị của node nhỏ nhất trong các node con của nó Mỗi node MAX hoặc MIN sẽ chọn node con có giá trị bằng nó để làm nước đi tối ưu

6

Trang 16

2.4 Đánh giá thuật toán

2.4.1 Ưu điểm

- Thuật toán giúp tìm kiếm tất cả nước đi tiếp theo sau và lựa chọn nước đi tốt nhất

2.4.2 Nhược điểm

- Tốn thời gian ( vì phải duyệt hết tất cả các trạng thái)

2.5 Ngôn ngữ lập trình (công cụ cài đặt) sử dụng

Trò chơi Tic Tac Toe được viết bằng: Ngôn ngữ : C#

IDE : Visual Studio Code

8

Trang 17

CHƯƠNG 3: CHƯƠNG TRÌNH CÀI ĐẶT BÀI TOÁN

public string huPlayer = "O";

public string aiPlayer = "X";

Trang 18

publicList List< < >>int winCombo = newList List< < >>() {int

new List<int>(){ 1 2},0, ,

new List<int>(){ 4 5},3, ,

new List<int>(){ 7 8},6, ,

new List<int>(){ 3 6},0, ,

new List<int>(){ 4 7},1, ,

new List<int>(){ 4 8},0, ,

new List<int>(){ 4 2},6, ,

new List<int>(){ 5 8},2, ,

Trang 19

using System.Collections.Generic;using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Controls;using System.Windows.Data;

using System.Windows.Documents;using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;

namespace AI_tick_tac_toe

Trang 23

Buttonbtn = sender asButton;

(if btn.Content.ToString ==() "") // cho khoong click vao lan 2

Trang 25

(if checkWin Player.huPlayer( )) { return -10;

else if ( availSpots == null return 0) ;

List Move< > moves = new List Move< >();

for int i = 0 i < availSpots.Count i++ ( ; ; ) {

Move move = newMove();

Trang 26

move.index = Int32.Parse matrix( [availSpots i Tag.ToString [ ]] ()); matrix availSpots i Content[ [ ]] = player;

(if player == Player.aiPlayer)

{

move.score = minimax(Player.huPlayer); }

else if ( player == Player.huPlayer)

Trang 28

(if moves i[ ].score < bestScore ) {

bestScore = moves[i score ] ; bestMove = i ;

Trang 29

privateList<int> emptyRoom() {

List<int> emt = newList< >();int

boolcheck = false;

for int i = 0 i < 9 i++ ( ; ; )

{

(if matrix[i Content.ToString == ] () "") {

emt.Add(i);

check = true;

}

}

Trang 30

(if !check) return null;

Trang 32

private void announce(string player)

Trang 33

private bool checkWin(string player)

{

for int i = 0 i < Player.winCombo.Count i++ ( ; ; )

{

varchiso1 = Player.winCombo i 0 [ ][ ];

varchiso2 = Player.winCombo i 1 [ ][ ];

varchiso3 = Player.winCombo i 2 [ ][ ];

(if matrix[chiso1].Content.ToString == player && ()

matrix chiso2 Content.ToString == player && matrix chiso3 Content.ToString[ ] () [ ] ()

Trang 34

public intindex;

public int score;

}

26

Trang 35

2 Kết quả

Trang 36

KẾT LUẬN

TÀI LIỆU THAM KHẢO

28

Ngày đăng: 14/06/2023, 15:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w