Đầu tiên chúng ta phải vẽ lưới. Bạn phải viết một hàm để vẽ lưới, Bạn có thể sử dụng hàm rùa goto để làm điều này, một dòng sẽ trông giống như thế này
up[] goto[x1, y1] down[] goto[x2, y2]
Chúng tôi muốn tạo lưới có kích thước 400x400.
Sau đó, bạn có thể gọi hàm ngay sau hàm
Gợi ý. Lượt thích đầu tiên trông như thế này
up[] goto[-67, 200] down[] goto[-67, -200]
Giải pháp
def grid[]: up[] goto[-67, 200] down[] goto[-67, -200] up[] goto[67, 200] down[] goto[67, -200] up[] goto[-200, -67] down[] goto[200, -67] up[] goto[-200, 67] down[] goto[200, 67]
Bước 2 Vẽ X
Tiếp theo chúng ta cần tạo một hàm vẽ x, hàm sẽ có 2 đối số là x và y. Bạn cũng có thể sử dụng hàm goto để vẽ cái này. x và y sẽ đề cập đến góc dưới cùng bên trái của hình vuông bạn đang vẽ
gợi ý 1. Một hình vuông là 133x133
gợi ý 2. Bạn sẽ cần đặt x + 133 và y + 133 vào đâu đó trong mã của mình
Giải pháp
def drawx[x, y]: up[] goto[x, y] down[] goto[x + 133, y + 133] up[] goto[x, y + 133] down[] goto[x + 133, y] up[]
Bước 3. Vẽ chữ O
Bây giờ chúng ta có thể chuyển sang vẽ chữ o. Hàm này cũng sẽ có hai đối số, x và y. Chúng sẽ trỏ đến góc dưới cùng bên trái
gợi ý 1. Rùa có chức năng vòng tròn
gợi ý 2. Bạn sẽ cần x + 67 và y + 5 trong mã của mình
Giải pháp
def drawo[x, y]: up[] goto[x + 67, y + 5] down[] circle[62]
Bước 4. Theo dõi lượt chơi của người chơi
Bây giờ chúng ta có tất cả mã để vẽ trên màn hình, chúng ta phải làm cho nó hữu ích, vì vậy, hãy thêm một cách để theo dõi lượt của ai. Chúng tôi có thể tạo Từ điển Boolean để theo dõi những gì người chơi bật vì chỉ có hai người chơi
state = {'player': False} players = [drawx, drawo]
Thao tác này sẽ tạo một biến trạng thái là một “mảng” với chỉ mục có tên là 'người chơi' được đặt thành false, nó cũng sẽ tạo ra một mảng các hàm có tên là người chơi. Hai hàm trong đó là hàm drawx[] và drawo[]. Chúng tôi sẽ sử dụng những thứ này để chọn hình dạng sẽ vẽ sau đó người chơi nhấp vào màn hình
Người chơi x = Sai/0
Người chơi o = True/1
state = {'player': False} #false = x true = o players = [drawx, drawo]
Bước 5. Nhấp vào một hình vuông
Khi người chơi nhấp vào màn hình, chúng ta cần thực hiện một số điều
- Tìm xem đến lượt ai
- Tìm góc dưới cùng bên trái của hình vuông được nhấp vào
- Vẽ một x/o trong hình vuông đó
- Chuyển sang lượt của ai
Đầu tiên chúng ta cần một biến mới sẽ là hàm vẽ cần thiết
Gợi ý. Sử dụng người chơi và giá trị int của trạng thái
Tiếp theo chúng ta cần một chức năng để tìm góc dưới cùng bên trái của hình vuông, chúng ta sẽ có tọa độ của địa điểm được nhấp để tìm hình vuông
gợi ý 1. Chúng ta có thể sử dụng chức năng này để tìm giá trị cho x hoặc y
def floor[value]: Return [[value] // 133] * 133 - 200
gợi ý 2. Nếu bạn sàn [] cả x và y, bạn sẽ nhận được góc dưới cùng bên trái
Sau đó, chúng ta cần vẽ một x hoặc o trong hình vuông đó, bạn có thể sử dụng biến bạn đã tạo trước đó với các giá trị x và y mới mà bạn có
Cuối cùng, bạn có thể chuyển lượt của người chơi, sử dụng biến trạng thái của bạn để thay đổi lượt của người chơi
Gợi ý. Bạn có thể đặt một bool thành không chính nó
________số 8_______
Bước 6. Vòng lặp mã
Ở cuối đoạn mã của bạn, bạn có thể sử dụng hàm done[] để lặp đoạn mã chúng tôi đã viết
done[]
Bước 7. Tạo một mảng 2D để lưu trữ bảng
Tiếp theo để đánh giá ai là người thắng trò chơi, chúng ta phải tạo một mảng 2D để lưu trữ giá trị của từng vị trí trên lưới, mỗi vị trí phải được khởi tạo thành '-'
up[] goto[-67, 200] down[] goto[-67, -200]0
Bước 8. Thêm X và O vào Mảng
Bây giờ chúng ta cần thêm từng lượt di chuyển của người chơi vào mảng, để làm được điều đó, chúng ta phải biết tất cả các giá trị sàn cho trục x và y, các giá trị sàn trông như thế này
Sử dụng điều này, chúng ta có thể sử dụng các câu lệnh if trong các hàm vẽ để thêm từng lần di chuyển vào mảng
Gợi ý. Ghi đè các giá trị x và y bằng chỉ mục chính xác sẽ hữu ích khi thêm vào mảng
Giải pháp
up[] goto[-67, 200] down[] goto[-67, -200]1
Bước 9. Tạo một hàm để kiểm tra xem ai đã thắng
Sử dụng các câu lệnh if bên trong vòng lặp for có thể giúp tìm mọi tổ hợp của 3 dòng. Bạn cũng có thể có một câu lệnh if cho mỗi kết hợp, khi bạn tìm thấy một người chơi có 3 liên tiếp thì trả lại chữ cái của người chiến thắng. Điều này sẽ được đặt trong chức năng nhấn gần cuối, nó sẽ không trả lại bất cứ thứ gì nếu không có người chiến thắng
gợi ý 1. Bạn sẽ cần so sánh 3 giá trị với nhau, đồng thời đảm bảo rằng chúng không có khoảng trống
gợi ý 2. Nó có thể trông giống như thế này đối với một đường chéo
up[] goto[-67, 200] down[] goto[-67, -200]2
Giải pháp
up[] goto[-67, 200] down[] goto[-67, -200]3
Bước 10. Vẽ lá thư của người chiến thắng
Khi bạn gọi chức năng, bạn sẽ cần kiểm tra xem ai đã thắng và sau đó xóa bảng nếu không có người chiến thắng. Nếu không, bạn nên gọi chức năng vẽ của mình ở giữa màn hình
Gợi ý. Sử dụng câu lệnh if để kiểm tra xem nó có trả về x hay o hay không, sau đó gọi hàm draw tương ứng là một ý tưởng hay. Bạn có thể sử dụng Clearscreen[] để xóa các bản vẽ trước đó
up[] goto[-67, 200] down[] goto[-67, -200]4
Bước 11. Khởi động lại khi hòa
Cuối cùng, chúng ta có thể thêm chức năng cuối cùng, một chức năng sẽ kiểm tra xem bảng có đầy x và o hay không, nếu có, nó sẽ xóa màn hình và vẽ lại lưới, sau đó nó cũng sẽ thiết lập lại mảng bảng. Nó sẽ được gọi từ bên trong chức năng nhấn ngay sau khi bạn kiểm tra xem ai đó đã thắng chưa