Làm cách nào để triển khai khả năng lưu và tải từ lưu trong C?

lập trình


Tôi có bản sao độc quyền này mà tôi cần thêm khả năng lưu và tải từ một lần lưu nhưng tôi không biết bắt đầu từ đâu nên mọi trợ giúp đều được đánh giá cao!

GitHub – Mitul-Joby/Monopoly: Triển khai độc quyền trò chơi board game bằng C, trong thiết bị đầu cuối của bạn.[^]

Những gì tôi đã thử:

Ghi nhật ký mỗi lần tung xúc xắc nhưng tên người chơi bị hỏng

Giải pháp 1

Nó phụ thuộc rất nhiều vào những gì mã hiện có làm. Nói chung, bạn chỉ cần ghi dữ liệu vào một tệp để lưu và đọc từ tệp để tải lại. Nhưng việc triển khai chính xác sẽ phụ thuộc rất nhiều vào cấu trúc của mã hiện có.

Nhìn thấy Truyền phát I/O | Microsoft Tìm hiểu[^].

Giải pháp 2

Chúng tôi không thể cung cấp cho bạn câu trả lời cụ thể cho vấn đề này: chúng tôi không biết bạn đã thử những gì hoặc có hiểu biết gì về phần mềm không – và tôi sẽ không tìm hiểu kỹ toàn bộ dự án github để tìm hiểu cách thức hoạt động của nó trước đây đang cố gắng thêm các tính năng.

Nếu bạn muốn thêm các tính năng cho một dự án hiện có, trước tiên bạn cần phải hiểu khá nhiều về toàn bộ dự án: chỉ “ghi nhật ký tung xúc xắc” sẽ không hữu ích vì điều đó thậm chí còn không đóng được tất cả thông tin bạn cần để khôi phục dự án. trò chơi cho đến nay: không bắt buộc phải mua tài sản mà bạn đặt chân đến, các thẻ Cơ hội và Rương cộng đồng được sắp xếp theo thứ tự ngẫu nhiên, v.v.

Vì vậy, hãy truy cập dự án github và kiểm tra nó một cách cẩn thận: khi bạn biết nó hoạt động như thế nào, bạn có thể bắt đầu nghĩ đến mod nhưng không phải trước đó!

Giải pháp 3

Bạn thật may mắn, mã hiện tại đã tải ‘vị trí’ từ một tệp (‘địa điểm.csv‘ bên trong ‘dữ liệu‘ thư mục). Hãy nhìn vào ReadLocations funciton và sử dụng nó làm tài liệu tham khảo để triển khai (giả sử) của bạn ReadPlayers một.
Sau đó, với kinh nghiệm có được, bạn có thể dễ dàng viết phần bổ sung WritePlayers mã cũng vậy.

Giải pháp 4

Khi kiểm tra chương trình trong Windows, điều đặc biệt khó chịu là chương trình bị chấm dứt nếu cửa sổ lệnh không có kích thước phù hợp. Điều này nên được thay đổi để chương trình dễ gỡ lỗi hơn từ môi trường phát triển.
Đây là phiên bản cải tiến dành cho Windows, giúp điều chỉnh kích thước cửa sổ thay vì đóng chương trình.

C
#ifdef _WIN32
#include <windows.h>

void checkWindowSize(int screenWidth, int screenHeight)
{
     CONSOLE_SCREEN_BUFFER_INFO csbi;
     HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
     if (!GetConsoleScreenBufferInfo(hStdout, &csbi)) {
         printf("Error: GetConsoleScreenBufferInfo (%d)\n", GetLastError());
         exit(1);
     }

     SMALL_RECT srctWindow = csbi.srWindow;
     int width = srctWindow.Right - srctWindow.Left + 1;
     int height = srctWindow.Bottom - srctWindow.Top + 1;

     if (width < screenWidth || height < screenHeight) {
        if(width < screenWidth) 
             srctWindow.Right = screenWidth;
        if(height < screenHeight)
             srctWindow.Bottom = screenHeight;

        COORD wbuff = { screenWidth +1, screenHeight +1 };

        SetConsoleScreenBufferSize(hStdout, wbuff);
        SetConsoleWindowInfo( hStdout, TRUE, &srctWindow);

        // printf("\nTerminal size is too small. Please resize terminal.");
        // printf("\nSuggested size: %d X %d", screenWidth, screenHeight);
        // printf("\nCurrent size  : %d X %d", width, height);
        // printf("\n\n");
        // exit(1);
}

Như đã nói, mã có nhiều điểm yếu, từ các biến chưa được khởi tạo cho đến các vấn đề về ngăn xếp. Ví dụ: trong hàm ReadPlayers(), lỗi tràn ngăn xếp xảy ra mà trình gỡ lỗi báo cáo.
Ở đây, scanf và %s được sử dụng để đọc một chuỗi thành một mảng có một byte, trông có vẻ không lành mạnh.

コメント

タイトルとURLをコピーしました