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ánMiniMax và cắt cụt alpha-beta vào game cờ Caro.. Tuy nhiên, vì một khi đã đặt xuống, các quân cờ không thể di chu
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP.HCM
ĐỒ ÁN MÔN HỌC CÔNG NGHỆ PHẦN MỀM PHẦN MỀM GAME CỜ CARO Ngành: Công nghệ thông tin Giảng viên hướng dẫn : Tạ Thu Thủy Lớp : 17DTHD2 Sinh viên thực hiện MSSV Nguyễn Văn Bảo 1711062253
Nguyễn Quang Vĩnh Điền 1711062259
Lê Nguyên Khang 1711060933
Võ Tâm Anh 1711062301
Nguyễn Trung Liêm 1711062123
Trang 2TP Hồ Chí Minh, 2019
DANH SÁCH THÀNH VIÊN
Số điện % HOÀN STT HỌ VÀ TÊN CÔNG VIỆC
thoại THÀNH Thuyết trình, tìm code
1 Võ Tâm Anh tham khảo, làm word báo
cáo
Làm pp thuyết trình,
2 Nguyễn Văn Bảo 0386291775 Word báo cáo, thêm Code
caro
Tìm nội dung pp thuyết
Nguyễn Quang Vĩnh
3 0837627520 trình, Làm pp báo cáo,
Điền
thuyết trình
Trả lời câu hỏi, tìm nội
Lê Nguyên Khang dung PP thuyết trình, làm
4 0765340127
(Nhóm trưởng) word báo cáo, làm pp báo cáo Viết code caro, thuyết Nguyễn Trung Liêm 5 trình, tìm hiểu nội dung pp thuyết trình Lời Nhận Xét của giảng viên: ………
………
………
………
………
………
………
Trang 3………
………
………
………
………
MỤC LỤC Lời mở đầu
1
Chương 1 Tổng quan
1
1.1 Tổng quan về vấn dề được nghiên cứu 1
1.2 Nhiệm vụ của đồ án
1
1.2.1 Mục tiêu
1
1.2.2 Đối tượng
2
1.2.3 Thông tin tổng quát
2
1.2.3.1 Phát biểu vấn đề 3
1.2.3.2 Mục tiêu đề ra
3
1.2.3.3 Mô tả
3
1.2.3.4 Lợi ích mang lại
3 1.2.3.5 Các bước thực hiện để hoàn thành dự án 3
1.2.3.6 Ràng buộc tổng quan hệ thống 4
1.3 Cấu trúc đồ án
4
Chương 2: Cơ sở lý thuyết
5
2.1 Giới thiệu về Winform
5
Trang 42.2.2 Chi
tiết 7
2.2.3 Lập trình 3
lớp 7
2.3 Khái niệm cơ sở dữ liệu SQL
Server 8
Trang 5Chương 3: Kết quả thực
nghiệm 93.1 Các thành phần chức năng của hệ
thống 9
3.1.1
Menu 9
3.1.2 Các sơ
đồ 9
3.1.2.1: Sơ đồ
usecase 9
3.1.2.2: Sơ đồ class
diagram 9 3.1.2.3: sơ đồ sequence
cùng người
khác 14
3.1.3.6
EDIT 15
Chương 4: Kết
luận 16
4.1 Kết quả đạt
được 16
4.2 Đánh giá phần
mềm
Trang 7Lời mở đầu
Hiện nay, việc ứng dụng trí tuệ nhân tạo vào việc phát triển game đã trở nênvô
cùng phổ biến, đặc biệt là những game mang tính trí tuệ cao
Và cờ Caro là một game như vậy Chính vì lý do đó mà chúng em đã quyết định lựachọn cờ Caro làm để tài cho bài tập lớn môn trí tuệ nhân tạo
Đâ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 cờCaro 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ánMiniMax 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ụngtrong game, nhưng chúng em sẽ cố gắng hoàn thiện trong thời gian sớm nhất Nhómthự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ô
Chúng em xin chân thành cám ơn!
1
Trang 8Chương 1 Tổng quan
1.1 Tổng quan về vấn đề được nghiên cứu:
1.1.1 Khảo sát thực trạng hiện nay:
Theo tình trạng chơi game có 73% người đang chơi, 22% chưa từng chơi và 5%từng chơi nhưng hiện không còn chơi nữa Tỷ lệ người chơi game tập trung chủ yếuvào nhóm 16-20 tuổi (42,1%), 10-15 tuổi (26,3%), 21-25 tuổi (22%) Tỷ lệ người chơigame online còn đang đi học chiếm 71,7% so với game thủ làm ngành nghề khác Vềgiới tính, nam giới chơi game online nhiều hơn nữ giới với 54,5% Tỷ lệ người chơi có
trình độ Đại học, Cao đăng chiếm tỷ lệ cao nhất với 30,1%
1.1.2 Phân tích yêu cầu:
1.Yêu cầu chơi:
Game Caro đã phổ biến với rất nhiều người, với nhiều phiên bản game được đưa ra ởđây nhóm xây dựng game Caro này phù hợp với nhiều đối tượng Người chơi
Người chơi có thể chọn 1 trong 2 chế độ chơi:
Hai Người chơi
Chơi với máy
Ở chế độ “Hai Người chơi”, hai bên lần lượt đi từng nước cờ
Ở chế độ “Chơi với máy”,Người chơi và máy lần lượt đi từng nước cờ
Máy có thể tự động thực hiện những chức năng ở dưới:
Tấn công
Phòng thủ
Tấn công , phòng thủ
Tạo ván chơi mới: trong lúc đang chơi mà không muốn tiếp tục ván chơi
đó có thể tạo ván chơi mới khởi động lại từ đầu
Quay lại nước đi trước: khi đi sai bạn có thể nhấn quay lại để hoàn lại nước đi sai lúc trước
2.Giao diện:
1) Thuận tiện: Các nút chức năng phải đễ nhìn ,dễ sử dụng
2) Hình ảnh: Ảnh nền,ảnh bàn cờ ,ảnh quân cờ,ảnh nút,….đơn giản, dễ nhìn
Trang 9
Người chơi có thể tương tác nhanh với chương trình bằng chuột.
Chuột dùng để điều khiển chương trình
Chuột dùng để đi nước cờ
1.2 Nhiệm vụ của đồ án:
1.2.1 Mục tiêu:
Ngày nay, xã hội phát triển mạnh mẽ, cuộc sống xã hội ngày càng được cảithiện và nâng cao nên nhu cầu vui chơi, giải trí….ngày càng lớn Ở châu Á phongtrào chơi games phát triển mạnh mẽ với yêu cầu ngày càng cao Những games chơiđộc lập trên một máy tính ngày càng không đáp ứng được yêu cầu mà thay vào đó
là những games với nhiều máy tính kết nối với nhau Xuất phát từ nhu cầu đó em đãthực hiện đề tài “ĐÁNH CỜ CARÔ“
1.2.2 Đối tượng:
Chủ yếu là những học sinh sinh viên và một số người trẻ khác những người có
sở thích và đam mê cờ CaRo
1.2.3 Thông tin tổng quản:
Trang 10Cho đến nay vẫn chưa ai biết chính xác lai lịch của cờ caro, có lời đồn cho rằng,
cờ caro xuất hiện cách đây khoảng hơn 2000 năm TCN tại Trung Quốc Tuy nhiên,
một số nhà khoa học đã tìm ra bằng chứng rằng cờ caro đã xuất hiện ở Hy Lạp cổ đại
và châu Mĩ trước thời Colombus
Cờ caro bắt đầu với cái tên Wutzu bên Trung Quốc và biến danh thành Gomoku
ở Nhật Bản Tuy nhiên, ở đất nước của xứ sở hoa anh đào, nó còn được gọi dưới nhiềucái tên khác nhau ở mỗi địa phương Kakugo, gomoku-narabe, Itsutsu-ishi, …
Khi mới xuất hiện, loại cờ này được chơi bằng các con cờ vây (viên cờ màutrắng và đen) trên một bàn cờ vây (19×19) Quân đen đi trước và người chơi lần lượtđặt một viên đá của họ trên đường chéo còn trống Người thắng là người đầu tiên cóđược một chuỗi liên tục gồm 5 quân hàng ngang, dọc hoặc chéo Tuy nhiên, vì một khi
đã đặt xuống, các quân cờ không thể di chuyển hoặc bỏ ra khỏi bàn, do đó loại cờ này
1.2.3.1 Phát biểu vấn đề:
Xã hội ngày càng phát triển thì nhu cầu về mọi thứ cũng sẽ tăng theo trong đó
có cả nhu cầu về giải trí sau như giờ học và làm việc căng thẳng Vì vậy khi nắm bắt
được yếu tố đó trò chơi game CaRo được nhóm chúng tôi lựa chọn phát triển để giúpmọi người có thể giải trí và thư giản sau những giờ làm việc áp lực và mệt mỏi
1.2.3.2 Mục tiêu đề ra:
Vấn đề được đặt ra là:
- Thiết kế được một phần mềm đơn giản
- Giao diện thân thiện dễ sử dụng
Trang 11
- Có tất cả tính năng của một game CaRo như đánh với máy, đánh với người,
xử lý thắng thua v.v
1.2.3.3 Mô tả
Trò chơi có các tính năng sau:
- Người với máy
- Người với người
- Exit (Thoát nhanh trò chơi)
- Xử lý thắng thua
- Undo (Cho phép đi lại)
- Tạo mới trò chơi (cho phép tạo ván mới)
1.2.3.4 Lợi ích mang lại:
Giúp mọi người giải trí, thư giản sau những giờ học và giờ làm việc căng thẳng
Rèn luyện tư duy cũng như thử sức với nhau qua chức năng đánh với người
1.2.3.5 Các bước thực hiện để hoàn thành dự án:
Lên kế hoạch và phát thảo ý tưởng
Thực hiện các ý tưởng:
- Tạo giao diện thân thiện với người chơi
- Tạo bàn cớ trong game
- Tạo chức năng đổi người chơi
- Tạo chức năng xử lý thắng thua
- Tạo Menu và Hotkey
- Tạo chức năng đi lại (UNDO)
- Tạo chức năng tạo lại ván mới
1.2.3.6 Ràng buộc tổng quan hệ thống:
- Không ảnh hưởng đến hoạt động bình thường của hệ thống
- Khi phát triển dự án phải đáp ứng được nhu cầu của người dùng
- Nếu có kết hợp dữ liệu thì phải thường xuyên được cập nhật
Trang 12Chương 2: Cơ sở lý thuyết
− Giới thiệu về Winform
− Giới thiệu về ngôn ngữ C#
− Giới thiệu về cơ sở dữ liệu SQL Server Chương 3: Kết quả thực nghiệm
− Các thành phần chức năng của hệ thống − Giao diện hệ thống
Chương 4: Kết luận
− Kết quả đạt được
− Đánh giá phần mềm
− Hướng phát triển đề tài
Tài liệu tham khảo
6
Trang 13Chương 2: Cơ sở lý thuyết
2.1 Giới thiệu về Winforms:
Winforms là một công nghệ của Microsoft, cho phép lập trình các ứng dụngWindows Nhờ tính tiện ích, dễ code, giao diện design kéo thả đơn giản… Winforms
đã được sử dụng để phát triển rất nhiều ứng dụng Đa phần lập trình viên C# NET nàocũng từng học và sử dụng Winform
Vì Winform xử lý trực quan, chỉ cần kéo thả, lại có nhiều components có sẵng,Winform rất phù hợp để làm các phần mềm quản lý, tính tiền, thống kê, … Đây cũng
là loại ứng dụng mà các công ty hay doanh nghiệp vừa và nhỏ cần Ngoài ra, chỉ cần
sử dụng component như TelerikUI hoặc DevExpress, Winform có thể tạo ra các giaodiện hiện đại, đẹp như mơ, long lanh hoa mỹ
2.2 Ngôn ngữ C#
C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft,đây là một ngôn ngữ chuyên dụng để lập trình web server và ứng dụng trên nền tảngWindows Microsoft phát triển C# dựa trên C++ và Java, C# được miêu tả là ngôn ngữ
có được sự cân bằng giữa C++, Visual Basic, Delphi và Java
Ngôn ngữ lập trình C# được coi là ngôn ngữ lập trình đơn giản, hiện đại, hướng
đến nhiều mục đích sử dụng, và là một ngôn ngữ lập trình hướng đối tượng
C# có thể đáp ứng các nguyên tắt của ngành kỹ thuật phần mềm như kiểm trachặt chẽ kiểu dữ liệu, kiểm tra giới hạn mảng, phát hiện các trường hợp sử dụng cácbiến chưa có dữ liệu, và tự động thu gom dữ liệu không cần thiết Mang trong mình sự
mạnh mẽ, trực quan và hiệu suất cao đó là những điểm cốt lõi làm nên thương hiệu C#
7
Trang 14Ngôn ngữ lập trình C# với sự kế thừa những ưu điểm của C, C++, Java nên khinhìn vào code C# chúng ta sẽ thấy rất thân thuộc về cấu trúc, cú pháp từ đó việc học
tập sẽ trở nên dễ dàng hơn Bên cạnh đó C# được thiết kế để phù hợp với việc viết ra
các ứng dụng cho cả hệ thống Server và hệ thống nhúng chuyên dụng trên nền tảngWindows
Tuy rằng mang trong mình những ưu điểm của C, C++, Java, khả năng quản lý
bộ nhớ tốt, khả năng xử lý mạnh mẽ, trực quan dễ học và dễ sử dụng, đó là những ưuđiểm nổi bật của C#, nhưng nếu xét ngược lại thì tốc độ xử lý là một nhược điểm lớnnhất của ngôn ngữ này vì phải gồng gánh một lượng lớn dữ liệu từ các thư viện nêntốc độ xử lý sẽ thua thiệt hơn so với C, Assembly Nói như vậy không có nghĩa rằngC# không phải là sự lựa chọn lý tưởng, trong lập trình có những trường hợp ta có thể
tận dụng tốt khả năng của C# như thiết kế phần mềm trên môi trường Windows, trong
đồ án môn học này là một ví dụ thực tiễn nhất trong việc tận dụng ưu điểm của C# vì
nó có thể thiết kế nhanh, xử lý sự kiện đơn giản, nhiều tiện ích mở rộng hỗ trợ tốttrong quá trình làm đồ án
2.2.1 Mô hình 3 lớp:
- Khi mới tiếp xúc với Windows Form và ADO.NET, việc lập trình bắt đầu trởnên phức tạp khi dự án lớn dần Bởi vậy để dễ quản lý các thành phần của hệ thống,cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần cócùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm dể công việckhông bị chồng chéo và ảnh hưởng lẫn nhau Một trong những mô hình lập trình nhưvây gọi là Mô hình 3 lớp (Three Layers)
8
Trang 15Hình 2.1: Thể hiện sơ đồ 3 lớp.
- Việc phân chia thành từng lớp giúp cho code được tường minh hơn Nhờ vào việc chia ra từng lớp đảm nhận các chức năng khác nhau và riêng biệt như giao diện, xử lý, truy vấn thay vì để tất cả lại một chỗ Nhằm giảm sự
kết dính
- Dễ bảo trì khi được phân chia, thì một thành phần của hệ thống sẽ dễ thay đổi Việc thay đổi này có thể được cô lập trong 1 lớp, hoặc ảnh hưởng đến lớp gần nhất mà không ảnh hưởng đến cả chương trình
- Dễ phát triển, tái sử dụng: khi chúng ta muốn thêm một chức năng nào thì việc lập trình theo một mô hình sẽ dễ dàng hơn vì chúng ta đã có chuẩn để tuân theo Và việc sử dụng lại khi có sự thay đổi giữa hai môi trường (Winform sang Webform) thì chỉ việc thay đổi lại lớp GUI
- Dễ bàn giao Nếu mọi người đều theo một quy chuẩn đã được định sẵn, thì công việc bàn giao, tương tác với nhau sẽ dễ dàng hơn và tiết kiệm được nhiều thời gian
- Dễ phân phối khối lượng công việc Mỗi một nhóm, một bộ phận sẽ nhận một nhiệm vụ trong mô hình 3 lớp Việc phân chia rõ ràng sẽ giúp các lập trình viên kiểm soát được khối lượng công việc của mình
2.2.2 Chi tiết:
9
Trang 16− GUI Layer: Lớp này là lớp hiển thị giao diện và các chức năng để người dùng cuối sử dụng.
− Business (BUS) Layer: Đây là lớp nhận các yêu cầu từ lớp GUI và truy xuất lên lớp Data để lấy thông tin và trả về GUI
− Data Access Layer: Lớp này là lớp để truy xuất với CSDL, chỉ duy nhất lớp này được làm việc với Database
2.2.3 Lập trình 3 lớp:
Presentation Layer (GUI):
− UI Components: gồm các thành phần tạo nên giao diện của ứng dụng
(GUI) Chúng chịu trách nhiệm thu nhận và hiển thị dữ liệu cho người dùng…
− Ví dụ: textbox, button, combobox, …
Data Layer (DAL)
− Data Access Logic Components: chịu trách nhiệm chính lưu trữ và truy xuất dữ liệu từ các nguồn dữ liệu (Data Sources) như XML, File System, … Hơn nữa còn tạo thuận lợi cho việc dễ cấu hình và bảo trì
− Service Agents: giúp bạn gọi và tương tác với các dịch vụ từ bên ngoài một cách dễ dàng và đơn giản
10
Trang 17Chương 3: Kết quả thực nghiệm3.1 Các thành phần chức năng của hệ thống:
3.1.1 Menu:
Bảng Menu gồm:
File:
New (Bắt đầu trò chơi mới)
o 1 player (Đánh với máy)
o 2 player (Đánh với người) Exit (Kết thúc nhanh)
Edit:(Chức năng)
Undo (Chức năng đi lại)
Redo (Chức năng qua lại bước cũ).3.1.2 Các sơ đồ:
3.1.2.1: Sơ đồ usecase:
11
Trang 19Hình 3.3.1: Sơ đồ sequence diagram của người chơi với máy
13
Trang 20Hình 3.3.2: Sơ đồ sequence diagram của người chơi với người3.1.3 Thực nghiệm trong trò chơi:
3.1.3.1 Chế độ đánh với máy
Hình 3.1.4.1: Tạo ván chơi với máy
3.1.3.2 Chế độ 2 người cùng đánh với nhau
14
Trang 21Hình 3.1.4.2: Tạo ván chơi với bạn của bạn
3.1.3.3 Chức năng xử lý thắng thua
15
Trang 22Hình 3.1.5: Thông báo người chơi dành chiến thắng3.1.3.4 Chức năng EXIT.
16
Trang 23Hình 3.1.6: Hình hiển thị thông báo có muốn thoát game không
3.1.3.5 FILE menu cũng có chức năng cho phép chọn chơi cùng máy haycùng người khác
Hình 3.1.7: Hình cho phép tạo đổi chế độ của game
17