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
Khánh Hòa - 2021
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
MSSV: 61130752
Trang 3TRƯỜNG ĐẠI HỌC NHA TRANG
Khoa: 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
MSSV: 61130752
Khóa: 61 Ngành: Công nghệ Thông tin
Lần Ngày Nội dung Nhận xét của GVHD
Nhận đề tài hướng dẫn và định hướng giải quyết vấn
đề Sinh viên trình bày kế hoạch thực hiện
Sinh viên và GVHD trao đổi nội dung của đề tài Phân chia công việc theo từng thời gian sao cho phù hợp với yêu cầu
Sinh viên trình bày việc mô phỏng thuật toán chính dựa trên kiến thức đã được học ở môn kỹ thuật đồ họa và các kiến thức thu nhận được từ Internet để minh họa bài toán
đa dạng nhất có thể
Sinh viên hiểu được vấn đề cần phải thực hiện và có giải pháp cho từng vấn đề cụ thể Tuy nhiên một vấn đề hoàn toán mới là sử dụng thư viện của chuột hay làm giao diện thì chưa làm lần nào nên cần đầu tư nhiều thời gian hơn
Sinh viên hoàn thiện các thuật toán đã đề ra với dữ liệu đầu vào được nhập từ bàn phím Trình bày thuật toán với các trường hợp sai
và chỉ ra được hướng khắc phục cho các trường hợp đó
Sinh viên hiểu nội dung của thuật toán khá chi tiết với các trường hợp hạn chế của thuật toán Việc lập trình cũng hoàn thành ở mức
độ nhập dữ liệu từ bàn phím bằng giao diện nhưng vấn đề với chuột thì chưa thực hiện được
5 28/01/2021 Sinh viên trình bày bản thảo Báo cáo lần này đã khắc phục được
Trang 4phần phương pháp và kết quả chưa nổi bât, chưa có sự liên kết giữa các phần
Sinh viên nộp bản thảo lần cuối sau khi đã chỉnh sửa các yêu cầu như đã đề ra
Sinh viên nghiêm túc chỉnh sửa báo cáo theo định hướng của GVHD
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ưởng củ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ừng mặ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 cho TTCS
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
(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
LỜI CAM ĐOAN i
LỜI CẢM ƠN v
LỜI MỞ ĐẦU vi
Chương 1: TỔNG QUAN VẤN ĐỀ 1
Chương 2: CƠ SỞ LÝ THUYẾT 2
2.1 GIỚI THIỆU VỀ C# 2
2.2 WINFORM 2
Chương 3: THIẾT KẾ CHƯƠNG TRÌNH 3
3.1 MÔ TẢ CHƯƠNG TRÌNH 3
3.2 XÂY DỰNG CHƯƠNG TRÌNH 4
3.2.1 Giao diên chính chơi game 4
3.2.2 Tạo bàn cờ 5
3.2.3 Xử lý quân cờ sẽ đánh 6
3.2.4 Xử lý thắng thua 7
3.2.5 Đếm thời gian 12
3.2.6 Xử lý các tùy chọn người dùng 13
Chương 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 16
4.1 KẾT LUẬN 16
4.2 HƯỚNG PHÁT TRIỂN 16
TÀI LIỆU THAM KHẢO 17
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ành tố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 trong thờ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ài tố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
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ải trí 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ển vớ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ấy trắ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ản thậ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ựng trê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ểm cho 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ác chức năng có thể phát triển thêm cho game
Trang 9Chươ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ê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 10
Chương 2: CƠ SỞ LÝ THUYẾT
2.1 GIỚ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ây dự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 Executable Code
và Runtime Environment, cho phép chúng ta sử dụng các ngôn ngữ high-level đa dạ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.2 WINFORM
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 giao diệ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ực thi 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 cho các button chỉ cần double click, lại hỗ trợ quá trời event như click, hover, …; Việc viết code cũng vô cùng trực quan: từ việc lấy text từ TextBox cho tới show dữ liệu bằng MessageBox, 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
Hình 3.1 Kí tự XO trong cờ Caro
+ Khi bắt đầu game một bàn cờ với tỉ lệ 20 X 20 sẽ được tạo ra 2 người chơi
sẽ đều bắt đầu với số điểm là 0
+ Người đầu tiên đánh sẽ đánh ở ô bất kì trên bàn cờ sau đó người chơi khác sẽ đánh nhưng không được đánh trên ô đã được đánh
+ Quy tắc thắng: Nếu người chơi đánh đủ 5 ô theo chiều ngang, chiều dọc, chéo chính, chéo phụ Nếu ai thắng sẽ được cộng 1 điểm
+ 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
Panel pn_anh1/pn_anh2 Chứa ảnh đại diện cho người chơi
Trang 13PictureBox 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ếp theo 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
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ài sẵn người đánh O sẽ đánh trước, vấn đề ở đây là làm cách nào để đổi từ O sang X sau khi 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+ 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
Trang 19+ Xử lý chéo chính: Kiểm tra đường chéo chính 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ểm ngược lại bỏ qua
Hì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 20Hình 3.2.4.4 Thắng theo chéo phụ
Trang 21Ở đây ta dùng công cụ timer để bắt thời gian của sự kiện click và thuộc tính của công
cụ progressBar Ta dùng sự kiện tick của timer để nhảy thời gian đến khi giá trị đó lớn hơn giá trị max đc cài Nếu hết thười gian người chơi chưa đánh sẽ xử thua hoặc khi người chơi
đã đánh thì thời gian sẽ đc chạy lại
Hình 3.2.5 Thời gian
3.2.6 Xử lý các tùy chọn người dùng
Game mới: Khi người chơi chọn game mới thì sẽ xóa bàn cờ và tạo lại bàn cờ mới, thời gian cũng được đặt lại
Trang 22Thoát: Khi người chơi nhấn vào thoát game chương trình sẽ đóng bằng phương thức Exit và bắt sự kiện Closing để hiện thông báo
Quay 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
Trang 23Đặt lại điểm: Khi này điểm của 2 người chơi sẽ đếu trả về 0
Hì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ười chơ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