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 40 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

Định dạng
Số trang 36
Dung lượng 2,53 MB

Nội dung

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM KHOA CÔNG NGHỆ THÔNG TIN -*** - 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 GV hướng dẫn: Sinh viên thực hiện: Hồ Quang Huy – MSV: 78333 Nguyễn Linh Chi – MSV: 77305 Hải phòng, tháng 11 năm 2020 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ên đề tài Trị chơi Tic Tac Toe Mục đích - Tìm hiểu xây dựng trị chơi Tic Tac Toe Cơng việc - Tìm hiểu đề tài - Tìm hiểu trị chơi thuật tốn Minimax - Viết chương trình cho tốn - Làm báo cáo tập lớn Yêu cầu - Làm báo cáo - Nộp báo cáo i Hải Phòng, tháng 10 năm 2019 NGƯỜI HƯỚNG DẪN MỤC LỤ ii 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 CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN 1.1 Mô tả toán .2 1.2 Mụ c têu 1.3 Hướng giải quyêết toán CHƯƠNG 2: CƠ SỞ LÝ THUYẾT .4 2.1 Cây trò chơi 2.2 Thuật toán Minimax 2.3 Mô giải thuật Minimax cho trò ch Tic Tac Toe 2.4 Đánh giá thuật toán .8 2.5 2.4.1 Ưu điểm 2.4.2 Nhược điểm .8 Ngơn ngữ lập trình (cơng cụ cài đặt) sử d ụng CHƯƠNG 3: CHƯƠNG TRÌNH CÀI ĐẶT BÀI TOÁN Code lệnh Kêết 18 https://kingbazoka.blogspot.com/2012/?view=classic 19 iii DANH MỤC CÁC HÌNH VẼ, BẢNG BIỂU Hình vẽ Trang iv Recommandé pour toi 26 Suite du document ci-dessous Tổng ôn ngữ pháp tiếng anh Chuyên ĐỀ 16 - LIÊN TỪ Công nghệ thông tin 18 100% (1) 123doc-imc-plan-cho-thuong-hieu-baemin Business Leadership 100% (5) DANH MỤC CÁC TỪ VIẾT TẮT Từ Ý nghĩa v MỞ ĐẦU Hiện nay, CNTT ngày phát triển mạnh mẽ với phát triển KH-CN Việc ứng dụng trí tuệ nhân tạo ứng dụng hàng ngày làm cho máy móc biết suy nghĩ hay giải tốn cách thông minh việc phát triển game trở nên vô phổ biến, đặc biệt game mang tính trí tuệ cao Và Tic Tac Toe game Chính lý mà chúng em định lựa chọn Tic Tac Toe làm đề tài cho tập lớn Đây tài liệu dùng để miêu tả cách việc xây dựng game Tic Tac Toe Trong game có sử dụng thuật tốn MiniMax với độ sâu thuật toán cắt cụt alpha-beta để giảm thời gian tính tốn Tài liệu giúp ta có nhìn tổng quát việc áp dụng thuật toán MiniMax 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 thuật toán sử dụng game, chúng em cố gắng hoàn thiện thời gian sớm Nhóm thực đề tài với mục đích xây dựng game Caro có tính nhân tạo cao Tuy nhiên q trình thực khơng thể tránh khỏi có sai sót, chúng em mong nhận góp ý đánh giá CHƯƠNG 1: GIỚI THIỆU BÀI TỐN 1.1 Mơ tả tốn Tic-tac-toe dạng đơn giản trị đánh cờ Caro Đây trò chơi phổ biến dùng viết bàn cờ giấy có ơ, 3x3 gồm hai người chơi, người dùng ký hiệu O, người dùng ký hiệu X Hình 1: Trị chơi Tic Tac Toe Luật chơi: Hai người chơi điền ký hiệu vào (ơ chưa đánh) bàn cờ Khi ô điền đầy, trò chơi kết thúc trạng thái:  Khi có quân thẳng hàng ( ngang, dọ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ó đường thẳng/chéo ghi: người chơi hịa Hình 2: trạng thái kết thúc trò chơi } } private void InitializeBoard() { for (int i = 0; i < 9; i++) { Button btn = new Button() { Name = "dfdf", FontSize = 120, Width = 140, Height = 140, Content = "", Tag = i, 14 }; btn.Click += Btn_Click; matrix.Add(btn); } } private void Btn_Click(object sender, RoutedEventArgs e) { Button btn = sender as Button; if (btn.Content.ToString() == "") // cho khoong click vao lan { int id = Int32.Parse(btn.Tag.ToString()); turn(id, Player.huPlayer); if (!checkTie() && isOver == false) turn(bestSpot(), Player.aiPlayer); } 15 } public int bestMove = 1; public int go = 1; private int bestSpot() { minimax(Player.aiPlayer); return go; } private int minimax(string player) { List availSpots = emptyRoom(); 16 if (checkWin(Player.huPlayer)) { return -10; } else if (checkWin(Player.aiPlayer)) { return 10; } else if (availSpots == null) return 0; List moves = new List(); for (int i = 0; i < availSpots.Count; i++) { Move move = new Move(); 17 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) { move.score = minimax(Player.aiPlayer); } matrix[availSpots[i]].Content = ""; moves.Add(move); } if (player == Player.aiPlayer) 18 { var bestScore = -10000; for (var i = 0; i < moves.Count; i++) { if (moves[i].score > bestScore) { bestScore = moves[i].score; bestMove = i; } } }else { var bestScore = 10000; for (var i = 0; i < moves.Count; i++) { 19 if (moves[i].score < bestScore) { bestScore = moves[i].score; bestMove = i; } } } go = moves[bestMove].index; return moves[bestMove].score; } 20 private List emptyRoom() { List emt = new List(); bool check = false; for (int i = 0; i < 9; i++) { if (matrix[i].Content.ToString()=="") { emt.Add(i); check = true; } } 21 if (!check) return null; return emt; } private bool checkTie() { if (emptyRoom() != null) { return false; } else { MessageBox.Show("Hoa nhau"); return true; } 22 } private void turn(int id, string player) { matrix[id].Content = player; AddToBoard(); var gameWon = checkWin(player); if (gameWon) { announce(player); isOver = true; } } 23 private void announce(string player) { for (int i = 0; i < 9; i++) { if (i == Player.winCombo[index][0] || i == Player.winCombo[index][1] || i == Player.winCombo[index][2]) { matrix[i].Background = Brushes.Aqua; continue; } matrix[i].IsEnabled = false; } AddToBoard(); MessageBox.Show("Winer is "+player); } 24 private bool checkWin(string player) { for (int i = 0; i < Player.winCombo.Count; i++) { var chiso1 = Player.winCombo[i][0]; var chiso2 = Player.winCombo[i][1]; var chiso3 = Player.winCombo[i][2]; if (matrix[chiso1].Content.ToString() == player && matrix[chiso2].Content.ToString() == player && matrix[chiso3].Content.ToString() == player) { index = i; return true; } 25 } return false; } private void Replay_Click(object sender, RoutedEventArgs e) { StartGame(); } } public class Move { public int index; public int score; } 26 } Kết 27 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

w