01/10/2018, 09:18

Xin hướng dẫn về lưu dữ liệu Game Snake C++ ạ

Các bro cho em hỏi làm sao để lưu file dữ liệu game snack như chiều dài rắn, tọa độ từng đốt, hướng di chuyển ạ? Cho em xin code ngâm cứu luôn càng tốt ạ, bí mấy ngày rồi

... viết 11:25 ngày 01/10/2018

Chiều dài rắn bạn có thể sử dụng kiểu unsigned int, tọa độ từng đốt lưu vào 1 std::vector<std::pair<int, int>>, hướng di chuyển có thể lưu bằng kiểu int với giá trị 1 2 3 4 đại diện cho mỗi hướng. Và còn nhiều cách để lưu trữ khác.

Duy Lâm viết 11:20 ngày 01/10/2018

E chưa rõ về cách này cho e xin code ví dụ vs ạ

Tao Không Ngu. viết 11:32 ngày 01/10/2018

Hi Duy Lâm.
1 Đầu tiên phân tích con rắn đước cấu tạo từ các node. Và chiều dài thay đổi nên dùng linklist.
Mỗi node chứa thông tin toạn độ màu sắc hình dáng node. Hai node dặc biệt là node dầu và node cuối.
2 Khi con rắn di chuyển bạn thay đổi tọa độ node cuối lên vị trí kết tiếp sau đó gán cho nó thành node đầu, và node kết tiếp nó gán thành node cuối.
3 Khi ăn mồi thì trèn thêm một node vào và gán nó là node đầu.
4 Hướng di truyển thì tạo một kiểu enum rồi tạo một thuộc tính cho nó.

Duy Lâm viết 11:34 ngày 01/10/2018

cám ơn a, nhưng nếu có code hướng dẫn thì hay quá

HK boy viết 11:22 ngày 01/10/2018

C++ thì dùng luôn deque của STL cho tiện. Đây nhé:

  • Chiều dài rắn: d.size()
  • Toạ độ từng đốt: d[i] (truy cập trực tiếp vào được)
    Khi con rắn tiến 1 bước mà không ăn mồi thì độ dài nó vẫn thế -> thêm đầu (toạ độ mới) mất O(1) và bỏ đuôi mất O(1) -> đảm bảo thời gian
  • Hướng di chuyển: dùng 1 biến để lưu

    Bạn tự tìm hiểu deque nhé. Nói chung là dùng vector cũng được (chắc không quan trọng thời gian lắm đâu nhỉ, dùng vector thì lúc bỏ đuôi sẽ mất thời gian nếu như thao tác bỏ đuôi được thực hiện nhiều lần)
Tao Không Ngu. viết 11:32 ngày 01/10/2018

Hi HK boy
Tại sao lại phải bỏ đuôi ? Khi set lại tọa độ nó là đầu @_@!

HK boy viết 11:30 ngày 01/10/2018

Khi con rắn tiến lên 1 bước thì vị trí của cả đầu và đuôi nó đều thay đổi mà?

Bài liên quan
0