ฉันได้ศึกษาซอร์สโค้ด DOOM เล็กน้อย ฉันจะบอกคุณว่ามันทำในที่นั่น
D_DoomMain มีฟังก์ชั่นเปิด / บันทึก / โหลดทั้งหมดรวมถึงสิ่งอื่น ๆ ตามที่ระบุไว้ในตอนต้นของไฟล์
// DESCRIPTION:
// DOOM main program (D_DoomMain) and game loop (D_DoomLoop),
// plus functions to determine game mode (shareware, registered),
// parse command line parameters, configure game parameters (turbo),
// and call the startup functions.
โดยทั่วไปไฟล์ทั้งหมดจะเต็มไปด้วยM_CheckParm
s ตั้งแต่ต้นจนจบ นั่นคือสิ่งที่ D_DoomLoop ประกอบด้วย มันเป็นวงขนาดใหญ่หนึ่งวง (ยาว 1,000-2,000 บรรทัด)
เนื่องจากคำถามของคุณคือ 'ฉันจะเขียนได้อย่างไร' ฉันจะวางโค้ดบางส่วนที่อ้างถึง gamesaves จาก D_DoomMain:
นี่คือข้อความที่สิ่งนั้นถูกนำมาใช้ที่ส่วนท้ายสุดของลูป
p = M_CheckParm ("-loadgame");
if (p && p < myargc-1)
{
if (M_CheckParm("-cdrom"))
sprintf(file, "c:\\doomdata\\"SAVEGAMENAME"%c.dsg",myargv[p+1][0]);
else
sprintf(file, SAVEGAMENAME"%c.dsg",myargv[p+1][0]);
G_LoadGame (file);
}
if ( gameaction != ga_loadgame )
{
if (autostart || netgame)
G_InitNew (startskill, startepisode, startmap);
else
D_StartTitle (); // start up intro loop
}
D_DoomLoop (); // never returns
นี่คือฟังก์ชั่นที่เข้าถึงสตริงที่คุณพบกระจายอยู่ทั่วโค้ด:
void M_ReadSaveStrings(void)
{
int handle;
int count;
int i;
char name[256];
for (i = 0;i < load_end;i++)
{
if (M_CheckParm("-cdrom"))
sprintf(name,"c:\\doomdata\\"SAVEGAMENAME"%d.dsg",i);
else
sprintf(name,SAVEGAMENAME"%d.dsg",i);
handle = open (name, O_RDONLY | 0, 0666);
if (handle == -1)
{
strcpy(&savegamestrings[i][0],EMPTYSTRING);
LoadMenu[i].status = 0;
continue;
}
count = read (handle, &savegamestrings[i], SAVESTRINGSIZE);
close (handle);
LoadMenu[i].status = 1;
}
}
คุณยังได้รับไฟล์ชื่อ p_savegame.c พร้อมสิ่งที่จะบันทึกข้อมูลที่เกี่ยวข้องกับผู้ใช้ทั้งหมด (อาวุธใดที่คุณมีที่คุณอยู่ในระดับใด ฯลฯ )
และในที่สุดคุณก็มีไฟล์ที่โหลดข้อมูล savegame ในสถานการณ์เกมเนื้อหาที่ซับซ้อนที่สุดของทั้งหมดเพราะมันโหลดทุกอย่างอื่น อันนั้นเรียกว่า p_setup.c และตั้งอยู่ในไดเรกทอรีเดียวกัน
มันทำงานได้ดีสำหรับฉันสำหรับcat
สิ่งเหล่านี้ทั้งหมดในบัฟเฟอร์ข้อความและpipe
ข้อความนั้นไปsendmail
ยังที่อยู่อีเมลของฉันเอง ด้วยวิธีนี้ฉันสามารถอ่านในช่วงเวลาแปลก ๆ ของวันและใช้ 'ค้นหา' เมื่อฉันต้องการค้นหาสิ่งต่าง ๆ เช่น 'DOOM โหลดเกมอย่างไร' รหัสมีความเห็นดี