Bagaimana cara menerapkan kemampuan menyimpan dan memuat dari penyimpanan di C?

pemrograman


Saya memiliki klon monopoli yang perlu saya tambahkan kemampuan untuk menyimpan dan memuat dari penyimpanan tetapi saya tidak tahu harus mulai dari mana, jadi bantuan apa pun sangat kami hargai!

GitHub – Mitul-Joby/Monopoly: Implementasi monopoli permainan papan di C, di terminal Anda.[^]

Apa yang saya coba:

Mencatat setiap pelemparan dadu tetapi nama pemain rusak

Solusi 1

Ini sangat bergantung pada fungsi kode yang ada. Secara umum Anda hanya akan menulis data ke file untuk disimpan, dan membaca dari file tersebut untuk memuat ulang. Namun implementasi pastinya akan sangat bergantung pada struktur kode yang ada.

Melihat Aliran I/O | Microsoft Belajar[^].

Solusi 2

Kami tidak dapat memberi Anda jawaban spesifik untuk hal ini: kami tidak tahu apa yang Anda coba, atau pengetahuan apa pun tentang perangkat lunak tersebut – dan saya sendiri tidak akan mempelajari keseluruhan proyek github untuk mengetahui cara kerjanya sebelumnya mencoba menambahkan fitur.

Jika Anda ingin menambahkan fitur ke proyek yang sudah ada, Anda harus memahami keseluruhan proyek terlebih dahulu: hanya “mencatat lemparan dadu” tidak akan membantu karena itu bahkan tidak menutup semua informasi yang Anda perlukan untuk memulihkan permainan sejauh ini: tidak wajib membeli properti tempat Anda mendarat, kartu Peluang dan Peti Komunitas dalam urutan acak, dan lain sebagainya.

Jadi buka proyek github dan periksa dengan cermat: ketika Anda mengetahui cara kerjanya, Anda dapat mulai memikirkan tentang mod tetapi tidak sebelumnya!

Solusi 3

Anda beruntung, kode yang ada sudah memuat ‘lokasi’ dari sebuah file (‘lokasi.csv‘ dalam ‘data‘ map). Silakan lihat di ReadLocations berfungsi dan menggunakannya sebagai referensi untuk mengimplementasikan (katakanlah) ReadPlayers satu.
Kemudian, dengan pengalaman yang diperoleh, Anda dapat dengan mudah menulis pelengkapnya WritePlayers kode juga.

Solusi 4

Saat menguji program di Windows, sangat mengganggu karena program dihentikan jika ukuran jendela perintah tidak tepat. Ini harus diubah agar program lebih mudah di-debug dari lingkungan pengembangan.
Ini adalah versi perbaikan untuk Windows, yang menyesuaikan ukuran jendela alih-alih menutup program.

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);
}

Seperti yang telah dikatakan, kode ini memiliki banyak kelemahan, mulai dari variabel yang tidak diinisialisasi hingga masalah tumpukan. Dalam fungsi ReadPlayers(), misalnya, terjadi stack overflow yang dilaporkan oleh debugger.
Di sini, scanf dan %s digunakan untuk membaca string ke dalam array dengan satu byte, yang terlihat tidak sehat.

コメント

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