Bài tập mảng.
Hôm nay, nguyên một ngày lớp C1019i1 đắm mình vào trong những i,j rồi x, o rồi return của bài tập “Tic tac toe” hay thường được chúng ta vẫn gọi là cờ caro. Sau cả buổi sáng hoang mang với những điều kiện thắng của trò chơi, cuối cùng vào cuối ngày, các thành viên trong lớp cũng đã bước đầu tháo gỡ được nỗi ám ảnh trong đầu với sự trợ giúp của coach Châu và coach Hoàng.
Với bài toán game cờ caro, điều đầu tiên chúng ta cần giải quyết chính là in ra bàn cờ caro, điều mà các học viên đã được học qua bài thực hành bàn cờ caro từ buổi trước. Tiếp đến là bước giải quyết vấn đề khi chúng ta tương tác với bàn cờ caro. Điều khó khăn ở đây là sau mỗi lần click vào ô cờ, chúng ta sẽ lần lượt thay đổi giá trị của ô thành “X” hoặc “O” tương ứng với lượt chơi của từng người. Điều này được giải quyết khi trong hàm in bàn cờ, chúng ta thêm thuộc tính id vào trong td và dùng thuộc tính onclick để gọi hàm chuyển đổi giá trị. Ban đầu giá trị ô lúc click sẽ được đặt giá trị là “X” và đồng thời thay đổi một biến trung gian để đổi giá trị thành “O” trong lần click ô tiếp theo. Theo hướng giải quyết vấn đề, có 1 vấn đề phát sinh khi ta cần giữ cho các ô đã có giá trị không bị thay đổi khi bị click vào. Với vấn đề này, với mỗi lần gọi hàm chuyển giá trị ô, ta cần kiểm tra xem ô đó có rỗng không trước khi thực hiện gán giá trị cho ô ấy. Bước cuối là bước cuối cùng và “khoai” nhất khi phải kiểm tra 4 trường hợp thắng, tương đương với 4 hàng dọc, ngang và 2 dòng chéo. Ở bước này để giải quyết, chúng ta sẽ cần 1 biến đếm count và biến để lưu trữ vị trí hiện tại của lần click hiện tại của người chơi. Sau đó từ vị trí người chơi vừa click, chúng ta sẽ xem các hàng xung quanh vị trí ấy-theo 2 chiều phía trước và phía sau vị trí gốc đã thỏa mãn 5 kí tự “X” hoặc “O” thẳng hàng chưa, nếu thỏa mãn thì in ra màn hình thông báo chiến thắng. Ở mỗi lần kiểm tra điều kiện thắng ở mỗi hàng, ta cần reset lại vị trí gốc và biến đếm count = 1; Hàm để check điều kiện thắng đang khá lặp và khá dài, mong là trong tối nay, em sẽ nghĩ ra cách tốt hơn để sử dụng hàm check ngắn gọn và tối ưu hơn.