Cờ Caro là một Game trí tuệ đã rất quen thuộc với mỗi chúng ta. Với lối chơi đơn giản nhưng yếu tố trí tuệ lại rất cao nên Chơi Cờ Caro được rất nhiều người yêu thích đặc biệt là các bạn học sinh, sinh viên và dân văn phòng. Game Chơi cờ Caro không chỉ mang tính chất giải trí đơn thuần mà là một cuộc đấu trí vô cùng gay cấn. Trò chơi gồm 2 người chơi khác nhau và họ sẽ cố tìm cách chiến thắng đối thủ với số lần đánh hữu hạn. Nếu 1 trong 2 người thắng sẽ được cộng điểm, nếu đã đánh hết bàn cờ mà chứ phân thắng bại thì xem như hòa. Điều kiện để được xem là chiến thắng khi người chơi đánh đủ 5 ô liên tiếp theo chiều ngang, dọc và chéo. Game cờ caro được viết bởi rất nhiều ngôn ngữ nhưng ở đề tài này nó được mô phỏng theo ngôn ngữ C# với sự hỗ trợ đắc lực từ winform. Ưu điểm của winform là giao diện khéo thả dễ học và sử dụng, hỗ trợ nhiều event như click, hover…Tốc độ xử lý dữ liệu nhanh và hiệu quả, chạy được trên nhiều phiên bản của Windows khác nhau.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO THỰC TẬP CƠ SỞ
GAME CỜ CARO HAI NGƯỜI CHƠI BẰNG C#
Giáo viên hướng dẫn: ThS Đoàn Vũ Thịnh
Sinh viên thực hiện: Lê Thị Ý Nhi
Mã số sinh viên: 61130752
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO THỰC TẬP CƠ SỞ
GAME CỜ CARO HAI NGƯỜI CHƠI BẰNG C#
GVHD: ThS Đoàn Vũ Thịnh SVTH: Lê Thị Ý Nhi
Khánh Hòa, Tháng 12/2021
Trang 3Khoa: Công nghệ Thông tin
PHIẾU THEO DÕI TIẾN ĐỘ VÀ ĐÁNH GIÁ BÁO CÁO THỰC TẬP CƠ SỞ Tên đề tài: GAME CỜ CARO HAI NGƯỜI CHƠI BẰNG C#
Giảng viên hướng dẫn: ThS Đoàn Vũ Thịnh
Sinh viên được hướng dẫn: Lê Thị Ý Nhi
Nhận xét chung (sau khi sinh viên hoàn thành ĐA/KL):
Sinh viên thực hiện tốt các yêu cầu của GVHD, trong quá trình thực hiện đề tài
có sự liên hệ chặt chẽ với GV Theo lịch hẹn Sinh viên đều có mặt để trình bày ý tưởngcủa các nội dung lần trước Trong quá trình hoàn tất báo cáo đều nỗ lực không ngừngmặc dù đang cao điểm của đợt thi học kỳ nhưng SV vẫn dành thời gian không ít choTTCS
Về nội dung báo cáo đã thỏa mãn các yêu cầu của đề tài như trong đề cương
Về kết quả chương trình đã minh họa được thuật toán Về các yêu cầu cao hơn như sửdụng thư viện của chuột hay minh họa các trường hợp nhược điểm của thuật toán thìchưa thực hiện thành công
Về hình thức của báo cáo và sản phẩm, báo cáo trình bày rõ ràng các mục tiêu,phương pháp, kết quả và thảo luận cho sản phẩm Còn về sản phẩm như đã trình bày
có phần hạn chế
Điểm hình thức: … /10 Điểm nội dung: … /10 Điểm tổng kết: … /10
Đồng ý cho sinh viên: Được bảo vệ: Không được bảo vệ:
Khánh Hòa, ngày 26 tháng 12 năm 2021
Cán bộ hướng dẫn
Trang 4(Ký và ghi rõ họ tên)
Trang 5LỜI CAM ĐOAN
Tôi xin cam đoan mọi kết quả của đề tài “Game cờ Caro 2 người chơi bằng C#” là công trình nghiên cứu của cá nhân tôi và chưa từng được công bố trong bất cứ công trình khoa học nào khác cho tới thời điểm này
Khánh Hòa, ngày 26 tháng 12 năm 2021
Tác giả đồ án (ký và ghi rõ họ tên)
Trang 6
MỤC LỤC
Trang 7LỜI CẢM ƠN
Trong suốt thời gian thực hiện đề tài, tôi đã nhận được sự giúp đỡ của quýphòng ban trường Đại học Nha Trang, Khoa Công nghệ Thông tin nói chung và Bộmôn Kỹ thuật phần mềm nói riêng đã tạo điều kiện tốt nhất cho tôi được hoàn thành đềtài Đặc biệt là sự hướng dẫn tận tình của ThS Đoàn Vũ Thịnh đã giúp tôi hoàn thànhtốt đề tài Qua đây, tôi xin gửi lời cảm ơn sâu sắc đến sự giúp đỡ này
Xin chân thành cảm ơn các quý thầy cô trong bộ môn Kỹ thuật phần mềm trongthời gian qua đã truyền đạt và trang bị cho em kiến thức giúp em hoàn thành tốt đề tàitốt nghiệp
Cuối cùng tôi xin gửi lời cảm ơn chân thành đến gia đình và tất cả bạn bè đãgiúp đỡ, động viên tôi trong suốt quá trình học tập và thực hiện đề tài
Tôi xin chân thành cảm ơn!
Khánh Hòa, ngày 22 tháng 06 năm 2021
Tác giả báo cáo(ký và ghi rõ họ tên)
Trang 8LỜI MỞ ĐẦU
Hiện nay, game đang là một lĩnh vự nổi trội trong đời sống, game vừa giúp giảitrí vừa giúp tập trung trí tuệ Điển hình game cờ Caro, một tựa game trí tuệ kinh điểnvới mọi lứa tuổi Game cờ Caro có lối chơi khá đơn giản, bạn chỉ cần 1 trang giấytrắng với các ô li, mỗi người chơi sẽ chọn một kí tự để đánh, người chiến thắng sẽ làngười đánh được 5 ô liên tiếp Trò chơi truy đơn giản nhưng đòi hỏi sự tính toán cảnthận của người chơi để đưa ra cách chơi hay nhất Theo sự phát triển của công nghệ,giờ đây game cờ caro đã được chơi trên điện thoại và máy tính Ở đề tài này, game cờcaro được viết bằng ngôn ngữ C# với sự hỗ trợ của winform C# là ngôn ngữ hướngđối tượng, đây là một loại ngôn ngữ lập trình hiện đại và khá mạnh mẽ được xây dựngtrên nền tảng hai ngôn ngữ lập trình mạnh nhất là C++ và Java Với Winform hỗ trợviệc tạo giao diện dễ dàng và sinh động hơn
Game được xây dựng để người chơi có thể đánh cờ với nhau trên 1 bàn cờ nhấtđịnh, có thể phân thắng bại và kèm theo một số chức năng cơ bản như: đếm thời gian
để người chơi suy nghĩ, chơi lại game mới, quay lại bước trước, thoát game, tính điểmcho người chơi và đặt lại điểm Game có những ưu điểm như giao diện dễ nhìn, dễchơi, đủ các tùy chọn, ngoài ra game vẫn còn 1 số nhược điểm cần khắc phục và cácchức năng có thể phát triển thêm cho game
Chương 1: TỔNG QUAN VẤN ĐỀ
Cờ Caro là một Game trí tuệ đã rất quen thuộc với mỗi chúng ta Với lối chơiđơn giản nhưng yếu tố trí tuệ lại rất cao nên Chơi Cờ Caro được rất nhiều người yêuthích đặc biệt là các bạn học sinh, sinh viên và dân văn phòng Game Chơi cờ Carokhông chỉ mang tính chất giải trí đơn thuần mà là một cuộc đấu trí vô cùng gay cấn.Trò chơi gồm 2 người chơi khác nhau và họ sẽ cố tìm cách chiến thắng đối thủ với sốlần đánh hữu hạn Nếu 1 trong 2 người thắng sẽ được cộng điểm, nếu đã đánh hết bàn
Trang 9cờ mà chứ phân thắng bại thì xem như hòa Điều kiện để được xem là chiến thắng khingười chơi đánh đủ 5 ô liên tiếp theo chiều ngang, dọc và chéo.
Game cờ caro được viết bởi rất nhiều ngôn ngữ nhưng ở đề tài này nó được môphỏng theo ngôn ngữ C# với sự hỗ trợ đắc lực từ winform Ưu điểm của winform làgiao diện khéo thả dễ học và sử dụng, hỗ trợ nhiều event như click, hover…Tốc độ xử
lý dữ liệu nhanh và hiệu quả, chạy được trên nhiều phiên bản của Windows khác nhau
Trang 10
Chương 2: CƠ SỞ LÝ THUYẾT
2.1GIỚI THIỆU VỀ C#.
C# (hay C sharp) là một ngôn ngữ lập trình đơn giản, được phát triển bởi đội ngũ
kỹ sư của Microsoft vào năm 2000, trong đó người dẫn đầu là Anders Hejlsberg vàScott Wiltamuth C# là ngôn ngữ lập trình hiện đại, hướng đối tượng và nó được xâydựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và Java
C# được thiết kế cho Common Language Infrastructure (CLI), mà gồm ExecutableCode và Runtime Environment, cho phép chúng ta sử dụng các ngôn ngữ high-level đadạng trên các nền tảng và cấu trúc máy tính khác nhau C# với sự hỗ trợ mạnh mẽcủa NET Framework giúp cho việc tạo một ứng dụng Windows Forms hay WPF(Windows Presentation Foundation), trở nên rất dễ dàng
2.2WINFORM
Winform là thuật ngữ mô tả một ứng dụng được viết dùng NET FrameWorrk và cógiao diện người dùng Windows Forms Mỗi màn hình windows cung cấp một giaodiện giúp người dùng giao tiếp với ứng dụng Giao diện này được gọi là giao diện đồhọa (GUI) của ứng dụng Là các ứng dụng windows chạy trên máy tính – mã lệnh thựcthi ngay trên máy tính: Microsoft, Word, Excel, Access, Calculator, yahoo, Mail… làcác ứng dụng Windows Forms
Ưu điểm nổi bật của winform là giao diện kéo thả dễ sử dụng; Gắn các event chocác button chỉ cần double click, lại hỗ trợ quá trời event như click, hover, …; Việc viếtcode cũng vô cùng trực quan: từ việc lấy text từ TextBox cho tới show dữ liệu bằngMessageBox, hoặc dùng Grid để kết nối SQL
Trang 11Chương 3: THIẾT KẾ CHƯƠNG TRÌNH
3.1 MÔ TẢ CHƯƠNG TRÌNH
Luật chơi game cờ Caro:
+ Quân cờ trong game sẽ được biểu diễn bởi kí tự X/O
+ Mỗi người chơi sẽ có 1 khoảng thời gian nhất định, sau khoảng thời gian
đó mà người chơi không đánh sẽ bị xử thua
Trang 12Panel pnlBanco Chứa bàn cờ được vẽ.
Lable lb_NC1/lb_NC2 Chứa tên người chơi
Trang 13Panel pn_anh1/pn_anh2 Chứa ảnh đại diện cho người chơi.
PictureBox Doinguoi Chứa hình kí tự tiếp theo người chơi sẽ
đánh, cũng đại diện cho người chơi tiếptheo sẽ đánh
Button btn_Gamemoi Tùy chọn game mới cho người chơi.Button btn_quaylai Tùy chọn quay lại cho người chơi
Button btn_datlai Tùy chọn đặt lại điểm cho người chơi.Button btnthoat Tùy chọn thoát game cho người chơi
Timer prcbDemgio Đồng hồ đếm thời gian để người chơi suy
nghĩ
3.2.2 Tạo bàn cờ
Bàn cờ sẽ được tạo bằng cách tạo tạo 1 ô cờ với kích thước cho sẵn sau đó add
nó vào bàn cờ bằng 2 vòng lặp lồng nhau Ô cờ sau sẽ được tạo dựa vào vị trí của ô cờtrước nó Vì thế sẽ tạo 1 button khác gọi là btncu để lưu lại vị trí ô cờ trước đó Sau khi
ô cờ được tạo sẽ thay vị trí của nó cho btncu (Hình 3.2.2)
Trang 143.2.3 Xử lý quân cờ sẽ đánh
Đối với game cờ Caro người chơi sẽ đánh với 2 kí tự X và O, game được càisẵn người đánh O sẽ đánh trước, vấn đề ở đây là làm cách nào để đổi từ O sang X saukhi người chơi đã đánh và hiện kí hiệu tiếp theo sẽ đánh ở ô nhỏ bên dưới tay trái
+ Tạo 1 lớp người chơi để lưu thông tin của người chơi đó ở đây là hình.(Hình 3.3)
Trang 15+ Khi nhấn vào 1 ô cờ sẽ kiểm tra ô cờ có trống hay không nếu có thìbackground của ô cờ đó sẽ được gán bằng kí hiệu của người chơi đangđánh còn không thì không cho đánh.
Trang 16+ Sau đó khi người chơi click vào ô cờ ta sẽ lấy tọa độ của ô cờ được đánh.
+ Xử lý hàng ngang: Kiểm tra từ vị trí vừa đánh sang bên phải và bên trái,nếu background giống nhau sẽ tăng 1, nếu 2 bên cộng lại đủ 5 thì thắng
và cộng điểm, ngược lại thì bỏ qua
Trang 17Hình 3.2.4.1 Thắng theo ngang
+ Xử lý hàng dọc: Kiểm tra trên và dưới vị trí đánh nếu giống với vị trímình vừa đánh thì tăng 1 sau đó cộng lại nếu đủ 5 thì thắng và cộngđiểm ngược lại bỏ qua
Trang 18Hình 3.2.4.2 Thắng theo dọc
+ Xử lý chéo chính: Kiểm tra đường chéo chính của vị trí đánh nếu giốngvới vị trí mình vừa đánh thì tăng 1 sau đó cộng lại nếu đủ 5 thì thắng vàcộng điểm ngược lại bỏ qua
Trang 19Hình 3.2.4.3 Thắng theo chéo chính
+ Xử lý chéo phụ: Kiểm tra đường chéo phụ của vị trí đánh nếu giống với
vị trí mình vừa đánh thì tăng 1 sau đó cộng lại nếu đủ 5 thì thắng và cộngđiểmXư ngược lại bỏ qua
Trang 22Quay lại: Để biết được quần cờ nào đã được đánh phía trước ta khởi tạo 1 stack
để lưu các quân cờ khi nó được đánh Điều này tiện cho khi người chơi muốn quay lại,
ta chỉ cần kiểm tra nếu số lượng quân cờ trong stack lớn hơn 0 ta sẽ lấy vị trí từ quân
cờ ra và xóa background của nó sau đó đổi lại người chơi, đổi ảnh
Đặt lại điểm: Khi này điểm của 2 người chơi sẽ đếu trả về 0
Trang 23Hình 3.2.6 Tùy chọn người dùng
Trang 24Chương 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
4.1 KẾT LUẬN
Về cơ bản chương trình đã hoàn thiện được các tính năng cần có về 1 game cờCaro Người dùng có thể sử dụng chương trình để chơi, game có thể phân thắng bại vàcác lựa chọn khác để người dùng chọn Game còn những ưu nên phát huy và nhượcđiểm cần điều chỉnh
Ưu điểm: Sử dụng C# dễ dàng hơn cho người dùng, giao diện sinh động hơn,trực quan hơn, … So với game khi được viết bằng C thì C# với giao diện dễ nhìn hơn
và cách chươi cx đơn giản hơn so với những C
Nhược điểm: Game còn nhiều lỗi ẩn mà chưa thể fix, vì kiến thức còn hạn chếnên chưa thể làm được 1 game hoàn thiện hơn
4.2 HƯỚNG PHÁT TRIỂN
Hướng phát triển của game là có thể cho phép người chơi thay đổi tên ngườichơi, kí hiệu đánh hoặc chọn tỉ lệ bàn cờ mà người chơi muốn như bàn cờ 3X3,5X5… Tìm hiểu thêm kiến thức về AI và áp dụng để người chơi đấu với máy hay cóthể sử dụng mạng LAN để người dùng có thể chơi với nhau
Trang 25TÀI LIỆU THAM KHẢO
[1] https://hoangphongdhhp.blogspot.com/2016/07/game-co-caro-viet-bang-c.html[2] https://www.youtube.com/watch?v=rnrNL1CT7TM&t=10s