मैंने 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
शुरू से आखिर तक भरी हुई है । यही D_DoomLoop के अंतर्गत आता है। यह एक बड़े पैमाने पर लूप है (1000-2000 लाइनों की तरह कुछ)।
चूंकि आपका प्रश्न 'मैं कैसे लिख सकता हूं?' मैं कोड के कुछ बिट्स को पेस्ट करने जा रहा हूं, जो 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
अपने ईमेल पते पर इन सभी के लिए अच्छी तरह से काम किया । इस तरह मैं दिन के विषम क्षणों में इसके माध्यम से पढ़ सकता हूं, और 'खोज' का उपयोग कर सकता हूं जब मैं 'कैसे एक खेल लोड करता हूं' जैसे सामान की तलाश करना चाहता हूं। कोड अच्छी तरह से टिप्पणी की है।