പാസ്കൽ പ്രോഗ്രാമുകൾ എബിസി റെഡി ഗെയിമുകൾ. പാസ്കലിൽ ഒരു കമ്പ്യൂട്ടർ ഗെയിം സൃഷ്ടിക്കുന്നു

കുട്ടിക്കാലത്ത് നമ്മൾ സ്വയം എഴുതിയ കളിപ്പാട്ടങ്ങളെക്കുറിച്ചുള്ള ഗൃഹാതുരത്വത്തിൻ്റെ ഒരു പോസ്റ്റ്.
തുറസ്സായ സ്ഥലങ്ങളിലൂടെ കയറുന്നു അപ്ലിക്കേഷൻ സ്റ്റോർഇതിനായി തിരയുന്നു മറ്റൊരു കളിപ്പാട്ടംഎൻ്റെ ഐപാഡിനായി, "ബ്രദേഴ്സ് പൈലറ്റ്സ്" എന്ന പഴയ കളിപ്പാട്ടം ഞാൻ കണ്ടു. ഞാൻ ഉടനെ അത് വാങ്ങി, ഇൻസ്റ്റാൾ ചെയ്ത് ഒറ്റയടിക്ക് പൂർത്തിയാക്കി (ഒരുപക്ഷേ ഇതിനകം 3 തവണ). എന്നാൽ എല്ലാറ്റിനുമുപരിയായി ഞാൻ റഫ്രിജറേറ്ററുമായി എപ്പിസോഡിൽ താമസിച്ചു. ഈ പസിൽ എന്നെ ശരിക്കും വിഷമിപ്പിക്കുന്നു.

പെട്ടെന്ന് എൻ്റെ സ്കൂൾ കാലഘട്ടത്തിൽ, റഫ്രിജറേറ്ററിലൂടെ കടന്നുപോയ ശേഷം, പസിൽ എന്നെ വളരെയധികം കീഴടക്കി, പാസ്കലിൽ എൻ്റെ സ്വന്തം കളിപ്പാട്ടം - ഒരു പസിൽ എമുലേറ്റർ എഴുതി. എന്നാൽ ഇത് യഥാർത്ഥ ഗെയിം ആവർത്തിച്ചില്ല, ഫീൽഡിൻ്റെ വലുപ്പം തിരഞ്ഞെടുക്കാൻ ഇത് നിങ്ങളെ അനുവദിച്ചു, ഒരു സഹായം ഉണ്ടായിരുന്നു, പുറത്തുകടന്നതിന് ശേഷം മുമ്പത്തെ സ്ഥലത്ത് നിന്ന് ഗെയിം സംരക്ഷിക്കാനും തുടരാനുമുള്ള കഴിവ്.

പഴയ ബാക്കപ്പുകൾ വീണ്ടെടുത്ത ഞാൻ യഥാർത്ഥ ഗെയിം കണ്ടെത്തി. ഞാൻ അത് ഡോസ്ബോക്സിൽ ലോഞ്ച് ചെയ്യുകയും അപ്രത്യക്ഷമാവുകയും ചെയ്തു പുറം ലോകംഏതാനും മണിക്കൂറുകൾ.


യഥാർത്ഥ പസിൽ, തുറന്ന ഇടത് നിരയും ഗേറ്റുകളുടെ സ്ഥാനവും ശ്രദ്ധിക്കുക

കാര്യം എന്തണ്?

പസിലിൻ്റെ സാരാംശം വളരെ ലളിതമാണ്. 4 മുതൽ 4 വരെ വാൽവുകളുടെ ഒരു ഫീൽഡ് ഉണ്ട്; എല്ലാ വാൽവുകളും റഫ്രിജറേറ്ററിൽ ഒരു തിരശ്ചീന സ്ഥാനത്ത് സ്ഥാപിക്കേണ്ടത് ആവശ്യമാണ്. “എന്നാൽ ഒരു ന്യൂനൻസ് ഉണ്ട്”(സി): നിങ്ങൾ ഒരു വാൽവ് തിരിക്കുമ്പോൾ, ഈ വാൽവ് സ്ഥിതിചെയ്യുന്ന നിരയിലെയും വരിയിലെയും എല്ലാ വാൽവുകളും അതിനൊപ്പം തിരിയുന്നു. ഇവിടെയാണ് വിനോദം ആരംഭിക്കുന്നത്!
ഒറിജിനൽ ക്വസ്റ്റിൽ ഈ പസിൽ കളിക്കാൻ ഞാൻ ആദ്യമായി ഇരുന്നു, സ്കൂളിൽ ഇത് വീണ്ടും പ്ലേ ചെയ്തു, ഇത് പൂർത്തിയാക്കാൻ ഞാൻ 40 മിനിറ്റ് എടുത്തേക്കാം, അതിൽ കുറവില്ല. പക്ഷെ എനിക്ക് ഇത് വളരെ ഇഷ്ടപ്പെട്ടു, ഞാൻ അത് കളിക്കുകയും കളിക്കുകയും കളിക്കുകയും ചെയ്തു ...
പക്ഷെ എനിക്ക് കൂടുതൽ വേണം: സംരക്ഷിക്കാനുള്ള കഴിവ് ഗെയിം പ്രക്രിയ, സൃഷ്ടിക്കുക വ്യത്യസ്ത തലങ്ങൾഗെയിം അൽഗോരിതം മനസിലാക്കാൻ ഫീൽഡിൻ്റെ വലുപ്പം മാറ്റുക.
അപ്പോൾ എനിക്ക് പസിൽ ഇഷ്ടപ്പെട്ടാൽ ശ്രമിക്കാം എന്ന് മനസ്സിലായി വ്യത്യസ്ത സ്കെയിലുകൾകളിക്കളത്തിൽ, പിന്നെ നിങ്ങൾ കടലിൽ കാലാവസ്ഥയ്ക്കായി കാത്തിരിക്കരുത്. ഒരു പോംവഴി മാത്രമേയുള്ളൂ - ഈ ഗെയിം സ്വയം നടപ്പിലാക്കുക.

ശരി, നമുക്ക് ആരംഭിക്കാം!

ഗെയിമിൻ്റെ സൃഷ്ടിയുടെ കൃത്യമായ തീയതി എനിക്ക് കൃത്യമായി പറയാൻ കഴിയില്ല, പക്ഷേ ഇത് തീർച്ചയായും സ്കൂളിൻ്റെ അവസാനമാണ്, കോളേജിൻ്റെ തുടക്കമാണ്. ആ വർഷങ്ങളിൽ എനിക്ക് പാസ്കൽ നന്നായി അറിയാം. ഇൻസ്റ്റിറ്റ്യൂട്ടിൽ, പണത്തിനായി ഞാൻ അതിൽ പ്രശ്നങ്ങൾ പരിഹരിച്ചു, കോഴ്‌സ് വർക്ക് എഴുതാൻ സഹായിച്ചു, പൊതുവേ - ഇത് ഒരു അത്ഭുതകരമായ ലോജിക്കൽ ഭാഷയായിരുന്നു. അതിനാൽ, കളിപ്പാട്ടം അതിൽ എഴുതാൻ തീരുമാനിച്ചു.
ഡോസിൽ ഗ്രാഫിക്സ് എങ്ങനെ നടപ്പിലാക്കണമെന്ന് എനിക്കറിയാമായിരുന്നിട്ടും, ഞാൻ വേണ്ടെന്ന് തീരുമാനിച്ചു ഗ്രാഫിക് ആപ്ലിക്കേഷൻ. ഇത് ഭയങ്കര ബഗ്ഗിയും മന്ദഗതിയിലുമാകുമെന്നതാണ് ഇതിന് കാരണം, ഒന്നാമതായി, കഴിയുന്നത്ര വേഗത്തിൽ നടപ്പിലാക്കാൻ ഞാൻ ആഗ്രഹിച്ചു ഈ ആപ്ലിക്കേഷൻ, ഗ്രാഫിക്സ് നടപ്പിലാക്കുന്നതിന് വളരെയധികം സമയമെടുക്കും; രണ്ടാമതായി, ടെക്സ്റ്റ് കാഴ്ചഎനിക്കത് കൂടുതൽ ഇഷ്ടമാണ്. എന്നിരുന്നാലും, തിരിഞ്ഞുനോക്കുമ്പോൾ, ഗ്രാഫിക്സും മൗസ് പിന്തുണയും ഉപയോഗിച്ച് ഞാൻ കൂടുതൽ നന്നായി ചെയ്യുമായിരുന്നുവെന്ന് എനിക്ക് തോന്നുന്നു.
ടാസ്‌ക് ലളിതമായിരുന്നു: കാണിക്കാൻ ലജ്ജാകരമായ ഒരു ലളിതവും ഗംഭീരവുമായ ഗെയിം ഉണ്ടാക്കുക. സവിശേഷതകളിൽ: സഹായം, സംരക്ഷിക്കാനുള്ള കഴിവ്, ഗെയിം നിർത്തിയ നിമിഷം മുതൽ തുടരാൻ തുടങ്ങിയതിന് ശേഷം, കളിക്കളത്തിൻ്റെ വലുപ്പം മാറ്റാനുള്ള കഴിവ്. കൂടാതെ അല്പം നിറവും ഭംഗിയും.

നടപ്പിലാക്കൽ

മുഴുവൻ പ്രോഗ്രാമിൻ്റെയും സോഴ്സ് കോഡും ലോജിക്കും ഞാൻ പൂർണ്ണമായി വിശകലനം ചെയ്യില്ല, കാരണം അവ വ്യക്തമാണ്, കൂടാതെ വ്യക്തമല്ലാത്തത് കോഡിൽ നിന്ന് വ്യക്തമാണ്. എന്നാൽ ഞാൻ കൂടുതൽ വിശദമായി കുറച്ച് പോയിൻ്റുകളിൽ വസിക്കും.
NxN ഘടകങ്ങളുടെ ഒരു ടെക്സ്റ്റ് അറേയാണ് ഗെയിമിൻ്റെ അടിസ്ഥാനം, ഇവിടെ N എന്നത് 2, 4, 8, 16 എന്നിവയ്ക്ക് തുല്യമായിരിക്കും. X, Y എന്നീ രണ്ട് പ്രതീകങ്ങൾ മാത്രമേ അറേയിൽ നിറഞ്ഞിട്ടുള്ളൂ. കഴ്സർ സ്ഥാനം എന്നത് നിലവിലെ അറേ എലമെൻ്റിൻ്റെ സ്ഥാനമാണ്. ഐ, ജെ. ഒരു അറേ ഘടകത്തെ വിപരീതമാക്കുമ്പോൾ, അറേയുടെ നിരയിലും വരിയിലും X ന് പകരം Y ഉം Y ഉം X കൊണ്ട് മാറ്റുന്നു. ശരി, കൂടാതെ സഹായം വിളിക്കാനും സംരക്ഷിക്കാനും/ലോഡ് ചെയ്യാനും സൃഷ്‌ടിക്കാനും പുറത്തുകടക്കാനും നിങ്ങളെ അനുവദിക്കുന്ന ഹോട്ട്‌കീകൾ (F1-F4, F10) ഉണ്ട്. എല്ലാം ഇവിടെ വ്യക്തമാണ്, അത് എങ്ങനെ നടപ്പിലാക്കാം എന്നത് ലളിതമാണ്, ഞങ്ങൾ ഇത് വിശദമായി പരിഗണിക്കില്ല.

വിദ്യാഭ്യാസപരമായ വീക്ഷണകോണിൽ നിന്നുള്ള ഏറ്റവും വലിയ താൽപ്പര്യം നടപടിക്രമമാണ് റിഫ്റ്റ്.*

* - റിഫ്റ്റ് എന്തുകൊണ്ടെന്ന് ശ്രദ്ധിക്കുക

അക്കാലത്ത്, പണം ലാഭിക്കാൻ, എസ്എംഎസ് സന്ദേശങ്ങൾ ലിപ്യന്തരണം എഴുതിയിരുന്നു. കത്ത് നമ്മൾ എങ്ങനെ ഓർക്കും " ശ്രീ"കോമ്പിനേഷൻ ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നു" sh", എന്നാൽ സ്ഥലം ലാഭിക്കാൻ ഞാൻ അത് സമാനമായ അക്ഷരവിന്യാസമുള്ള ഉപയോഗിക്കാത്ത ഒരു അക്ഷരം ഉപയോഗിച്ച് മാറ്റി " ഡബ്ല്യു" ഇവിടെ നിന്നാണ് ഈ പേര് വന്നത് റിഫ്റ്റ്(ഫോണ്ട്). അതുപോലെ കത്തും " എക്സ്” (എക്സ്) " എന്ന അക്ഷരം മാറ്റിസ്ഥാപിച്ചു എക്സ്"(റഷ്യൻ" ഹാ”).

ഗെയിമിനായി ടെക്സ്റ്റ് മോഡ് ഉപയോഗിക്കാൻ ഞാൻ തീരുമാനിച്ചതിനാൽ, വാൽവ് മാറ്റിസ്ഥാപിക്കാൻ എനിക്ക് ഒരു കത്ത് ആവശ്യമാണ്. വാൽവ് ലംബമായി കാണിക്കുന്ന ഒരു അക്ഷരവുമായി ഇതിന് എന്ത് ബന്ധമുണ്ട് തിരശ്ചീന സ്ഥാനം. ഈ ആവശ്യങ്ങൾക്ക് അനുയോജ്യരായ ഉദ്യോഗാർത്ഥികൾ മാത്രമാണ് അക്ഷരങ്ങൾ"N", "Z". "Z" എന്ന അക്ഷരം അതിൻ്റെ വശത്ത് വെച്ചിരിക്കുന്ന N അക്ഷരത്തോട് സാമ്യമുള്ളതാണ്, അത് നീട്ടി.
ഞാൻ ഈ ഓപ്ഷൻ പരീക്ഷിച്ചു, അതിൽ സന്തോഷമില്ല. എനിക്ക് സ്വന്തമായി എന്തെങ്കിലും ചെയ്യേണ്ടതുണ്ടെന്ന് ഞാൻ മനസ്സിലാക്കി, ചിലത് ബദൽ പരിഹാരം. ഒരു ഗ്രാഫിക്കൽ പതിപ്പ് എഴുതുന്നതിനെക്കുറിച്ച് ഞാൻ ഇതിനകം ചിന്തിച്ചിരുന്നു, രചയിതാവായ അബ്രറോവ് എ.എമ്മിൽ നിന്ന് പാസ്കൽ പ്രോഗ്രാം "മാട്രിക്സ്" കണ്ടപ്പോൾ. . പ്രോഗ്രാം ആദ്യത്തെ "മാട്രിക്സ്" പോലെ തന്നെ ആരംഭിക്കുന്നു - സ്ക്രീനിൽ ഒരു ലൈൻ പ്രദർശിപ്പിക്കുന്നു, കോഡിനായി തിരയുന്നു. തുടർന്ന് ഹൈറോഗ്ലിഫിക് ചിഹ്നങ്ങൾ മഴ പെയ്യാൻ തുടങ്ങുന്നു. മാത്രമല്ല, ഇത് ടെക്സ്റ്റ് മോഡിൽ മാത്രമാണ് നടപ്പിലാക്കുന്നത്.

Matrix.pas പ്രോഗ്രാമിനെക്കുറിച്ചുള്ള ഒരു ചെറിയ വിദ്യാഭ്യാസ പരിപാടി

പരിപാടി അതിമനോഹരവും അതിമനോഹരവുമായിരുന്നു. പിന്നെ അതെനിക്ക് ഒരുപാട് സന്തോഷം തന്നു. ഏറ്റവും രസകരമായ കാര്യം, 208 പ്രതീകങ്ങൾക്കായി മുഴുവൻ ഫോണ്ടും അവിടെ നടപ്പിലാക്കുന്നു എന്നതാണ്! എന്നാൽ രചയിതാവ് ഹൈറോഗ്ലിഫുകൾക്കായി മാത്രം ഞങ്ങളുടെ "റസ്സിഫയർ" പോലുള്ള ഒരു പ്രോഗ്രാം നടപ്പിലാക്കുകയും അത് തനിക്കായി പുനർനിർമ്മിക്കുകയും ചെയ്തുവെന്ന് ഞാൻ അനുമാനിക്കുന്നു.

ശരിയാണ്, ഇപ്പോൾ ഡോസ്ബോക്സിൽ പോലും പ്രോഗ്രാം സാധാരണ രീതിയിൽ പ്രവർത്തിക്കുന്നതിന്, നിങ്ങൾ എല്ലാ കാലതാമസങ്ങളും 10 മടങ്ങ് കുറയ്ക്കേണ്ടതുണ്ട് (കാലതാമസം), അല്ലാത്തപക്ഷം നിങ്ങളുടെ കൊച്ചുമക്കൾ ജോലിയുടെ അവസാനം വരെ കാത്തിരിക്കും. പ്രോഗ്രാം വീണ്ടും ചെയ്യാൻ എനിക്ക് മടിയനായതിനാൽ, ഇത് തികച്ചും അക്കാദമിക് താൽപ്പര്യമാണ്. അല്ലെങ്കിൽ ആരെങ്കിലും അത് റീമേക്ക് ചെയ്ത് ലോകത്തെ കാണിക്കും, സോഫ്റ്റ്വെയർ മനോഹരമാണ് (പ്രത്യേകിച്ച് ഞാൻ ഉറവിടങ്ങളിലേക്ക് ഒരു ലിങ്ക് നൽകുന്നതിനാൽ). പെട്ടെന്ന് അതിൻ്റെ രചയിതാവ് ഈ പോസ്റ്റ് വായിക്കുകയാണെങ്കിൽ, ഞാൻ അദ്ദേഹത്തിന് എൻ്റെ നന്ദി വാക്കുകൾ അറിയിക്കുന്നു.

ഏറ്റവും പ്രധാനപ്പെട്ട കാര്യം ആ പ്രോഗ്രാമിൽ, "krakozyabr" ന് അതിൻ്റേതായ ഫോണ്ട് ഉണ്ട് എന്നതാണ്! അത് ലോഡ് ചെയ്യപ്പെടുകയും ചെയ്യുന്നു. ഞാൻ ഈ ലോഡിംഗ് നടപടിക്രമം കടമെടുത്തു, തീർച്ചയായും ഇത് കുറച്ച് മാറ്റുന്നു.
ഫോണ്ടുകൾ ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നതിനെക്കുറിച്ച് കുറച്ച് വാക്കുകൾ.

MS-DOS-ൽ, ബിറ്റ്മാപ്പ് ഫോണ്ടുകൾക്കൊപ്പം പ്രവർത്തിക്കുന്നത് BIOS പിന്തുണയ്ക്കുന്നു. ബയോസ് ഫീച്ചറുകൾ നിങ്ങൾക്ക് ലഭ്യമാക്കാനും ഇൻസ്റ്റാൾ ചെയ്യാനും അനുവദിക്കുന്നു ഇഷ്ടാനുസൃത ഫോണ്ടുകൾ, കൂടാതെ വീഡിയോ അഡാപ്റ്ററിൻ്റെ പ്രതീക ജനറേറ്ററിൽ നിന്ന് ഫോണ്ടുകളും സ്വീകരിക്കുക. ഇൻസ്റ്റാൾ ചെയ്ത എല്ലാ ഫോണ്ടുകൾക്കും 8 പോയിൻ്റുകളുടെ ഒരേ വീതിയുണ്ട്, ഉയരത്തിന് മൂന്ന് നിശ്ചിത മൂല്യങ്ങൾ ഉണ്ടായിരിക്കാം - 8, 14 അല്ലെങ്കിൽ 16 പോയിൻ്റുകൾ. ഫോണ്ട് ലോഡ് ചെയ്തിരിക്കുന്ന വീഡിയോ മോഡ് അനുസരിച്ചാണ് നിർദ്ദിഷ്ട ഫോണ്ട് ഉയരം നിർണ്ണയിക്കുന്നത്. 8 ഡോട്ടുകളുടെ ഒരു ഫോണ്ട് ഉയരം 50/43 ലൈൻ വീഡിയോ മോഡുമായി യോജിക്കുന്നു, 14 ഡോട്ടുകളുടെ ഒരു ഫോണ്ട് ഉയരം EGA-യുടെ 25 ലൈൻ വീഡിയോ മോഡുമായി യോജിക്കുന്നു, 16 ഡോട്ടുകളുടെ ഫോണ്ട് ഉയരം VGA 25 ലൈൻ വീഡിയോ മോഡുമായി യോജിക്കുന്നു.

ഞങ്ങൾ വീഡിയോ മോഡ് 16 നിറങ്ങൾ 40x25 പ്രതീകങ്ങൾ ഉപയോഗിക്കും. ഈ വീഡിയോ മോഡിൽ, ഓരോ പ്രതീകവും 8x16 ഡോട്ടുകളുടെ ഒരു ശ്രേണിയാണ്. ലളിതമായി പറഞ്ഞാൽ, ഓരോ പ്രതീകവും 16 ബൈറ്റുകളെ പ്രതിനിധീകരിക്കുന്നു, ഇവിടെ ഒരു ബൈറ്റിൽ ഒരു ബിറ്റ് ഒന്നിലേക്ക് സജ്ജീകരിച്ചിരിക്കുന്നത് കറുപ്പ് നിറമാണ് എന്നാണ്. നിങ്ങളുടെ തലയിൽ ഇപ്പോൾ ഒരു കുഴപ്പമുണ്ടെങ്കിൽ, പരിഭ്രാന്തരാകരുത് - അത് പിന്നീട് കൂടുതൽ വ്യക്തമാകും.
ഒരു അടച്ച (ലംബമായ) വാൽവ് നിശ്ചയിക്കുന്നതിന്, "X" എന്ന അക്ഷരം തിരഞ്ഞെടുത്തു (ലാറ്റിൻ വലിയ അക്ഷരം"X") കൂടാതെ ഓപ്പൺ ഹോറിസോണ്ടലിനായി, "Y" എന്ന അക്ഷരം (ലാറ്റിൻ വലിയ അക്ഷരം "Y"). പല കാരണങ്ങളാൽ ഈ കത്തുകൾ തിരഞ്ഞെടുത്തു. ഒന്നാമതായി, അവർ പരസ്പരം അറിയുന്നു സ്കൂൾ പാഠ്യപദ്ധതിചെവിയിലൂടെയും. രണ്ടാമതായി, അതിലും പ്രധാനമായി, അവർ ASCII പട്ടികപ്രതീകങ്ങൾ ഒരു നിരയിലാണ് (യഥാക്രമം 88d, 89d സ്ഥാനങ്ങൾ), ഇത് അവയുടെ മാറ്റിസ്ഥാപിക്കൽ ലളിതമാക്കുന്നു. ഫോണ്ട് വീണ്ടും അപ്‌ലോഡ് ചെയ്യാതെ തന്നെ മെനു റഷ്യൻ ഭാഷയിൽ നിർമ്മിക്കാൻ കഴിയുന്ന തരത്തിൽ ലാറ്റിൻ തിരഞ്ഞെടുത്തു.
അതിനാൽ, ഞങ്ങൾ ചിഹ്നങ്ങളിൽ തീരുമാനിച്ചു, ഇപ്പോൾ നമുക്ക് അവരുടെ വസ്ത്രങ്ങളിലേക്ക് പോകാം, അല്ലെങ്കിൽ ഫോണ്ട്. ഞങ്ങൾ ഒരു കൂട്ടിൽ ഒരു ഷീറ്റ് പേപ്പർ എടുത്ത് അതിൽ 8x16 ഫീൽഡ് ഉണ്ടാക്കി തിരശ്ചീനവും പിന്നീട് ലംബവുമായ വാൽവിനുള്ള ഒരു ചിഹ്നം വരയ്ക്കാൻ തുടങ്ങുന്നു. ലംബവും തിരശ്ചീനവുമായ അവസ്ഥകളിൽ ഗേറ്റ് ഒന്നുതന്നെ ആയിരിക്കണമെന്നതിനാൽ, ചതുരം ലഭിക്കാൻ ഞങ്ങൾ ആദ്യത്തെ 8 വരികൾ മാത്രമേ ഉപയോഗിക്കൂ. തുടർന്ന് ഞങ്ങൾ ഈ ഫീൽഡിൽ ലംബമായും തിരശ്ചീനമായും രണ്ട് വാൽവുകൾ വരയ്ക്കുന്നു. ഇത് ഇതുപോലെ എന്തെങ്കിലും പ്രവർത്തിക്കണം


രണ്ട് വാൽവ് ഫോണ്ട്

അടുത്തതായി, ഞങ്ങൾ കറുത്ത ചതുരത്തെ ഒന്നായി സൂചിപ്പിക്കുന്നു, വെളുത്ത പൂജ്യം. ഞങ്ങൾ 8 ബൈറ്റുകൾ ഉണ്ടാക്കുന്നു. തുടർന്ന് ഞങ്ങൾ അവയെ ദശാംശ ഫോർമാറ്റിലേക്ക് പരിവർത്തനം ചെയ്യുകയും ഒരു അറേ രൂപപ്പെടുത്തുകയും ചെയ്യുന്നു. ആദ്യം, ഒരു പ്രതീകത്തിൻ്റെ 8 ബൈറ്റുകൾ, പിന്നെ പൂജ്യങ്ങളുടെ 8 ബൈറ്റുകൾ (ഞങ്ങൾ ബേസ്മെൻറ് ശൂന്യമായി ഉപേക്ഷിച്ചു), രണ്ടാമത്തെ പ്രതീകത്തിനായി ഈ നടപടിക്രമം ആവർത്തിക്കുക.


ബൈനറി കോഡുകളുടെ പട്ടിക, ഡെസിമൽ ഫോർമാറ്റിലേക്ക് പരിവർത്തനം ചെയ്തു

തൽഫലമായി, ഞങ്ങൾക്ക് ഇനിപ്പറയുന്ന നടപടിക്രമ തലക്കെട്ട് ലഭിക്കും:

നടപടിക്രമം WRIFT; (Zagruzka shrifta ("pesochnye chasy")) കോൺസ്റ്റ് ഫോണ്ട്:ബൈറ്റ് ശ്രേണി=(129,195,231,153,153,231,195,129,0,0,0,0,0,0,0,0,0,0, 255,102,340,265,102,340,261 0,0,0,0,0,0); Var SegScr:Word; OfsScr:Word; സ്ക്രീൻ1: ബൈറ്റ് സമ്പൂർണ്ണ ഫോണ്ടിൻ്റെ അറേ;

രണ്ട് ഗേറ്റ് പ്രതീകങ്ങളുടെ ഒരു നിരയാണ് ഫോണ്ട് (ഓരോ പ്രതീകവും അതിൻ്റേതായ വരിയിൽ). ഏറ്റവും രസകരമായ വേരിയബിൾ സ്‌ക്രീൻ1 അറേ ആണ് - ഫോണ്ട് വേരിയബിളിൻ്റെ (ഡയറക്ടീവ്) സമ്പൂർണ്ണ വിലാസത്തിൽ സ്ഥിതിചെയ്യുന്ന ഒരു അറേ. കേവല). അടുത്തത് രസകരമായ ഭാഗം വരുന്നു.

ആരംഭിക്കുക ofsscr:=ofs(screen1); segscr: = സെഗ്(സ്ക്രീൻ1); Asm push bp mov ax,segscr mov es,ax mov bp,ofsscr mov bx,1000h mov dx,88 (s kakogo simvola na4at" zapis" 88d-X,89d-Y) mov cx,2 (koli4estvo mov simvolov) 1100h int 10h പോപ്പ് bp mov ah,1 (ustanovit videorezhim txt, tsvetnoj (16 cvetov) 40x25 ) mov cx,1000h int 10h End; അവസാനം;(WRIFT)

മുകളിലുള്ള വരികളിൽ നിന്ന് വ്യക്തമാകുന്നതുപോലെ, ഞങ്ങൾ ES സെഗ്‌മെൻ്റ് ES രജിസ്റ്ററിലേക്കും ഞങ്ങളുടെ ഫോണ്ടിൻ്റെ സ്ഥാനത്തിൻ്റെ വിലാസം BP രജിസ്റ്ററിലേക്കും ലോഡ് ചെയ്യുന്നു. mov bx,1000h എന്ന കമാൻഡ് ഉപയോഗിച്ച് നമുക്ക് ഫോണ്ടിൽ 16 വരികൾ ഉണ്ടെന്ന് ഞങ്ങൾ പറയുന്നു (10h=16d എന്ന നമ്പർ BH-ലേക്ക് ലോഡുചെയ്‌തു, കൂടാതെ BL=0) അടുത്തതായി, ഞങ്ങൾ പ്രതീക നമ്പർ DX രജിസ്റ്ററിലേക്ക് ലോഡ് ചെയ്യുന്നു, അതിൽ നിന്ന് ഞങ്ങൾ ആരംഭിക്കുന്നു. ഫോണ്ട് മാറ്റാൻ. കൂടാതെ CX-ൽ - മാറ്റിസ്ഥാപിക്കേണ്ട പ്രതീകങ്ങളുടെ എണ്ണം. ഫോണ്ട് മാറ്റുന്നതിനുള്ള ബയോസ് ഫംഗ്‌ഷൻ നമ്പറിലേക്ക് ഞങ്ങൾ AX രജിസ്റ്റർ ലോഡ് ചെയ്യുകയും ബയോസ് ഇൻ്ററപ്റ്റിലേക്ക് വിളിക്കുകയും ചെയ്യുന്നു. അടുത്തതായി, ഞങ്ങൾ ബിപി രജിസ്റ്റർ പുനഃസ്ഥാപിക്കുകയും അതേ രീതിയിൽ വീഡിയോ അഡാപ്റ്റർ മോഡ് സജ്ജമാക്കുകയും ചെയ്യുന്നു. കൂടുതൽ വിശദാംശങ്ങൾ ഇവിടെ വിവരിച്ചിരിക്കുന്നു: shackmaster.narod.ru/fonts.htm. ഫോണ്ട് ഘടനയെക്കുറിച്ച് നന്നായി മനസ്സിലാക്കാൻ, ഈ സൈറ്റ് വായിക്കുന്നത് നന്നായിരിക്കും.

ഈ ലളിതമായ രീതിയിൽ, നിങ്ങൾക്ക് ഡോസിലെ മുഴുവൻ ഫോണ്ടും നിങ്ങളുടേതായി മാറ്റാം. ഒരു ഫോണ്ട് അൺലോഡ് ചെയ്യാൻ, പുനഃസ്ഥാപിക്കൽ നടപടിക്രമം ഉപയോഗിക്കുക:

നടപടിക്രമം പുനഃസ്ഥാപിക്കുക; (Sbros shrifta) ആരംഭിക്കുക asm mov ax,3 int 10h അവസാനം; അവസാനം;(പുനഃസ്ഥാപിക്കുക)

മെനു പ്രദർശിപ്പിച്ച് പ്രോഗ്രാം പുറത്തുകടക്കുമ്പോൾ ഇത് നടപ്പിലാക്കുന്നു.

വഴിയിൽ, റഫറൻസിനായി, "റസ്സിഫയേഴ്സ്" എന്ന് വിളിക്കപ്പെടുന്നവർ സമാനമായ രീതിയിൽ ഡോസിൽ പ്രവർത്തിച്ചു. അവർ നിലവിലെ ഫോണ്ടിനെ റഷ്യൻ അക്ഷരങ്ങളുള്ള ഒരു ഫോണ്ട് ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിച്ചു.

തമാശകളിൽ ഒന്ന്

എൻ്റെ ഒരു സുഹൃത്ത്, പ്രത്യേകിച്ചും അവൻ Borland C++ ൽ പ്രോഗ്രാമിംഗ് പഠിക്കുമ്പോൾ, "The Matrix"-ൽ നിന്നുള്ള ഒരു ഉദാഹരണം ഉപയോഗിച്ച് MPH രൂപത്തിൽ ഒരു ഫോണ്ട് ഉണ്ടാക്കി. ആ. ഞാൻ എല്ലാ പ്രതീകങ്ങളെയും ഒരു MPH പ്രതീകം ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിച്ചു. നോർട്ടൺ കമാൻഡർ ഭയങ്കരനായി കാണപ്പെട്ടു! ആ സമയത്തെ ഫോട്ടോകൾ ഒന്നും അവശേഷിക്കുന്നില്ല എന്നത് ഖേദകരമാണ്.
കമ്പ്യൂട്ടർ സയൻസിൽ ഇത്തരമൊരു പ്രോഗ്രാം ലിങ്ക് പുറത്തിറക്കാൻ കഴിഞ്ഞാൽ, ടീച്ചർക്ക് സന്തോഷമാകും.

ഇന്ന് പരിഷ്കാരങ്ങൾ

സത്യത്തിൽ, ഞാൻ ഗെയിം നൽകുന്നത് വർഷങ്ങൾക്ക് മുമ്പ് എഴുതിയ രൂപത്തിലല്ല. ഇത് വളരെ അസുഖകരമായ ചില ബഗുകൾ വെളിപ്പെടുത്തി:
1. GAME.SAV ഫയൽ കണ്ടെത്തിയില്ലെങ്കിൽ പ്രോഗ്രാം കേവലം തകർന്നു;
2. ജനറേറ്റർ ക്രമരഹിത സംഖ്യകൾസമാരംഭിച്ചിട്ടില്ല, അതിനാൽ ഇത് നിരന്തരം ഒരേ നില സൃഷ്ടിക്കുന്നു.
കൂടാതെ, എൻകോഡിംഗിലെ പ്രശ്‌നങ്ങൾ കാരണം, ഞാൻ ഗെയിമിൻ്റെ രണ്ടാം പതിപ്പ് പൂർണ്ണമായും സൃഷ്ടിച്ചു ആംഗലേയ ഭാഷ. ഡോസ്-അനുയോജ്യമായ എഡിറ്ററിലല്ല നിങ്ങൾ സോഴ്‌സ് കോഡ് വായിക്കുന്നതെങ്കിൽ, അതിൻ്റെ ഉറവിടങ്ങൾ ഉപയോഗിക്കാൻ ഞാൻ ശുപാർശ ചെയ്യുന്നു - എൻകോഡിംഗിൽ പ്രശ്‌നങ്ങളൊന്നും ഉണ്ടാകില്ല.

ഡോസ്‌ബോക്‌സ് എല്ലായിടത്തും ഉണ്ടെന്നത് വളരെ സന്തോഷകരമാണ്; സബ്‌വേയിലെ ഒരു ഐപാഡിൽ മിക്ക പ്രോഗ്രാമുകളും ഞാൻ വ്യക്തിപരമായി എഡിറ്റുചെയ്‌തു. ഒരു ഐപാഡും ബോർലാൻഡ് പാസ്കലും തുറന്നിരിക്കുന്ന പെപ്പർ എത്ര രസകരമാണെന്ന് നിങ്ങൾക്ക് ഊഹിക്കാനാകുമോ?


ഐപാഡിലെ നല്ല പഴയ ബോർലാൻഡ് പാസ്കൽ

അതിനാൽ ജാംബുകൾ ഉടനടി ശരിയാക്കി.

പ്രോഗ്രാമിൻ്റെ നിരവധി സ്ക്രീൻഷോട്ടുകൾ, ഒരു ഹ്രസ്വ വിവരണം

ഗെയിം കളിക്കാൻ അവസരമോ ആഗ്രഹമോ ഇല്ലാത്തവർക്കായി, ഗെയിമിൻ്റെ കുറച്ച് പ്രധാന സ്ക്രീൻഷോട്ടുകൾ ഇതാ.
ലോഞ്ച് ചെയ്‌തതിന് ശേഷം, അവസാനം സംരക്ഷിച്ച ഗെയിമിനൊപ്പം പ്ലേ ഫീൽഡ് തുറക്കുന്നു


ആരംഭിക്കുക

കഴ്‌സർ ഹൈലൈറ്റ് ചെയ്യുകയും മിന്നുകയും ചെയ്യുന്നു.

നിങ്ങൾ F1 അമർത്തുകയാണെങ്കിൽ, നിങ്ങൾക്ക് ഈ ലളിതമായ സഹായം ലഭിക്കും




സഹായം

ഒരു ലെവൽ സൃഷ്ടിക്കാൻ, F4 അമർത്തി ഈ മെനുവിൽ പ്രവേശിക്കുക


ലെവൽ ജനറേഷൻ മെനു

ശരി, വിജയത്തിന് ശേഷം ഗെയിം നിങ്ങളെ അഭിനന്ദിക്കും


നിങ്ങളുടെ വിജയത്തിന് അഭിനന്ദനങ്ങൾ

ഏതെങ്കിലും കീ അമർത്തുന്നത് വരെ അത് കാത്തിരിക്കും. ഈ സാഹചര്യത്തിൽ, ഗെയിം പുരോഗതി സംരക്ഷിക്കില്ല.

എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്ത് കളിക്കാം

ഫോണ്ട് ലോഡിംഗിൻ്റെ പ്രത്യേകതകളും പ്രയോഗവും കാരണം, കളിപ്പാട്ടം ശുദ്ധമായ ട്യൂബ് ഡോസിൽ മാത്രമേ പ്രവർത്തിക്കൂ. അതിനാൽ, ഇത് പ്രവർത്തിക്കുന്നതിന് നിങ്ങൾ dosbox അല്ലെങ്കിൽ സമാനമായ ഒരു പ്രോഗ്രാം ഉപയോഗിക്കേണ്ടതുണ്ട്.
ഇൻസ്റ്റാളേഷൻ നിസ്സാരമാണ്. പ്രോഗ്രാം ഉപയോഗിച്ച് ആർക്കൈവ് ഡൗൺലോഡ് ചെയ്യുക. ഇൻസ്റ്റാൾ ചെയ്യുക ഡോസ്ബോക്സ്. കൂടാതെ, നിങ്ങൾക്ക് വേണമെങ്കിൽ, നിങ്ങൾക്ക് ഇത് Russify ചെയ്യാം, Linux-നുള്ള രീതി ഇവിടെയുണ്ട്: old-game.org/?p=1717.
തത്വത്തിൽ, ഈ ഫയലുകളെല്ലാം Windows-നായി ഉപയോഗിക്കാം: ഇത് ചെയ്യുന്നതിന്, റഷ്യൻ.txt ഫയൽ പ്രോഗ്രാമും കോൺഫിഗറുമായി ഫോൾഡറിൽ സ്ഥാപിക്കുകയും ഡോസ്ബോക്സിനുള്ള കുറുക്കുവഴി എഡിറ്റുചെയ്യുകയും ചെയ്യുന്നു. കുറുക്കുവഴി പാത ഇതുപോലെയായിരിക്കണം: " “C:\Program Files\DOSBox-0.74\DOSBox.exe” -userconf”ഞങ്ങൾ നീക്കം ചെയ്യുന്നു "-userconf"നിങ്ങളുടെ കോൺഫിഗറേഷൻ പ്രവർത്തിക്കും.

ഉബുണ്ടുവിൽ ഞാൻ ക്ലിക്ക് ചെയ്താൽ മതി വലത് ക്ലിക്കിൽപ്രോഗ്രാമിൽ മൗസ് ചെയ്ത് ഡോസ്ബോക്സിൽ പ്രവർത്തിപ്പിക്കാൻ തിരഞ്ഞെടുക്കുക, വിൻഡോസിൽ ഇത് എങ്ങനെ ചെയ്യണമെന്ന് എനിക്കറിയില്ല, കാരണം ഇത് ഒരു മെഷീനിലും ഇല്ല. നന്നായി അവസാന ആശ്രയമായിഗെയിമിലേക്കുള്ള പാത സ്ഥാപിച്ചിരിക്കുന്നു, മൗണ്ട് കമാൻഡ്പാത.
നിങ്ങൾക്ക് റഷ്യൻ, ഇംഗ്ലീഷ് പതിപ്പുകൾ തിരഞ്ഞെടുക്കാം. കോൺഫിഗറുകളുള്ള റസിഫിക്കേഷനും ഹെമറോയ്ഡുകളും നിങ്ങൾ ബുദ്ധിമുട്ടിക്കേണ്ടതില്ല, പക്ഷേ ഇംഗ്ലീഷിൽ വെടിവയ്ക്കുക. അവ തമ്മിൽ പ്രായോഗികമായി വ്യത്യാസമില്ല. എന്നിരുന്നാലും, വ്യക്തിപരമായി, ഒരു രചയിതാവ് എന്ന നിലയിൽ, ഞാൻ റഷ്യൻ പതിപ്പാണ് ഇഷ്ടപ്പെടുന്നത്.
കീബോർഡ് അമ്പടയാളങ്ങൾ, തിരഞ്ഞെടുക്കൽ, തിരുകൽ കീ ഉപയോഗിച്ച് വിപരീതമാക്കൽ എന്നിവ ഉപയോഗിച്ചാണ് നിയന്ത്രണം നടത്തുന്നത് ഇരട്ട ഞെക്കിലൂടെഒരു സ്ഥലത്ത് (അതെ, ഇവിടെ ഒരു ജാംബ് ഉണ്ട്). പൊസിഷൻ പെട്ടെന്ന് കുടുങ്ങിയാൽ, സ്‌പേസ് ബാറിൽ ഒരിക്കൽ അമർത്തുക.

അവസാനം സംരക്ഷിച്ച ഗെയിം ഓരോ തവണയും ലോഡ് ചെയ്യപ്പെടുമെന്ന് ഓർക്കുക. പുതിയൊരെണ്ണം സൃഷ്ടിക്കാൻ, F4 അമർത്തുക. 4x4 ഫീൽഡിൽ ആരംഭിക്കാൻ ഞാൻ ശുപാർശ ചെയ്യുന്നു. ഞാൻ നിലവിൽ 8x8 കളിക്കുകയാണ്, 16x16 ലേക്ക് മാറാൻ എനിക്ക് ഇപ്പോഴും ഭയമാണ്. കാരണം ഞാൻ ഒരു മിനിറ്റിൽ താഴെ സമയത്തിനുള്ളിൽ 4x4, 7-10 ൽ 8x8 മിനിറ്റ്, 16x16 സങ്കൽപ്പിക്കാൻ പോലും ഞാൻ ഭയപ്പെടുന്നു.
HABR എന്ന ലിഖിതവും എൻ്റെ വിളിപ്പേരും (ലേഖനത്തിൻ്റെ എൻട്രിയിലെ ചിത്രം) ഉള്ള ലോഡിംഗ് ഫീൽഡ് സംരക്ഷിക്കുകയോ നിയമപരമായി പുറത്തുകടക്കുകയോ ചെയ്ത ശേഷം അപ്രത്യക്ഷമാകുമെന്ന് ഓർമ്മിക്കുക. ഇത് ഒരു ഫയലിൽ സൂക്ഷിച്ചിരിക്കുന്നു GAME.SAV. നിങ്ങൾക്ക് പുനഃസ്ഥാപിക്കണമെങ്കിൽ, ആർക്കൈവിൽ നിന്നുള്ള ഫയൽ ഉപയോഗിച്ച് ഈ ഫയൽ മാറ്റിസ്ഥാപിക്കുക.

ഹബറിന് പ്രത്യേകമായി ഫീൽഡ്

ഹബ്ബിനായി ഗെയിം പൂർത്തിയാക്കി പൂർത്തിയാക്കിയാലും അത് സമാരംഭിക്കാൻ ഞാൻ ആഗ്രഹിച്ചില്ല. എനിക്ക് എന്തെങ്കിലും തന്ത്രം വേണം. ഏറ്റവും വലിയ 16x16 ഫീൽഡിൽ ഒരു ലിഖിതം നിർമ്മിക്കാൻ ഞാൻ തീരുമാനിച്ചു.
സേവ് ഫയൽ ഫോർമാറ്റ് ലളിതമാണ്: ആദ്യം ഫീൽഡ് സൈസ് വരുന്നു, ഉദാഹരണത്തിന് നമ്പർ 16, ക്യാരേജ് റിട്ടേൺ, തുടർന്ന് ഫീൽഡ് പാറ്റേൺ നിർമ്മിക്കുന്ന 256 (ഒരു 16x16 ഫീൽഡിന്) X, Y പ്രതീകങ്ങൾ, അവസാനം Y യുടെ എണ്ണം ഫീൽഡ് (ഒരുതരം ചെക്ക്സം).
ഇത് ചെയ്യുന്നതിന്, ഞാൻ OF Calc- ൽ അത്തരമൊരു ഫീൽഡ് സൃഷ്ടിച്ചു, കളറിൽ ഒരു ലിഖിതം ഉണ്ടാക്കി. എന്നിട്ട് അതിനനുസരിച്ച് X, Y എന്നീ അക്ഷരങ്ങൾ ഇറക്കി.

വയലിനുള്ള ഒരുക്കം.

പിന്നെ ഞാനത് ഒരു CSV ആയി സേവ് ചെയ്തു. എല്ലാ സെപ്പറേറ്ററുകളും നീക്കം ചെയ്തു. ഞാൻ Y യുടെ അളവ് കണക്കാക്കി (ഇത് വളരെ ലളിതമാണ്, നിങ്ങൾ OF Writer-ൽ ഒരു തിരച്ചിൽ നടത്തുക, Y ഉപയോഗിച്ച് എന്തെങ്കിലും പകരം വയ്ക്കുക, പകരം വയ്ക്കുന്നവരുടെ എണ്ണം അത് നിങ്ങളോട് പറയുന്നു - അതാണ് നിങ്ങൾ തിരയുന്ന നമ്പർ). ആദ്യം ഞാൻ നമ്പർ 16, വണ്ടി റിട്ടേൺ, അവസാനം കളിക്കാരുടെ എണ്ണം എന്നിവ ഇട്ടു. നിങ്ങൾക്ക് ഫലം സ്വയം വിലയിരുത്താം :).

പ്രോഗ്രാമിൻ്റെ നിലവിലെ പതിപ്പിൻ്റെ പോരായ്മകൾ.

ഞാൻ എഴുതി നിലവിലുള്ള പതിപ്പ്... ഞാൻ പ്രോഗ്രാം വീണ്ടും എഴുതാനും മെച്ചപ്പെടുത്താനും സാധ്യതയില്ല, കാരണം ഇത് ഇതിനകം തന്നെ കാലഹരണപ്പെട്ടതാണ്. എന്നാൽ മറുവശത്ത്, ഇപ്പോൾ ഡോസ്ബോക്‌സ് മിക്കവാറും ഒരു ഫ്ലാഷ്‌ലൈറ്റിൽ സ്ഥാപിക്കാൻ കഴിയും, അതിനാൽ ഇതിന് ഒരു പുതിയ ജീവിതം കണ്ടെത്താൻ കഴിയും, മാത്രമല്ല പ്രധാന പോരായ്മകൾ മാറ്റിയെഴുതാനും ശരിയാക്കാനും ഇത് അർത്ഥമാക്കുന്നു.

അതിനാൽ:
1. ആദ്യത്തേതും ഏറ്റവും അസുഖകരമായ പോരായ്മയും മോശം നിയന്ത്രണങ്ങളാണ്. ആദ്യം, ഇൻസേർട്ട് കീ അല്ലെങ്കിൽ ഡബിൾ സ്പേസ്ബാർ ഉപയോഗിച്ചാണ് വിപരീതം ചെയ്യുന്നത്. കൂടാതെ, നിങ്ങൾ സ്‌പെയ്‌സ്‌ബാറിൽ ഒറ്റസംഖ്യ തവണ അമർത്തിയാൽ, നിങ്ങൾ ഇരട്ട എണ്ണം അമർത്തുന്നത് വരെ പ്രോഗ്രാം “പറ്റിനിൽക്കുന്നു”. അരോചകമാണ്.
2. രണ്ടാമത് കാര്യമായ പോരായ്മ- ഇത് റൈറ്റ്/റൈറ്റൽ ഫംഗ്‌ഷനുകൾ ഉപയോഗിച്ച് മുഴുവൻ ഗെയിമും റെൻഡർ ചെയ്യുന്നു. ഓരോ ഇവൻ്റിലും, സ്ക്രീൻ വീണ്ടും വരയ്ക്കുന്നു. 16x16 ഫീൽഡിൽ കളിക്കുമ്പോൾ, റെൻഡറിംഗിലെ സ്ലോഡൗണുകളും ഫ്ലാഷുകളും ഇതിനകം തന്നെ ശ്രദ്ധേയമാണ്. കൂടാതെ, ഈ സമീപനം പ്രോഗ്രാമിൻ്റെ യുക്തിയെ സങ്കീർണ്ണമാക്കി, ഇപ്പോൾ അത് പരിഹരിക്കുന്നത് ഒരു വലിയ പ്രശ്നമാണ്.
goto(x;y) ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് റെൻഡറിംഗ് നടപ്പിലാക്കേണ്ടത് ആവശ്യമാണ്; അപ്പോൾ അത് മാറ്റാൻ സാധിക്കും വേറിട്ട സ്വഭാവംമുഴുവൻ സ്ക്രീനും വീണ്ടും വരയ്ക്കാതെ.
3. ഗെയിം മൗസ് പിന്തുണ ആവശ്യപ്പെടുന്നു. വീണ്ടും, ഘട്ടം 2-നൊപ്പം മൗസ് പിന്തുണ നടപ്പിലാക്കേണ്ടതുണ്ട്, അതുവഴി നിങ്ങൾക്ക് കോർഡിനേറ്റുകൾ കൃത്യമായി "പിടിക്കാൻ" കഴിയും.
4. പോയിൻ്റ് 2-ൽ നിന്ന് പിന്തുടരുന്ന ഒരു ചെറിയ ബഗ് - നിങ്ങൾ താഴെ വലത് കോണിലേക്ക് ഇറങ്ങുമ്പോൾ, ഫ്രെയിമിൽ നിന്ന് ഒരു ചിഹ്നം പ്രവർത്തിക്കുന്നു. ഞാൻ അത് പരിഹരിക്കാൻ ശ്രമിച്ചു, ഈ റെൻഡറിംഗ് ലൊക്കേഷൻ ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് കണ്ടുപിടിക്കുന്നതിനേക്കാൾ പൂർണ്ണമായി മാറ്റിയെഴുതുന്നത് എളുപ്പമാണെന്ന് മനസ്സിലാക്കി.

നിങ്ങൾ എന്താണ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നത്

തീർച്ചയായും, Android അല്ലെങ്കിൽ iPad-നായി അത്തരമൊരു ആപ്ലിക്കേഷൻ ഞാൻ ആഗ്രഹിക്കുന്നു. അങ്ങനെ നിങ്ങളുടെ വിരൽ കൊണ്ട് കളിക്കാൻ കഴിയും. അല്ലെങ്കിൽ, ഒരു ആപ്ലിക്കേഷനല്ലെങ്കിൽ, ബ്രൗസർ അടിസ്ഥാനമാക്കിയുള്ള കളിപ്പാട്ടം (എന്നാൽ Android, iOS എന്നിവയ്ക്ക് കീഴിൽ പ്രവർത്തിക്കുന്ന ഒന്ന്). അവിടെ ഉണ്ടായിരിക്കാൻ മനോഹരമായ മെനുഎളുപ്പമുള്ള നാവിഗേഷനും. റെക്കോർഡുകളുടെ ഒരു പട്ടിക ഉണ്ടായിരുന്നു. നിങ്ങളുടെ സുഹൃത്തുക്കളുമായി നിങ്ങൾക്ക് കാണിക്കാൻ കഴിയുന്ന ഒരു സമയ കൗണ്ടർ ഉണ്ടായിരുന്നു. നൈപുണ്യത്തിൻ്റെ ശരാശരി സമയവും വേഗതയും നിങ്ങൾക്ക് കണക്കാക്കാൻ കഴിയുന്ന തരത്തിൽ സ്ഥിതിവിവരക്കണക്കുകളും ഉണ്ടായിരുന്നു.
പൊതുവേ, സർഗ്ഗാത്മകതയ്ക്കായി ഒരു വലിയ വിമാനം, കൂടെ പൂർണ്ണമായ അഭാവംഈ ഉപകരണങ്ങൾക്കായി പ്രോഗ്രാമിംഗ് പഠിക്കാനുള്ള സൗജന്യ സമയം. മറുവശത്ത്, ഡോസ്ബോക്സ് എല്ലായിടത്തും ഉണ്ട്, കൂടുതൽ സാർവത്രിക പോർട്ടബിലിറ്റി കൈവരിക്കാൻ ഒരുപക്ഷേ ബുദ്ധിമുട്ടായിരിക്കും, ഒരുപക്ഷേ ഈ പ്രോഗ്രാം പൂർത്തിയാക്കാൻ അർത്ഥമുണ്ടോ? നീ എന്ത് കരുതുന്നു?

ഫലം...

ലേഖനത്തിൻ്റെ ഉദ്ദേശ്യം ഞാൻ എത്ര വലിയവനാണെന്ന് കാണിക്കുകയല്ല, മറിച്ച് അത് എങ്ങനെയായിരുന്നുവെന്ന് ഓർമ്മിക്കുക എന്നതാണ്. തീർച്ചയായും നമ്മൾ ഓരോരുത്തരും കുട്ടിക്കാലത്ത് ഇതുപോലെ എന്തെങ്കിലും എഴുതിയിട്ടുണ്ട്. ഇത് അയ്യോ എന്താ സങ്കീർണ്ണമായ പ്രോഗ്രാം, എല്ലാ സ്കൂൾ കുട്ടികൾക്കും മതിയായ സ്ഥിരോത്സാഹത്തോടെ ഇത് എഴുതാൻ കഴിയും. ഇതൊരു ഓർമ്മപ്പെടുത്തൽ പോസ്റ്റാണ്.
പ്രോഗ്രാമുകളിൽ ഞാൻ അസംബ്ലർ ധാരാളം ഉപയോഗിക്കാറുണ്ടായിരുന്നു. ഇടനിലക്കാരില്ലാതെ നേരിട്ട് ഹാർഡ്‌വെയറുമായി "സംസാരിക്കാൻ" ഞാൻ ഇഷ്ടപ്പെട്ടു. എനിക്ക് കാർ നന്നായി തോന്നി. എന്നിട്ടും, എവിആറിനായി ഞാൻ അസംബ്ലറിൽ മാത്രമായി എഴുതി. ഒരു കമ്പ്യൂട്ടർ എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് ഇപ്പോൾ എനിക്ക് മനസ്സിലാകുന്നില്ല. തീർച്ചയായും, അടിസ്ഥാന ബ്ലോക്കുകൾ മുതലായവ ഞാൻ സങ്കൽപ്പിക്കുന്നു, പക്ഷേ എനിക്ക് വിശദമായ ചിത്രം അറിയില്ല, രസകരമായ കാര്യം അത് ആർക്കും അറിയില്ല എന്നതാണ്!
ഇപ്പോൾ... ഉയർന്നതും അതിനപ്പുറമുള്ളതുമായ ഭാഷകൾ ഉയർന്ന തലംകോഡ് എങ്ങനെ, എവിടെ എക്സിക്യൂട്ട് ചെയ്യപ്പെടുന്നു എന്നതിനെക്കുറിച്ച് ചിന്തിക്കാതിരിക്കാൻ അമൂർത്തങ്ങൾ പൊതുവെ നമ്മെ നിർബന്ധിക്കുന്നു. ഇത് നിസ്സംശയമായും നല്ലതാണ്, കാരണം ഇത് ചുമതലയിൽ നേരിട്ട് ശ്രദ്ധ കേന്ദ്രീകരിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു, എന്നാൽ മറുവശത്ത്, ഹാർഡ്‌വെയറുമായി പ്രവർത്തിക്കുന്നതിൻ്റെ ഊഷ്മള വിളക്ക് പോലെയുള്ള ചാം ഇല്ലാതാകുന്നു ...

റഫറൻസുകളുടെയും ലിങ്കുകളുടെയും പട്ടിക:
1. DOS shackmaster.narod.ru/fonts.htm-നായി ഒരു ഫോണ്ട് ഡൗൺലോഡ് ചെയ്യുന്നതെങ്ങനെ എന്നതിൻ്റെ വിവരണം
2. അസംബ്ലറിനെക്കുറിച്ചുള്ള ഒരു മികച്ച റഫറൻസ് പുസ്തകം, അത് എങ്ങനെ പ്രവർത്തിക്കണമെന്ന് എനിക്ക് മനസ്സിലാക്കി തന്നു ബയോസ് പ്രവർത്തനങ്ങൾ, കൂടാതെ കമ്പ്യൂട്ടർ ഹാർഡ്‌വെയറിനൊപ്പം പൊതുവെ: “പ്രോഗ്രാമിംഗ് ഇൻ ഹാർഡ്‌വെയർ ലെവൽ: പ്രത്യേക റഫറൻസ് പുസ്തകം." കുലകോവ്
3. എമുലേറ്റർ ഡോസ് ഡോസ്ബോക്സ് www.dosbox.com/download.php?main=1
4. പ്രോഗ്രാമും ഉറവിടങ്ങളും narod.ru/disk/65499856001.6f143511c7c3c2ad7866f07008d8db29/INVERTOR.zip.html
5. "മാട്രിക്സ്" പ്രോഗ്രാമിൻ്റെ ഉറവിടങ്ങൾ narod.ru/disk/65499898001.a6c953f20e2ee023bd00e3518e22fea8/Matrix.pas.html

പി.എസ്. ഓ, ഞാൻ ഈ ഫോണ്ട് എങ്ങനെ ഉണ്ടാക്കി എന്ന് ഓർക്കാനും ഗൂഗിൾ ചെയ്യാനും ഞാൻ കുറച്ച് ദിവസങ്ങൾ ചിലവഴിച്ചു. ഒരു കോഡ് ഉണ്ട്, അത് പ്രവർത്തിക്കുന്നു, പക്ഷേ ഞാൻ ഓർക്കുന്നില്ല, എങ്ങനെയെന്ന് മനസ്സിലാകുന്നില്ല.
പി.പി.എസ്. ആളുകൾക്ക് താൽപ്പര്യമുണ്ടെങ്കിൽ, ഒരു മിനിറ്റിനുള്ളിൽ ഞാൻ 4x4 ഫീൽഡ് എങ്ങനെ പൂർത്തിയാക്കുന്നു എന്നതിൻ്റെ ഒരു വീഡിയോ ഞാൻ ചേർക്കും (പൈലറ്റ് ബ്രദേഴ്സ് റഫ്രിജറേറ്റർ ഒരു ഉദാഹരണമായി ഉപയോഗിക്കുന്നു).
പി.പി.പി.എസ്. അക്ഷരവിന്യാസത്തെയും വിരാമചിഹ്നത്തെയും കുറിച്ചുള്ള ഏതെങ്കിലും അഭിപ്രായങ്ങൾ അയച്ചാൽ ഞാൻ അഭിനന്ദിക്കുന്നു സ്വകാര്യസന്ദേശം!

രജിസ്റ്റർ ചെയ്ത ഉപയോക്താക്കൾക്ക് മാത്രമേ സർവേയിൽ പങ്കെടുക്കാൻ കഴിയൂ. ദയവായി അകത്തു വന്നാലും.

ഒരു തുടക്കക്കാരനായ പ്രോഗ്രാമർ ഉടൻ തന്നെ പാസ്കലിൽ സങ്കീർണ്ണവും മൾട്ടി-ലെവൽ ഗെയിം പ്രോഗ്രാമും എഴുതാൻ തുടങ്ങരുത്. നിങ്ങൾ ഒരു ടെക്സ്റ്റ് ഇൻ്റർഫേസ് ഉപയോഗിച്ച് ഒരു ലോജിക് അല്ലെങ്കിൽ മാത്ത് ഗെയിം ഉപയോഗിച്ച് ആരംഭിക്കണം. ക്രമേണ അനുഭവം നേടുന്നതിലൂടെ, നിങ്ങൾക്ക് കൂടുതൽ ജോലിയിലേക്ക് പോകാം വലിയ പദ്ധതികൾ.

നിർദ്ദേശങ്ങൾ

  • ഒരു ശീർഷകവും ഉപയോഗിച്ച പ്ലഗ്-ഇന്നുകളുടെ ലിസ്റ്റും ഉപയോഗിച്ച് പ്രോഗ്രാമിൽ പ്രവർത്തിക്കാൻ ആരംഭിക്കുക: പ്രോഗ്രാം reshiprimer; crt ഉപയോഗിക്കുന്നു;
  • പ്രോഗ്രാമിൽ ഏതൊക്കെ വേരിയബിളുകൾ ഉൾപ്പെടുത്തുമെന്ന് കംപൈലറോട് പറയുക:vara,b,c:integer;d:string;ഇവിടെ a, b എന്നിവയാണ് നിബന്ധനകൾ, c ആണ് തുക, d എന്നത് ഉപയോക്താവിന് തുടരണോ എന്ന ചോദ്യത്തിനുള്ള ഉത്തരമാണ്. കളിക്കുന്നു.
  • പ്രോഗ്രാമിൻ്റെ ആരംഭം അടയാളപ്പെടുത്തുക ഒപ്പം അനന്തമായ ലൂപ്പ്, കൂടാതെ റാൻഡം നമ്പർ ജനറേറ്റർ ആരംഭിക്കുക:ആരംഭിക്കുക, 0=0 ഡോബിഗിൻ
  • 0 മുതൽ 1000 വരെയുള്ള ശ്രേണിയിലുള്ള രണ്ട് ക്രമരഹിത സംഖ്യകളുടെ ജനറേഷൻ പ്രോഗ്രാം ചെയ്യുക: a:= റൗണ്ട്(റാൻഡം(1000));b:=round(random(1000));
  • ഉപയോക്താവ് പരിഹരിക്കേണ്ട ഒരു ഉദാഹരണം കാണിക്കുക, തുടർന്ന് ഫലം ആവശ്യപ്പെടുക: writeln("അത് എത്രയായിരിക്കും"),a,("+"),b,("?");readln(c);
  • ഉദാഹരണം ശരിയാണോ പരിഹരിച്ചതെന്ന് ഉപയോക്താവിനോട് പറയുക: a+b=c എങ്കിൽ, writeln("ശരി!") else writeln("തെറ്റ്!);
  • ഉപയോക്താവിന് കൂടുതൽ കളിക്കാൻ താൽപ്പര്യമുണ്ടോ എന്ന് ചോദിക്കുക: writeln("ഞങ്ങൾ കളിക്കുന്നത് തുടരണോ?"); readln(d);
  • ഉത്തരം നെഗറ്റീവ് ആണെങ്കിൽ, പ്രോഗ്രാം അവസാനിപ്പിക്കുക: upcase(d)"Y" എങ്കിൽ halt(0);
  • ആദ്യം ലൂപ്പ് അവസാനിപ്പിക്കുക, തുടർന്ന് പ്രോഗ്രാം തന്നെ: അവസാനിക്കുക, രണ്ടാമത്തെ അവസാന പ്രസ്താവനയ്ക്ക് ശേഷമുള്ള കാലയളവ് ശ്രദ്ധിക്കുക.
  • Ctrl+F9 അമർത്തി പ്രോഗ്രാം സമാരംഭിക്കുക. ആദ്യ ഉദാഹരണം സ്ക്രീനിൽ പ്രദർശിപ്പിക്കും. നിങ്ങളുടെ തലയിൽ കണക്ക് ചെയ്ത് ഉത്തരം നൽകുക. ഇത് ശരിയായി പരിഹരിച്ചിട്ടുണ്ടോ എന്ന് മെഷീൻ ഉടൻ നിങ്ങളോട് പറയും. തുടർന്ന് കളിക്കുന്നത് തുടരണോ എന്ന് നിങ്ങളോട് ചോദിക്കും. Y അല്ലെങ്കിൽ y എന്ന് ഉത്തരം നൽകുന്നത് ഇനിപ്പറയുന്ന ഉദാഹരണം പ്രദർശിപ്പിക്കുന്നതിന് ഇടയാക്കും, മറ്റേതെങ്കിലും അക്ഷരം നൽകിയാൽ പ്രോഗ്രാം അവസാനിപ്പിക്കും.
  • നേടിയത് ശരിയായ പ്രവർത്തനംഗെയിം, അത് മെച്ചപ്പെടുത്താൻ ആരംഭിക്കുക. ഉദാഹരണത്തിന്, cls കമാൻഡ് ഉപയോഗിച്ച് ഓരോ പുതിയ ഉദാഹരണവും കാണിക്കുന്നതിന് മുമ്പ് വ്യക്തമായ ഒരു സ്ക്രീൻ ചേർക്കുക. ടെക്സ്റ്റ് കളർ നടപടിക്രമം ഉപയോഗിച്ച്, വാചകം വ്യത്യസ്ത നിറങ്ങളിൽ ദൃശ്യമാക്കുക. ഉദാഹരണങ്ങളുടെ സങ്കീർണ്ണത സ്വയമേവ മാറ്റാൻ നിങ്ങൾക്ക് പ്രോഗ്രാമിനെ എങ്ങനെ നിർബന്ധിക്കാമെന്ന് ചിന്തിക്കുക: ഉത്തരങ്ങൾ ശരിയാണെങ്കിൽ, അവയെ സങ്കീർണ്ണമാക്കുക, അവ തെറ്റാണെങ്കിൽ, ലളിതമാക്കുക. ഗെയിം വൈവിധ്യവത്കരിക്കുന്നതിന്, വിവിധ ഗണിത പ്രവർത്തനങ്ങൾക്ക് ഉദാഹരണങ്ങൾ സൃഷ്ടിക്കുന്നതിനുള്ള ഒരു ഫംഗ്ഷൻ ചേർക്കുക.
  • ഗ്രാഫിക്‌സോ ശബ്‌ദ ഇഫക്റ്റുകളോ ഇല്ലാത്ത ലളിതമായ ഗെയിമുകൾ ഇന്ന് ഒരു പുനർജന്മം അനുഭവിക്കുകയാണ്. അവ കളിക്കുമ്പോൾ, ഉപയോക്താവ് പ്ലോട്ടിലാണ് ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നത്, കലാപരമായ സാങ്കേതികതകളിലല്ല. അത്തരം ഗെയിമുകൾ സൃഷ്ടിക്കുന്നതിന് പാസ്കൽ ഭാഷ നന്നായി യോജിക്കുന്നു.

    നിർദ്ദേശങ്ങൾ

  • ഇനിപ്പറയുന്ന പേജിൽ നിന്ന് പാസ്കൽ ഭാഷാ കമ്പൈലർ ഡൗൺലോഡ് ചെയ്യുക - http://edn.embarcadero.com/article/20803. ഇതിനായുള്ള ഉപയോഗ നിബന്ധനകൾ വായിക്കുക സോഫ്റ്റ്വെയർ പാക്കേജ്, എന്നിട്ട് അത് ഇൻസ്റ്റാൾ ചെയ്യുക.
  • 0 മുതൽ 100 ​​വരെയുള്ള ശ്രേണിയിൽ ഒരു നമ്പർ ഊഹിക്കാൻ കളിക്കാരന് ആവശ്യമായ ഒരു ഗെയിം സൃഷ്ടിക്കാൻ ശ്രമിക്കുക. ആദ്യം, പ്രോഗ്രാമിൻ്റെ പേര് നൽകുക: പ്രോഗ്രാം ugadayka;
  • CRT മൊഡ്യൂൾ ബന്ധിപ്പിക്കുക: crt ഉപയോഗിക്കുന്നു;
  • വേരിയബിളുകൾ ഇനിപ്പറയുന്ന രീതിയിൽ സൂചിപ്പിക്കുക:var
  • zagadka,mnenie,popytki:integer;

  • സ്‌ക്രീനും വേരിയബിളുകളും ക്ലിയർ ചെയ്‌ത് പ്രോഗ്രാം ആരംഭിക്കുക, കൂടാതെ മറഞ്ഞിരിക്കുന്ന നമ്പറിലേക്ക് ഒരു വ്യാജ-റാൻഡം മൂല്യം നൽകി: ആരംഭിക്കുക
  • zagadka:=int(rnd*100);

  • ഉപയോക്താവ് അത് ഊഹിക്കുന്നതുവരെ മറഞ്ഞിരിക്കുന്ന നമ്പർ എന്താണെന്ന് ഉപയോക്താവിനോട് ചോദിക്കാൻ പ്രേരിപ്പിക്കുക: mnenie=zagadka ചെയ്യാതിരിക്കുമ്പോൾ
  • popytki:=popytki+1;

    writeln("ശ്രമ നമ്പർ ",popytki,".");

    എഴുതുക ("ഏത് നമ്പർ മറച്ചിട്ടുണ്ടെന്ന് നിങ്ങൾ കരുതുന്നു?");

    zagadka>mnenie എങ്കിൽ writeln("ഇല്ല, മറഞ്ഞിരിക്കുന്ന സംഖ്യ വലുതാണ്!")

    else writeln("ഇല്ല, മറഞ്ഞിരിക്കുന്ന സംഖ്യ കുറവാണ്!")

  • നമ്പർ ഊഹിച്ച ശേഷം, മുകളിൽ പറഞ്ഞ സംഭവങ്ങളുടെ യാന്ത്രിക ആവർത്തനം നിർത്തും. നിർവ്വഹണം ആരംഭിക്കും ഇനിപ്പറയുന്ന വരികൾപ്രോഗ്രാമുകൾ. അവയിൽ, ഉപയോക്താവ് നമ്പർ ഊഹിച്ച മെഷീൻ ഡിസ്പ്ലേ വിവരങ്ങൾ ഉണ്ടാക്കുക: writeln("അഭിനന്ദനങ്ങൾ! നിങ്ങൾ ",പോപ്പിറ്റ്കി,"" എന്ന ട്രൈ നമ്പറിലെ നമ്പർ ഊഹിച്ചു. ഇത് ശരിക്കും ",zagadka,"" ന് തുല്യമാണ്);
  • ബട്ടൺ:=റെഡ്കീ

  • പ്രോഗ്രാം അവസാനിപ്പിക്കാൻ ഓപ്പറേറ്ററെ നൽകുക: അവസാനം.
  • മെനു ഇനങ്ങളുടെ ഫയൽ ഉപയോഗിച്ച് ആവശ്യമുള്ള ഏതെങ്കിലും പേരിൽ പ്രോഗ്രാം സംരക്ഷിക്കുക -> ഇതായി സംരക്ഷിക്കുക. ഭാവിയിൽ, ഓരോ എഡിറ്റിനും ശേഷം, F2 കീ അമർത്തി സംരക്ഷിക്കുക.
  • നിർവ്വഹണത്തിനായി പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കുന്നതിന്, ഒരേസമയം Control, F9 കീകൾ അമർത്തുക.
  • പ്രോഗ്രാം റൺ ചെയ്തുകഴിഞ്ഞാൽ, അതിന് തൊട്ടുമുമ്പ് സ്ക്രീനിൽ എന്താണ് കാണിച്ചതെന്ന് കാണുന്നതിന്, ഒരേസമയം അമർത്തുക Alt കീകൾകൂടാതെ F5. എഡിറ്ററിലേക്ക് മടങ്ങാൻ, അതേ കീ കോമ്പിനേഷൻ വീണ്ടും അമർത്തുക.
  • ഇക്കാലത്ത്, പുതിയ ഗെയിം നിർമ്മാതാക്കൾക്കിടയിൽ ഒരു അഭിപ്രായമുണ്ട്, ഒരു പിസിയിൽ ഒരു സാധാരണ 2D ആർക്കേഡ് ഗെയിം എഴുതുന്നതിന് നിങ്ങൾക്ക് ഒരു രസകരമായ എഞ്ചിനോ ഡിസൈനറോ ലഭിക്കേണ്ടതുണ്ട്, കൂടാതെ അത്തരമൊരു അഭിമാനകരമായ C++ അറിയുന്നതും വളരെ നല്ലതാണ്, അതിനാൽ നിങ്ങൾക്ക് കണ്ടെത്താനാകും. മൂല്യവത്തായ ലേഖനംപാസ്കലിൽ ഇത് മിക്കവാറും അസാധ്യമാണ്. എന്നാൽ ഇന്ന് ഞാൻ ഒരു ലളിതമായ പ്ലാറ്റ്‌ഫോമർ വികസിപ്പിക്കുന്നതിനെക്കുറിച്ചുള്ള ഒരു ചെറിയ പാഠം എഴുതി നിശ്ചലമായ സ്റ്റീരിയോടൈപ്പുകൾ തകർക്കാൻ ശ്രമിക്കാൻ തീരുമാനിച്ചു. അതിനാൽ, സ്വയം സുഖകരമാക്കുക, "പ്രബുദ്ധതയുടെ" ഗതി ആരംഭിക്കുന്നു ...

    1. എന്താണ് വേണ്ടത്?
    ഒരു ഭാഷയായി ഉപയോഗിക്കുന്ന വിവിധ പരിതസ്ഥിതികൾ പാസ്കൽ പ്രോഗ്രാമിംഗ്, ധാരാളം. എന്നാൽ ഈ കൂമ്പാരങ്ങളിൽ നിന്ന്, പാഠത്തിനായി PascalABC.net ഉപയോഗിക്കാൻ ഞാൻ തീരുമാനിച്ചു. എന്തുകൊണ്ട്? ഉത്തരം ലളിതമാണ്: ആദ്യം നൽകിയ പരിസ്ഥിതിപ്രോഗ്രാമിംഗ് ശുദ്ധമായ പാസ്കൽ ഉപയോഗിക്കുന്നില്ല, എന്നാൽ അതിൻ്റെ ആധുനികവും കൂടുതൽ സൗകര്യപ്രദവുമായ പിൻഗാമി - ഒബ്ജക്റ്റ് പാസ്കൽ; രണ്ടാമതായി, Pascal.Net തികച്ചും സൗജന്യമാണ്, അതിനർത്ഥം നിങ്ങൾ വിള്ളലുകളെക്കുറിച്ച് വിഷമിക്കേണ്ടതില്ല അല്ലെങ്കിൽ ലൈസൻസിനായി പണം ചെലവഴിക്കേണ്ടതില്ല എന്നാണ്.

    2. അൽഗോരിതം.
    അതിനാൽ, ഞങ്ങൾക്ക് 640x480 വിസ്തീർണ്ണമുണ്ട്, അത് എൻ്റെ ആശയം അനുസരിച്ച് 8x8 സെല്ലുകളായി വിഭജിക്കപ്പെടും, അത് അറേയുടെ ലിങ്കുകളെ പ്രതിനിധീകരിക്കുന്നു. അങ്ങനെ, ഒരു സെല്ലിൻ്റെ മൂല്യം മാറ്റുന്നതിലൂടെ, നമുക്ക് അതിനെ "സ്വതന്ത്രം" അല്ലെങ്കിൽ "അധിനിവേശം" ആക്കാം (ഉദാഹരണത്തിന്, അത് ഒരു മതിലായി ഉപയോഗിക്കുക).

    തൽഫലമായി, നമുക്ക് കഴിയും അനാവശ്യ കൃത്രിമങ്ങൾകളിക്കാരന് എവിടേക്കാണ് നീങ്ങാൻ കഴിയുക, എവിടെ പോകരുത് എന്ന് നിർണ്ണയിക്കുക (ചിത്രം കാണുക).

    3. വേരിയബിളുകളും മൊഡ്യൂളുകളും.
    വേണ്ടി പൂർണ്ണമായ ജോലിഞങ്ങളുടെ ഭാവി ഗെയിമിനായി, സ്‌ക്രീനിൽ ഗ്രാഫിക് പ്രിമിറ്റീവുകൾ പ്രദർശിപ്പിക്കാൻ ഞങ്ങളെ അനുവദിക്കുന്ന ഒരു ഗ്രാഫാബിസി മൊഡ്യൂൾ മാത്രം കണക്‌റ്റ് ചെയ്യേണ്ടതുണ്ട്.

    പട്ടിക 1:

    200?"200px":""+(this.scrollHeight+5)+"px");">GrapABC ഉപയോഗിക്കുന്നു;

    വര്
    s: അറേ [,] പൂർണ്ണസംഖ്യയുടെ;
    i,x,y,vspeed: integer;
    ഗെയിം_അവസാനം: ബൂളിയൻ;

    4. കീസ്ട്രോക്കുകൾ.
    അതിനാൽ, കോഡ് പരിഷ്‌ക്കരിക്കുന്നതിന് നിങ്ങളുടെ സ്വന്തം രചനകളിലൂടെ കടന്നുപോകേണ്ടതില്ല, കളിക്കാരൻ്റെ സ്ഥാനം കൈകാര്യം ചെയ്യുന്നതിന് ഉത്തരവാദിത്തമുള്ള രണ്ട് വ്യത്യസ്ത നടപടിക്രമങ്ങൾ സൃഷ്ടിക്കാം.

    പട്ടിക 2:

    200?"200px":""+(this.scrollHeight+5)+"px");">//കീസ്ട്രോക്കുകൾ കൈകാര്യം ചെയ്യുന്നു
    നടപടിക്രമം KeyPress(കീ: ചാർ); ആരംഭിക്കുന്നു

    (key="d") ഉം (s[(x div 8)+1,(y div 8)]=0) എങ്കിൽ //D കീ അമർത്തിയാൽ...
    x:=x+8; //... ഉണ്ട് സ്വതന്ത്ര സ്ഥലം, പിന്നെ ഞങ്ങൾ നീങ്ങുന്നു...
    //… ഒരു സെൽ ഫോർവേഡ് (x മൂല്യം 8 വർദ്ധിക്കുന്നു)

    (കീ="എ") ഉം (s[(x div 8)-1,(y div 8)]=0) എങ്കിൽ //കാണുക മുകളിൽ അഭിപ്രായം
    x:=x-8;

    (key="w") ഉം (vspeed=0) ഉം (s[(x div 8),(y div 8)+1]=1) എങ്കിൽ //ഒരു "അധിനിവേശ സെൽ" ഉണ്ടെങ്കിൽ...
    vspeed:=-16; //... നമ്മുടെ കാൽക്കീഴിൽ, പിന്നെ ഞങ്ങൾ ഒരു ചാട്ടം നടത്തുന്നു.

    നടപടിക്രമം കീഡൗൺ (കീ: പൂർണ്ണസംഖ്യ); ആരംഭിക്കുന്നു
    എങ്കിൽ (കീ = vk_enter) പിന്നെ game_end: = true; //ENTER അമർത്തുമ്പോൾ...
    //ഗെയിം_എൻഡ് വേരിയബിളിൻ്റെ മൂല്യം ശരിയാണ്
    അവസാനിക്കുന്നു;

    5. ഗുരുത്വാകർഷണം.
    പ്ലാറ്റ്‌ഫോമിംഗിൻ്റെ അവിഭാജ്യ ഘടകമാണ് ഗുരുത്വാകർഷണം. അതിനാൽ, ഇപ്പോൾ നമ്മൾ ഒരു പ്രത്യേക നടപടിക്രമം എഴുതണം, അത് ഭാവിയിൽ കളിക്കാരനെ അക്ഷരാർത്ഥത്തിൽ കാലിൽ തിരികെ കൊണ്ടുവരാൻ സഹായിക്കും.

    പട്ടിക 3:

    200?"200px":""+(this.scrollHeight+5)+"px");">//ഗ്രാവിറ്റി
    നടപടിക്രമം ഗ്രാവിറ്റി (); ആരംഭിക്കുന്നു

    vspeed=0 ആണെങ്കിൽ ആരംഭിക്കുക //ജമ്പ് സ്പീഡ് പൂജ്യമാണെങ്കിൽ...
    s[(x div 8),(y div 8)+1]=0 ആണെങ്കിൽ y+=8; //... ഞങ്ങൾ ഒരു "സെൽ" താഴേക്ക് നീങ്ങുന്നു (ഞങ്ങൾ വീഴുന്നു)
    അവസാനിക്കുന്നു;

    s[(x div 8),(y div 8)+vspeed]=0 ആണെങ്കിൽ y+=vspeed; //മുകളിൽ ഒരു ഫ്രീ സെൽ ഉണ്ടെങ്കിൽ...
    //… vspeed വഴി മുകളിലേക്ക് നീങ്ങുക.

    v വേഗതയാണെങ്കിൽ<>0 പിന്നെ //ജമ്പ് സ്പീഡ് പൂജ്യമല്ലെങ്കിൽ (ഞങ്ങളുടെ കാര്യത്തിൽ: പൂജ്യത്തേക്കാൾ കുറവ്)...
    vspeed+=2; //...പിന്നെ നമ്മളത് കുറച്ചു കുറച്ചു.

    6. ഡ്രോയിംഗ്.
    ഇത് കൂടാതെ ഇവിടെ വ്യക്തമാണെന്ന് ഞാൻ കരുതുന്നു അനാവശ്യ വാക്കുകൾ, എന്നാൽ പ്രദർശനത്തിനായി, ഗെയിം "വിഷ്വൽ", "നോൺ-വിഷ്വൽ" ഭാഗങ്ങളായി തിരിച്ചിരിക്കുന്നുവെന്ന് ഞാൻ ശ്രദ്ധിക്കും. ഗെയിമിൽ തന്നെ സംഭവിക്കുന്ന എല്ലാത്തിനും "നോൺ-വിഷ്വൽ" ഉത്തരവാദിയാണ്, കൂടാതെ "വിഷ്വൽ" യഥാർത്ഥത്തിൽ സ്ക്രീനിൽ എന്താണ് സംഭവിക്കുന്നതെന്ന് പ്രദർശിപ്പിക്കുന്നതിന് ഉത്തരവാദിയാണ്. അതിനാൽ, ചുവടെ നൽകിയിരിക്കുന്ന നടപടിക്രമം "വിഷ്വൽ" ഭാഗത്തിന് ഉത്തരവാദിയാണ്, അതിൽ കൂടുതലൊന്നുമില്ല.

    പട്ടിക 4:

    200?"200px":""+(this.scrollHeight+5)+"px");">നടപടിക്രമം വരയ്ക്കുക();ആരംഭിക്കുക

    വീണ്ടും വരയ്ക്കുക;
    ലോക്ക് ഡ്രോയിംഗ്;

    //ഒരു വെളുത്ത ദീർഘചതുരം വരയ്ക്കുക...
    സെറ്റ്ബ്രഷ് കളർ (clwhite); //... വലിപ്പം 640 / 480
    പൂരിപ്പിക്കൽ ദീർഘചതുരം (0,0,640,480);

    Setbrushcolor(clblack);//കറുത്ത ചുവരുകൾ വരയ്ക്കുക...
    ദീർഘചതുരം (0,192,640,224);//... കോർഡിനേറ്റുകൾ പ്രകാരം…
    //... X-ൽ 0 – 640; Y-ൽ 192 - 224
    //(ശ്രദ്ധിക്കുക! ഈ കൃത്രിമങ്ങൾ മതിലുകളെ മൂർച്ചയുള്ളതാക്കുന്നില്ല, പക്ഷേ...
    //... അവരുടെ ഗ്രാഫിക് ഇമേജ് സൃഷ്ടിക്കുക.

    സെറ്റ്ബ്രഷ് കളർ (clred); //കോർഡിനേറ്റുകൾ ഉപയോഗിച്ച് കളിക്കാരനെ വരയ്ക്കുക...
    ദീർഘചതുരം(x,y,x+8,y+8);//... x, y എന്നിവ

    7. പ്രോഗ്രാമിൻ്റെ ബോഡി.
    അതിനാൽ ഞങ്ങൾ യഥാർത്ഥത്തിൽ പ്രോഗ്രാമിലേക്ക് തന്നെ എത്തി. ഇവിടെ നമുക്ക് ആവശ്യമായ മൂല്യങ്ങൾ ഉപയോഗിച്ച് അറേ പൂരിപ്പിക്കേണ്ടതുണ്ട്, കൂടാതെ മുമ്പ് എഴുതിയ നടപടിക്രമങ്ങളും ഉപയോഗിക്കേണ്ടതുണ്ട്.

    പട്ടിക 5:

    200?"200px":""+(this.scrollHeight+5)+"px");">ആരംഭിക്കുക //പ്രോഗ്രാമിൻ്റെ തുടക്കം

    //വേരിയബിളുകൾക്കുള്ള മൂല്യങ്ങൾ വ്യക്തമാക്കുന്നു
    ഗെയിം_അവസാനം: = തെറ്റ്;
    x:=0; //എക്സ് പ്രകാരം കളിക്കാരൻ്റെ ആരംഭ സ്ഥാനം
    y:=0; //Y-യിൽ കളിക്കാരൻ്റെ ആരംഭ സ്ഥാനം

    //ഒരു അറേ സൃഷ്‌ടിക്കുക
    s:= പുതിയ പൂർണ്ണസംഖ്യ;

    //ഡ്രോ നടപടിക്രമത്തിൽ വരച്ച ഒരു പ്ലാറ്റ്ഫോം സൃഷ്ടിക്കുക
    i:=0 മുതൽ 79 വരെ ചെയ്യുക
    s := 1;

    Game_end=false ആരംഭിക്കുമ്പോൾ //ഒരു ലൂപ്പ് സൃഷ്‌ടിക്കുക...
    //... ഗെയിം_എൻഡ് = തെറ്റാണെങ്കിൽ അത് നിർത്തലാക്കും

    //സ്ക്രീൻ വരയ്ക്കുക
    വരയ്ക്കുക();

    // കളിക്കാരനുള്ള ഗുരുത്വാകർഷണം
    ഗുരുത്വാകർഷണം ();

    OnKeyPress:=KeyPress; //ക്ലിക്കുകൾ പ്രോസസ്സ് ചെയ്യുന്നു...
    ഓൺകീഡൗൺ:=കീഡൗൺ; //… കീകൾ

    ഉറക്കം (30); //ഏകദേശം അര സെക്കൻഡ് കാത്തിരിക്കൂ കളി...
    //... കൂടെ പ്രവർത്തിച്ചു സാധാരണ വേഗത

    അവസാനം;//ചക്രത്തിൻ്റെ അവസാനം.

    അവസാനിക്കുന്നു. //പരിപാടിയുടെ അവസാനം

    8. ഉപസംഹാരം.
    മൊത്തത്തിൽ, പ്രധാന റോളിൽ ഒരു ഡോട്ടുള്ള ഒരു ലളിതമായ പ്ലാറ്റ്‌ഫോമർ ഞങ്ങൾക്ക് ലഭിച്ചു. നമുക്ക് തിരശ്ചീനമായി നീങ്ങാനും ചാടാനും കഴിയും:

    പൊതുവേ, "അനാവശ്യമായ വെള്ളം" പലപ്പോഴും വായിക്കാത്തതിനാൽ, ഈ പാഠത്തിൻ്റെ അവസാനം എല്ലാത്തരം ഡ്രെഗ്‌സുകളിലും നേർപ്പിക്കാൻ ഞാൻ ആഗ്രഹിക്കുന്നില്ല, അതിനാൽ അഭിപ്രായങ്ങൾ ഇടാൻ നിങ്ങളോട് ആവശ്യപ്പെട്ട് ഞാൻ ഇറങ്ങും. നിങ്ങളുടെ ശ്രദ്ധയ്ക്ക് നന്ദി! ഞാൻ നിങ്ങളെ സഹായിച്ചുവെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു!

    ടെക്‌സ്‌ച്വൽ (മൈൻ മൈൻസ് ഗെയിം) ഗ്രാഫാബിസി, എബിസിഒബ്‌ജക്‌റ്റുകൾ, എബിസിബട്ടണുകൾ ഉപയോഗിക്കുന്നു; കോൺസ്റ്റ് N = 10; //ഫീൽഡ് N x N sz = 40; //സെൽ വലുപ്പം d0 = 10; //ഇടത്, മുകളിലെ അരികിൽ നിന്നുള്ള ഇൻഡൻ്റ് zz = 2; //സെല്ലുകൾ തമ്മിലുള്ള ദൂരം NMines = 10; //മൈനുകളുടെ എണ്ണം ടൈപ്പ് വൺസെൽഫീൽഡ് = റെക്കോർഡ് മൈൻ: ബൂളിയൻ; //ഒരു ഖനി ഉണ്ടോ fl: boolean; //ഒരു ചെക്ക്ബോക്സ് അയൽക്കാർ ഉണ്ടോ: പൂർണ്ണസംഖ്യ; //പോസിറ്റീവ് - എത്ര അയൽക്കാർ; neg - ട്രേസിംഗ് അൽഗോരിതത്തിന് ആവശ്യമാണ് - ശൂന്യമായ സെല്ലുകൾ തുറക്കുന്നു ക്ലിക്ക്: ബൂളിയൻ; //ഓപ്പൺ എൻഡ് ആയിരുന്നോ; Var BtNewGame: ബട്ടൺABC; വിൽക്കുക: SquareABC യുടെ ശ്രേണി; ഫീൽഡ്: OneSellField-ൻ്റെ ശ്രേണി; സി: ഷോർട്ട്ടിൻ്റ്; //അയൽ സെല്ലുകളിലെ ഖനികൾ എണ്ണാൻ തുറന്നു: shortint; //എത്ര ചെക്ക്ബോക്സുകൾ ശരിയായി പരിശോധിച്ചു Nfl: പൂർണ്ണസംഖ്യ; //പരിശോധിച്ച ഫ്ലാഗുകളുടെ എണ്ണം (വിജയിക്കാൻ മിനിറ്റുകളുടെ എണ്ണത്തിന് തുല്യമായിരിക്കണം) നടപടിക്രമം CreateField; var y ന് ആരംഭിക്കുക:= 1 മുതൽ N വരെ var x ന് ചെയ്യുക:= 1 മുതൽ N വരെ ആരംഭിക്കുക വിൽക്കുക := പുതിയ SquareABC(d0+(x-1)*(sz+zz),d0+(y-1)*(sz+zz ), sz, clLightSeaGreen); Sell.BorderColor:= clGreen; Sell.BorderWidth:= 2; Sell.TextScale:= 0.7; അവസാനിക്കുന്നു; അവസാനിക്കുന്നു; നടപടിക്രമം NewGame; var Rx, Ry: പൂർണ്ണസംഖ്യ; var j ന് ആരംഭിക്കുക: = 1 മുതൽ N വരെ var i: = 1 മുതൽ N വരെ ആരംഭിക്കുക Field.mine:= false; Field.click:= തെറ്റ്; Field.fl:= തെറ്റ്; ഫീൽഡ്.അയൽക്കാർ:= 0; Sell.BorderColor:= clGreen; വിൽക്കുക.ടെക്സ്റ്റ്:= ""; Sell.Color:= cLightSeaGreen; അവസാനിക്കുന്നു; //var i-നുള്ള മൈനുകൾ സ്ഥാപിക്കുക:= 1 മുതൽ NMines വരെ Rx:= Random(N)+1; Ry:= ക്രമരഹിതം(N)+1; //തിരഞ്ഞെടുത്ത സെല്ലിൽ മൈനുകൾ ഉണ്ടെങ്കിൽ, Field.mine ആരംഭിക്കുമ്പോൾ പുതിയ മൈൻ കോർഡിനേറ്റുകൾ സൃഷ്ടിക്കുക Rx:= Random(N)+1; Ry:= ക്രമരഹിതം(N)+1; അവസാനിക്കുന്നു; Field.mine:= സത്യം; അവസാനിക്കുന്നു; (//താത്കാലിക സൂചന var j:=1 മുതൽ N വരെ var i:=1 മുതൽ N വരെ, Field.mine, Sell.BorderColor:= clYellow; അവസാനം; ) var ii, jj: shortint; //var j:=1 മുതൽ N വരെയുള്ള ഖനികൾ എണ്ണുക var dx ന്:= -1 മുതൽ 1 വരെ var dy ന് ആരംഭിക്കുക:= -1 മുതൽ 1 വരെ ചെയ്യുക ഇല്ലെങ്കിൽ ((dx = 0) കൂടാതെ (dy = 0)) തുടർന്ന് ii:= i + dx ആരംഭിക്കുക; jj:= j + dy; എങ്കിൽ ((ii > 0) ഒപ്പം (ii<= N) and (jj >0) ഒപ്പം (jj<= N)) then begin c:= c + Integer(Field.mine); end; end; end; Field.neighbours:= c; end; Opened:= 0; //Кол. открытых мин Nfl:= 0; //Кол. установленных флажков end; Procedure OpenZero(fx, fy: integer); var fl:boolean; step, ii, jj: integer; begin Field.neighbours:= -1; step:= -1; repeat fl:= true; for var x:= 1 to N do begin for var y:= 1 to N do begin if Field.neighbours < 0 then begin {*** Проверка соседних клеток ***} for var dx:= -1 to 1 do begin for var dy:= -1 to 1 do if not ((dx = 0) and (dy = 0)) then begin //Центральную клетку не считаем ii:= x + dx; jj:= y + dy; //Если не выходит за границы поля if ((ii >0) കൂടാതെ (ii<= N) and (jj >0) ഒപ്പം (jj<= N)) then begin if Field.neighbours = 0 then begin Sleep(30); //Для анимации открывания клеток Sell.Color:= clLightYellow; Field.click:= true; Field.neighbours:= step; fl:= false; //Была открыта клетка - ищем др. end; if Field.neighbours >0 തുടർന്ന് Sell.Color ആരംഭിക്കുക:= clLightGreen; Sell.Text:= IntToStr(Field.neighbours); Field.click:= true; അവസാനിക്കുന്നു; അവസാനിക്കുന്നു; അവസാനിക്കുന്നു; അവസാനിക്കുന്നു; (*********************) അവസാനിക്കുന്നു; അവസാനിക്കുന്നു; അവസാനിക്കുന്നു; ഘട്ടം:= ഘട്ടം - 1; fl വരെ; അവസാനിക്കുന്നു; നടപടിക്രമം MouseDown(x, y, mb: integer); ObjectUnderPoint(x,y)=nil ആണെങ്കിൽ ആരംഭിക്കുക // നമ്മൾ ഒബ്‌ജക്റ്റല്ലാതെ മറ്റെന്തെങ്കിലും ക്ലിക്ക് ചെയ്താൽ, മൗസ് എക്സിറ്റിനോട് പ്രതികരിക്കരുത്; var fx:= (x-d0) div (sz+zz) + 1; // ഞങ്ങൾ var fy ക്ലിക്ക് ചെയ്ത സെല്ലിൻ്റെ ബോർഡിലെ കോർഡിനേറ്റുകൾ കണക്കാക്കുക:= (y-d0) div (sz+zz) + 1; Field.click:= true; mb = 1 ആണെങ്കിൽ ആരംഭിക്കുക //Field.mine ആണെങ്കിൽ മൈൻ ക്ലിക്ക് ചെയ്താൽ Sell.Text:= "M"; വിൽക്കുക.നിറം:= clRed; //writeln("ലോസ്റ്റ്!"); end else ആരംഭിക്കുക //നിങ്ങൾ ഒരു ശൂന്യമായ സെല്ലിൽ ക്ലിക്ക് ചെയ്താൽ (Field.neighbors = 0) തുടർന്ന് Sell.Color:= clLightYellow; Field.fl എങ്കിൽ Sell.Text:= ""; //ശൂന്യമായ ഫീൽഡുകൾ വികസിപ്പിക്കുന്നതിനുള്ള നടപടിക്രമം വിളിക്കുക OpenZero(fx, fy); Field.neighbors > 0 ആണെങ്കിൽ അവസാനിപ്പിക്കുക, തുടർന്ന് Sell.Color ആരംഭിക്കുക:= clLightGreen; Sell.Text:= IntToStr(Field.neighbours); അവസാനിക്കുന്നു; അവസാനിക്കുന്നു; അവസാനിക്കുന്നു; //mb = 2 ആണെങ്കിൽ ബോക്‌സ് പരിശോധിച്ച് അൺചെക്ക് ചെയ്യുക, തുടർന്ന് Field.fl എങ്കിൽ ആരംഭിക്കുക, തുടർന്ന് ആരംഭിക്കുക // ബോക്‌സ് അൺചെക്ക് ചെയ്യുക Field.fl:= False; വിൽക്കുക.ടെക്സ്റ്റ്:= ""; Sell.Color:= cLightSeaGreen; Nfl -= 1; എങ്കിൽ (തുറന്ന = NMines) ഉം (Nfl = NMines) പിന്നെ writeln("വിജയം!"); //Window.Title:= IntToStr(Nfl)+" M "+IntToStr(തുറന്നു); അവസാനം വേറെ തുടങ്ങുക //ചെക്ക്ബോക്സ് സജ്ജമാക്കുക Field.fl:= true; വിൽക്കുക.വാചകം:= "F"; വിൽക്കുക.നിറം:= clBlue; Nfl += 1; //Window.Title:= IntToStr(Nfl)+" M "+IntToStr(തുറന്നു); അവസാനിക്കുന്നു; Field.mine ആണെങ്കിൽ, Field.fl എങ്കിൽ ആരംഭിക്കുക, തുടർന്ന് += 1 ഓപ്പൺ ചെയ്‌തു -= 1; //Window.Title:= IntToStr(Nfl)+" M "+IntToStr(തുറന്നു); എങ്കിൽ (തുറന്ന = NMines) ഉം (Nfl = NMines) പിന്നെ writeln("വിജയം!"); അവസാനിക്കുന്നു; അവസാനിക്കുന്നു; അവസാനിക്കുന്നു; നടപടിക്രമം MouseMove(x, y, mb: integer); ObjectUnderPoint(x,y)=nil ആണെങ്കിൽ ആരംഭിക്കുക // നമ്മൾ ഒബ്‌ജക്റ്റല്ലാതെ മറ്റെന്തെങ്കിലും ക്ലിക്ക് ചെയ്താൽ, മൗസ് എക്സിറ്റിനോട് പ്രതികരിക്കരുത്; var fx:= (x-d0) div (sz+zz) + 1; // ഞങ്ങൾ var fy ക്ലിക്ക് ചെയ്ത സെല്ലിൻ്റെ ബോർഡിലെ കോർഡിനേറ്റുകൾ കണക്കാക്കുക:= (y-d0) div (sz+zz) + 1; (എല്ലാ സെല്ലുകളും പച്ചയാണ്) var j:= 1 മുതൽ N വരെ var i:= 1 മുതൽ N വരെ ചെയ്യുക ഇല്ലെങ്കിൽ ആരംഭിക്കുക Field.click തുടർന്ന് Sell.Color:= clLightSeaGreen; അവസാനിക്കുന്നു; (എല്ലാ സെല്ലുകളും പച്ചയാണ്, അതിന് മുകളിലുള്ള മൗസ് തിളക്കമുള്ള പച്ചയാണ്) Field.click ഇല്ലെങ്കിൽ, Sell.Color:= cLightGreen; അവസാനിക്കുന്നു; BEGIN SetSmoothingOff; // antialiasing Window. ശീർഷകം:= "Mineweeper"; Window.IsFixedSize:= ശരിയാണ്; CreateField;//ഒരു ഫീൽഡ് സൃഷ്ടിക്കുക btNewGame:= ButtonABC.Create(535, d0, 100, " ഒരു പുതിയ ഗെയിം", clSkyBlue); btNewGame.OnClick:= NewGame; NewGame; OnMouseDown:= MouseDown; OnMouseMove:= MouseMove; END.