আমি ডুমের উত্স কোডটি কিছুটা অধ্যয়ন করেছি। আমি আপনাকে বলব কিভাবে এটি সেখানে হয়েছে।
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
শুরু থেকে শেষ পর্যন্ত সম্পূর্ণরূপে পূর্ণ । এটিই ডি_ডুমলুপ নিয়ে থাকে। এটি একটি বিশাল লুপ (1000-2000 লাইনের মতো কিছু)।
যেহেতু আপনার প্রশ্নটি 'আমি কীভাবে লিখব?' আমি কেবল কোডের কিছু বিট পেস্ট করতে যাচ্ছি যা ডি_ডমমাইন থেকে গেমস্যাভগুলি উল্লেখ করে:
লুপের একেবারে শেষে যেখানে স্টাফগুলি ব্যবহৃত হয় তা এখানে বিবৃতি।
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 নামে একটি ফাইল রয়েছে যা স্টাফ সহ ব্যবহারকারীর সাথে সম্পর্কিত সমস্ত তথ্য সংরক্ষণ করবে (কোন অস্ত্র আপনি পেয়েছেন, আপনি কোন স্তরে রয়েছেন ইত্যাদি)।
এবং পরিশেষে আপনি ফাইলটি পেয়ে গেছেন যা গেমের দৃশ্যে সেভগেম ডেটা লোড করে, যুক্তিযুক্তভাবে সবচেয়ে জটিল, কারণ এটি অন্য সমস্ত কিছু লোড করে। একে বলা হয় p_setup.c, এবং একই ডিরেক্টরিতে অবস্থিত।
এটি আমার পক্ষে cat
এই সমস্তটির জন্য একটি টেক্সট বাফারে এবং pipe
সেই পাঠ্যটি sendmail
আমার নিজের ইমেল ঠিকানার পক্ষে ভালভাবে কাজ করেছে । এইভাবে আমি দিনের অদ্ভুত মুহুর্তগুলিতে এটি পড়তে পারি এবং 'ডিওম কীভাবে কোনও গেম লোড করে' কীসের মতো জিনিস সন্ধান করতে চাইলে 'সন্ধান' ব্যবহার করতে পারি। কোডটি ভাল মন্তব্য করেছে।