Console Tic-Tac-Toe App (tiếp theo)

Tram Ho

Thủ tục cuối cùng trong lượt di chuyển của User là cập nhật trạng thái của ván cờ Update_Match_Status;. Thủ tục này cũng sẽ được sử dụng lại ở lượt di chuyển của Computer giống như Put_Chess_Board;. Như vậy là chúng ta viết code rẽ nhánh bao gồm tất cả các trạng thái tiềm năng của Match_Status đã định nghĩa bởi kiểu Status:

  • Sẽ là USER_WIN – nếu User_Set có ít nhất một bộ số thắng cuộc.
  • Hoặc COMPUTER_WIN – nếu Computer_Set có ít nhất một bộ số thắng cuộc.
  • Hoặc DRAW – nếu Common_Set không còn giá trị nào có ý nghĩa và bàn cờ đã hết ô trống.
  • Hoặc PLAYING – nếu tất cả các trường hợp ở trên đều chưa hiện diện.

Do đó chúng ta sẽ có thêm các function hỗ trợ là Found_Wining (Move_Set);Found_Empty (Move_Set); để kiểm tra xem một *_Set bất kỳ có chứa bộ số thắng cuộc không, và kiểm tra một *_Set bất kỳ có đang ở trạng thái trống rỗng không.

Update_Match_Status;

Found_Winning;

Thao kiểm tra sự hiện điện của ít nhất một bộ số thắng cuộc bất kỳ trong User_Set hoặc Computer_Set có thể được thực hiện bằng những cách khác nhau:

  • Liệt kê các bộ số thắng cuộc sau đó kiểm tra sự hiện diện của từng bộ số đó trong Move_Set được truyền vào function.
  • Hoặc lấy ra lần từng bộ số trong Move_Set để kiểm tra tổng giá trị. Nếu có ít nhất một bộ số cho kết quả tổng là 15 thì trả về giá trị là TRUE.

Phép kiểm tra đầu tiên có thể áp dụng với mọi cách thức đánh số các ô trên bàn cờ. Còn cách làm thứ hai thì chỉ có thể áp dụng nếu như bàn cờ được đánh số như chúng ta đang sử dụng hiện tại.

Mỗi đường thẳng bất kỳ giữa hai biên đối diện của bàn cờ trong trường hợp này sẽ luôn đi qua các ô tạo thành một bộ số có tổng là 15.

Found_Empty;

Hàm kiểm tra một Move_Set được truyền vào có đang ở trạng thái rỗng hay không.

Main;

Và cuối cùng là code sử dụng ở Main, chúng ta sẽ thử Update_User_Move; thêm vài bước đi để kiểm tra hoạt động của Update_Match_Status;


Chia sẻ bài viết ngay

Nguồn bài viết : Viblo