Xin chào, và chào mừng trở lại.
Trong bài giảng này, tôi muốn cung cấp cho bạn một thách thức khác.
Nó liên quan đến các chức năng, nhưng thử thách này sẽ thiên
về phân chia và chinh phục. Nó sẽ để hiểu thêm về việc tổ chức chương trình
của bạn xung quanh các mô-đun, nó sẽ để hiểu rõ hơn về cách giải quyết vấn đề.
Điều tôi muốn bạn làm là tôi muốn bạn viết một trò chơi tic-tac-toe.
Điều này sẽ giúp bạn chỉ trở thành người giải quyết vấn đề tốt hơn
và nó sẽ giúp bạn tổ chức chương trình của bạn xung quanh các chức năng.
Bạn cũng sẽ sử dụng một mảng,
bạn sẽ phải tìm tìm ra cách định dạng dữ liệu nhất
định, nhưng nó sẽ là một mô phỏng một trò chơi tic-tac-toe.
Chúng tôi sẽ không viết máy tính.
Nó sẽ là người chơi 1 đấu với người chơi 2.
Vì vậy, tôi muốn bạn viết một chương trình phát tic-tac-toe.
Hy vọng rằng mọi người đều Tôi nên nói quen thuộc với chương
trình này hoặc trò chơi này.
Nó chỉ là một trò chơi được chơi trên lưới 3 x 3 với hai người chơi.
Bạn thay phiên nhau.
X là một cái mũi.
Hy vọng rằng điều đó rung lên một hồi chuông.
Tôi không muốn phải đi và giải thích trò chơi này, nhưng hy
vọng bạn đã quen với tic-tac-toe.
Tôi sẽ cung cấp một ít trình diễn về cách nó hoạt động và tôi mong
đợi kết quả đầu ra sẽ diễn ra như thế nào.
Nhưng đó là một trò chơi tic tac toe cơ bản.
Điều tôi muốn làm là bạn có lẽ
sẽ cần tạo một mảng để đại diện cho bảng thực tế, lưới 3 x 3.
Tôi nghĩ rằng bạn có thể thoát khỏi chỉ với tạo một mảng thứ nguyên.
Bạn thực sự có thể tạo ra một Mảng 2D cũng để đại diện cho các
hàng và cột.
2D có lẽ sẽ nhiều hơn trực quan, nhưng có
thể khó hình dung hơn một chút trong mã của bạn.
Nhưng cách nào cũng hiệu quả.
Điều tốt về lập trình là có nhiều giải pháp cho một vấn đề.
Tôi sẽ nói với bạn một trong những điều của tôi giải pháp và cách tiếp cận thiết kế
của tôi, nhưng hãy thay đổi thiết kế.
Miễn là bạn đang sử dụng c xây dựng một cách chính xác, đó là tất cả
những gì tôi quan tâm.
Tôi muốn bạn học cách sử dụng c.
Miễn là chương trình của bạn được modul hóa và nó có tổ
chức và dễ bảo trì cũng như là mã chất lượng, đó là điều tôi lo lắng.
Vì vậy, một cách để triển khai chỉ một cách là đại diện cho bảng dưới dạng một
mảng một chiều có mười phần tử.
Lý do tôi có mười yếu tố ở đây là tôi không muốn bạn sử dụng số 0.
Mười yếu tố này sẽ đại diện cho hội
đồng quản trị, nhưng họ cũng sẽ đại diện cho tọa độ trên bảng.
Vì vậy, tôi sẽ demo cái này và hiển thị bạn làm thế nào tôi nghĩ về việc làm việc.
Nhưng con đường bạn đang đi để
thực sự chọn hộp mà bạn muốn vẽ vào sẽ dựa trên số phần tử.
Ngoài việc tạo một mảng cho hội đồng quản trị, bạn phải cố gắng nghĩ xem bạn sẽ giải
quyết vấn đề này như thế nào xuống, bạn sẽ tổ chức nó như thế nào.
Tôi đang nghĩ ở mức tối thiểu rằng bạn sẽ cần
ít nhất ba chức năng, có thể nhiều hơn.
Nhưng bạn cần ít nhất có một chức năng kiểm tra người chiến thắng.
Điều này về cơ bản sẽ chỉ thấy nếu một người đã thắng trò chơi hoặc thậm chí
họ cũng có thể kiểm tra kết quả hòa.
Bạn nên có một chức năng mà vẽ bảng.
Bởi vì bạn sẽ vẽ bảng sau mỗi lượt của người chơi.
Và bạn sẽ - vì vậy bạn sẽ sử dụng lại cái này.
Một chức năng khác để đánh dấu bảng, điều
này xảy ra khi người dùng thực sự muốn đặt x hoặc một o trong một ô nào đó.
Bạn cần một chức năng để thiết lập ô đó như một x hoặc một o.
Điều gì sẽ xảy ra là bạn có thể sẽ điền mảng với x hoặc o đó.
Và theo cách đó bạn có thể nhìn vào mảng để xem bạn thắng hay thua.
Và trong bảng đánh dấu, nó cũng sẽ cho phép bạn kiểm tra
lựa chọn không hợp lệ.
Vì vậy, nếu các lựa chọn hợp lệ là từ một đến chín và người
dùng đã nhập mười, bạn sẽ nói, này, bạn không thể làm điều đó, hãy thử lại.
Trò chơi phải thân thiện với người dùng, phải trực quan để sử dụng
theo quan điểm của người dùng và nó nên được tổ chức
theo quan điểm lập trình.
Thực sự nghĩ về điều này.
Lên kế hoạch, lập kế hoạch, lấy giấy ra, bắt đầu viết một số thiết kế về cách bạn sẽ tấn công vấn đề này
và những gì các chức năng bạn sẽ cần sử dụng.
Theo cách mà tôi đang nghĩ trong số này sẽ chạy, hãy để tôi
cho bạn xem một bản demo nhỏ.
Tôi sẽ không cho bạn xem bất kỳ nguồn nào nhưng đây là những gì tôi hình dung trò chơi
sẽ như thế nào khi chúng tôi chạy nó.
Có thể là một tiêu đề nhỏ điều đó nói rằng, này, trò chơi.
Và sau đó cũng có một chút thông tin về người chơi.
Người chơi 1 sẽ là x, người chơi 2 sẽ là o.
Hãy nhớ rằng, điều này không có đang chơi máy tính.
Bạn chỉ có thể đưa vào mỗi lượt.
Vì vậy, bạn phải chơi trò chơi này với một người bạn đang ngồi bên cạnh bạn,
và họ sẽ phải cho bạn biết nơi để đặt số.
Nếu bạn thực sự nhận được đầy tham vọng,
bạn có thể viết trò chơi để chơi với máy tính.
Nhưng bạn sẽ nhận thấy rằng 3 x 3 lưới có các số trong đó ban đầu.
Bạn có thể sử dụng những con số này để nhập.
Vì vậy, nếu bạn là người chơi muốn đến lượt của họ và họ
đại diện cho x, tùy thuộc vào số họ nhập, đó là nơi
x sẽ được đặt.
Vì vậy, chúng tôi in lưới, chúng tôi hiển thị bảng và sau đó chúng tôi cũng cho người
dùng biết đó là lượt của ai và chúng tôi yêu cầu họ nhập một số.
Vì vậy, trong trường hợp này, tôi sẽ tiếp tục và nhập số hai và nhấn trở lại.
Và điều gì sẽ xảy ra sau khi tôi đánh hai và
quay trở lại, nó sẽ thực sự xem liệu ai đó đã thắng, nó sẽ xóa màn hình
và nó sẽ vẽ lại bảng.
Vì vậy, sau khi tôi nhấn 2 và nhập, bạn sẽ chú ý rằng tôi vẫn có danh hiệu, tôi vẫn
có người chơi 1 và người chơi 2.
Nhưng bây giờ ở ô số 2, tôi có một dấu x.
Vì vậy, những gì khác tôi nên làm có lẽ tôi nên kiểm
tra trước khi hiển thị bảng xem hoặc không, chúng tôi đã có một người chiến thắng hoặc trận hòa.
Và rõ ràng đó là lần đầu tiên mục nhập vì vậy chúng tôi không có.
Vì chúng tôi không có người chiến thắng hoặc hòa, bây giờ tôi
sẽ yêu cầu người chơi nhập một số và sau đó họ có thể chọn bất kỳ số nào ở đây.
Bây giờ nếu tôi nhập một không hợp lệ số như 10, nó sẽ cho tôi biết nó
không hợp lệ.
Và nó sẽ cho phép tôi có thể thực hiện một động thái khác.
Nếu tôi nhập 2, 2 cũng nên không hợp lệ.
Vì vậy, nếu tôi nhập 2, nó cũng thông báo không hợp lệ bởi vì 2 đã được lấy bởi x.
Vì vậy, nếu chương trình cho phép tôi thử lại, bạn có thể thoát khỏi lượt của họ nhưng
điều đó không thực sự công bằng.
Vì vậy, bây giờ tôi chỉ nói Tôi muốn đặt chữ o ở đâu? Tôi sẽ nói
5, tôi sẽ đặt nước đi không hợp lệ, nó sẽ vẽ
lại bảng và có o và 5.
Và bây giờ nó cho biết người chơi 1.
Và bạn tiếp tục làm điều này cho đến khi bạn có một người chiến thắng hoặc một trận hòa.
Tôi chỉ nói 9.
Bây giờ tôi có một dấu x ở đó, hợp lệ mục nhập là 1 3 4 6 7 và 8.
Tôi sẽ nói 3.
Và chúng ta hãy thực sự cố gắng đưa x đến giành chiến thắng vì vậy bây giờ x sẽ chuyển
sang tám và tôi sẽ đặt o và 6 chỉ để cho bạn thấy rằng trò chơi hoạt động với người chiến thắng.
Và sau đó tôi đặt 7 cho x, trò chơi bây giờ nên kết thúc. Tôi đánh trả.
Nó nói rằng người chơi một thắng, và nó thậm chí chơi một chút âm thanh cho tôi, tôi đã
làm một chút điều thú vị ở đó.
Vậy là trò chơi kết thúc, người chơi một thắng.
Và nó cũng sẽ xảy ra nếu người chơi 2 thắng hoặc nếu có một trận hòa.
Vì vậy, hãy nghĩ về cách bạn muốn để tấn công vấn đề này.
Chương trình nhỏ hay.
Tôi sẽ xem xét một giải pháp và cung cấp mã nguồn trong bài giảng tiếp theo. Cảm ơn bạn.