PDA

View Full Version : Cần giúp đở về game caro!



minhdungqt
09-07-2009, 18:21
Mình đang làm project game caro bằng c# nhưng không biết làm chức năng undo,bạn nào biết làm chức năng undo mình với (search rồi mà không thấy).
Thanks a lot.

dammio
11-07-2009, 17:08
Bạn lưu các thao tác người chơi từng bước vào bộ nhớ phụ hay lưu trong Clipboard của PC, nếu người dùng nhấn Undo thì đưa toàn bộ bàn cờ caro về trạng thái trước đó.

minhdungqt
14-07-2009, 10:50
Bạn lưu các thao tác người chơi từng bước vào bộ nhớ phụ hay lưu trong Clipboard của PC, nếu người dùng nhấn Undo thì đưa toàn bộ bàn cờ caro về trạng thái trước đó.
Còn gà nên chưa biết làm thế nào?Bạn có thể nói rõ hơn không?(cách lưu các thao tác người chơi từng bước vào bộ nhớ phụ hay lưu trong Clipboard của PC)
Thanks.

dammio
14-07-2009, 20:32
Các lưu theo bộ nhớ phụ thế này:

1. Bàn cờ caro có kích thước M x N thì ta có M x N vị trí. Ví dụ đơn giản bàn cờ có kích thước 5 x 5 thì có 25 vị trí.

2. Ta có 2 kí hiệu cờ là X và O dành cho 2 người chơi.

3. Khi người dùng hoặc máy đánh cờ từng bước (đánh X hay 0) đó thì sau ngay sau khi đánh xong, tạo 1 phương thức lưu lại trạng thái bàn cờ lúc đó.
a. Lưu các vị trí mà người chơi có kí hiệu X và người chơi có kí hiệu 0 đã đánh vào dữ liệu, dữ liệu này có thể: mảng 2 chiều hoặc file text theo từng bước. Như vậy có nhiều bước thì có nhiều mảng 2 chiều hoặc nhiều dòng lưu trên file text. (ở đây bạn chọn kiểu data lưu sao cho tối ưu là tùy bạn)

b. Cứ lưu như thế, nếu người chơi nhấn Undo thì tìm bước trước của bước hiện tại set bàn cờ về thời điểm đó, sau đó đặt bước lưu từ bước này. (các bước tiếp theo bạn có thể xóa đi hoặc giữ lại tùy bạn)


HÌNH DÙNG 1 FILE TXT NHƯ SAU:
-------------------------------

B1. [1][2]=0, [4][6]=0, [1][9]=X
B2. [1][2]=0, [4][6]=0, [1][9]=X, [12][5]=X
-------------------------------

Ở bước 1, bạn dùng hàm cắt chuỗi B1 ở dùng để lấy số 1 là biết bước đang lấy, tiếp theo khoảng trắng và dùng các kỹ thuật xử lý để tìm các vị trí 2 người chơi đánh ở vị trí nào.
Ở bước 2, là bước tiếp của bước 1 với sự phát sinh cái mới. Bạn có lưu hoặc bỏ vị trí bước 1 đã có, mình lưu ở "bước 2 = bước 1 + cái mới" vì không muốn đọc lại file dòng trước.

Còn lại chỉ nặng về kỹ thuật xử lý và tối ưu thuật toán dữ liệu, chúc bạn làm được.