Giới thiệu • Cờ Caro là một trong các trò chơi phổ biến hiện nay.. Từ thủa ban đầu con người thi đấu trên giấy, trên bề mặt viết kẻ được rồi dần dần tiến tới con người lập trình thi đấ
Trang 2BÁO CÁO BÀI TẬP LỚN
MÔN TRÍ TUỆ NHÂN TẠO
Đề tài: Cờ Caro
Giảng viên hướng dẫn: Nguyễn Thế Cường
Nhóm sinh viên thực hiện lớp CNT50ĐH2:
Đặng Thị Lan
Trang 3Giới thiệu
• Cờ Caro là một trong các trò chơi phổ biến hiện nay Từ thủa ban đầu con người thi đấu trên giấy, trên bề mặt viết
kẻ được rồi dần dần tiến tới con người lập trình thi đấu trên máy Cờ Caro thể hiện tính chất đối kháng cao trong thi đấu game đòi hỏi suy nghĩ của người chơi
• Chương trình có chế độ chơi giữa người và máy, khi chạy
sẽ có bàn cờ được hiện ra, trong quá trình chơi sẽ có
thông báo máy(người) thắng cuộc
Trang 4Mô tả
• Không gian bàn cờ chơi sẽ có kích thước là 15 hàng x 15 cột (được miêu tả chi demo chương trình)
• Khi tham gia chơi người và máy thay phiên nhau đi nước
đi của mình vào ô trống trên bàn cờ bằng ký tự đã quy định là O với máy( đi sau), X với người chơi( đi trước)
• Cuộc chơi sẽ kết thúc khi mà bên nào đánh được 5 ô liên tiếp nhau theo: Hàng, Cột, Hai đường chéo; mà không cần quan tâm rằng chúng có bị chặn hai đầu hay không
Trang 5Ví dụ
Trường hợp máy thắng người chơi Trường hợp người chơi thắng máy
Trang 6Các thuật toán xử lý
• 1 Đánh dấu ô trong không gian chơi
• 2 Duyệt tìm kiếm tốt nhất đầu tiên
Trang 7Các thuật toán xử lý
• 1 Đánh dấu ô trong không gian chơi
- Khi người chơi kích vào một ô trống bất kỳ trên bàn cờ sẽ được đánh dấu tại ô đó sẽ gán giá trị là -2 , và tại vị trí
những ô đã đi thì người chơi không kích đè nước đi của mình được
- Tương tự như đối với người thì máy cũng có cách đánh
và gán giá trị tại ô đã đi là -1 .
Trang 8TRÒ CHƠI CỜ CARO
Trang 9
Biến bitmap
Dim ResWidth As Integer = 950
Dim ResHeight As Integer = 550
Const TitleSize = 32
Biến của Graphics
Dim BBG, G, Graphic, L As Graphics
Dim BB, BBM As Bitmap
Dim r, e, h As Rectangle
Dim random As New Random
Biến đếm giây
Dim tSec As Integer = TimeOfDay.Second
Dim tTicks As Integer = 0
Dim MaxTicks As Integer = 0
Biến của chương trình chạy
Dim Isrunning As Boolean = True
Dim EndGame As Boolean = True
Giới thiệu về các biến hệ thống
Trang 10 Biến xác định vị trí quân đi trên bàn cờ Quy ước X hàng, Y cột
Const Max = 15
Dim Map(Max, Max) As Integer
Dim Undo As New Stack
Dim mMapX As Integer = 20
Dim mMapY As Integer = 20
Biến
Dim MouseX As Integer
Dim MouseY As Integer
Dim MapX As Integer
Dim MapY As Integer
Dim mcX As Integer
Dim mcY As Integer
Biến về người chơi
Dim CountMay, CountNguoi
Dim Diem_PT = {0, 20, 55, 120, 400}
Dim Diem_TC = {0, 22, 60, 130, 400}
Trang 11 Hàm khởi tạo đầu tiên CreateGraphics
Có tác dụng: Để sử dụng những đối tượng đồ họa trong thư viện System.Drawing
ta gọi thông qua hàm này
FillRectangle: tô màu cho ô trống trong bàn cờ
DrawRectangle: tô màu đường kẻ bàn cờ
Đoạn chương trình khởi tạo như sau:
Const LocalX = 220
Const LoCalY = 140
Dim ToaDo_Quan_X = 0, ToaDo_Quan_X2 = 0
Dim ToaDo_Quan_Y = 2, ToaDo_Quan_Y1 = 0
Dim VT(30)
Dim rand
Trang 12 Ta tạo ra ô bàn cờ như sau:
Bàn cờ kích
thước [15,15] Ngoài ra tạo 3 button:
Trang 13 Khởi tạo nước đi đầu tiên của bàn cờ
Private Sub DrawGraphics()
mMapX = 0, mMapY = 0
For X = 0 To 14 'chi so cot
For Y = 0 To 14 'chi so hang
r = New Rectangle(X * TitleSize, Y * TitleSize, TitleSize,
TitleSize)
G.FillRectangle(Brushes.Tan, r) 'to mau cho trong o ban co
G.DrawRectangle(Pens.Black, r) 'to mau but ke duo
If Map(mMapX + X, mMapY + Y) = -2 And Map(mMapX + X, mMapY + Y) <> -1 Then
e = New Rectangle(TitleSize * ToaDo_Quan_X, TitleSize * ToaDo_Quan_X2, TitleSize, TitleSize)
G.DrawImage(BBM, r, e, GraphicsUnit.Pixel)
If Map(mMapX + X, mMapY + Y) = -1 And Map(mMapX + X, mMapY + Y) <> -2 Then
Trang 14
e = New Rectangle(TitleSize * ToaDo_Quan_Y, TitleSize *
ToaDo_Quan_Y1, TitleSize, TitleSize)
G.DrawImage(BBM, r, e, GraphicsUnit.Pixel)
End If Next Next
If mcX <> 0 Then
r = New Rectangle(MouseX * TitleSize, MouseY * TitleSize, TitleSize, TitleSize)
h = New Rectangle(TitleSize * ToaDo_Quan_X, TitleSize * ToaDo_Quan_X2, TitleSize, TitleSize)
Graphic.DrawImage(BBM, r, h, GraphicsUnit.Pixel)
End If
BBG = Me.CreateGraphics
BBG.DrawImage(BB, 0, 0, ResWidth, ResHeight)
G.Clear(Color.Wheat)
End Sub
Trang 15 Mô tả nước đi của quân cờ