иТПОЙЛЙ чБФЛЙ
юБУФШ 2. хУПЧЕТЫЕОУФЧПЧБОЙЕ.

лПЗДБ ЙЗТБ ВЩМБ ЗПФПЧБ, ФП ЕУФШ, ЛПЗДБ ВЩМП ТЕБМЙЪПЧБОП ТБОЕЕ ЪБДХНБООПЕ, С ТЕЫЙМ ХМХЮЫЙФШ ЙЗТХ. оБ УБНПН ДЕМЕ, УДЕМБОП ВЩМП ПЮЕОШ НБМП: НЙЛТПВЩ Й МЕКЛПГЙФЩ ВЕУРПТСДПЮОП ДЧЙЗБМЙУШ. нОЕ ОЕ ОТБЧЙМПУШ ФП, ЮФП НЙЛТПВЩ УЧПВПДОП ДЧЙЗБАФУС РП ТБОЛЕ, ОЕ ПВТБЭБС ЧОЙНБОЙС ОБ ЕЈ ТЕМШЕЖОПУФШ. юФПВЩ ЬФП ЙУРТБЧЙФШ, НЩ ВХДЕН ЙУРПМШЪПЧБФШ ЛБТФХ ЧЩУПФ. рТЙЪОБАУШ - ЬФП РЕТЧЩК ТБЪ, ЛПЗДБ С ФБЛ ДЕМБА. оБН ОХЦОП ЛБЛЙН-ФП ПВТБЪПН УДЕМБФШ ЬФХ ЛБТФХ Й ОЕ ЪБВЩЧБФШ, ЮФП ЕЈ ЙУРПМШЪПЧБОЙЕ ОЕ ДПМЦОП ЪБОЙНБФШ НОПЗП УЙУФЕНОЩИ ТЕУХТУПЧ. дМС ЬФПЗП ПОБ ВХДЕФ Ч N*N ТБЪ НЕОШЫЕ ЖПОБ. дХНБА, ВХДЕФ РПОСФОЕК, ЕУМЙ РТПЙММАУФТЙТПЧБФШ.

юЕН УЧЕФМЕЕ, ФЕН МЕЗЮЕ НЙЛТПВХ ЙМЙ МЕКЛПГЙФХ РЕТЕДЧЙЗБФШУС РП РПЧЕТИОПУФЙ. лБЛ ЧЙДОП, ЧОХФТЙ Й ЧОЕ ТБОЛЙ НЙЛТПВЩ ВХДХФ ДЧЙЗБФШУС УЧПВПДОП, Б ЧПФ ЧЩВТБФШУС, ЙМЙ ОБПВПТПФ РПРБУФШ Ч ОЕЈ, ДПУФБФПЮОП РТПВМЕНБФЙЮОП. ъБФЕН НЩ ХНЕОШЫБЕН ЛБТФХ ЧЩУПФ Ч 9 ТБЪ (N=3), ЮФПВЩ ОЕ УМЙЫЛПН ЮБУФП ФХДБ ЗМСДЕФШ.

лБЛ ЬФП ТБВПФБЕФ? нЩ НПЦЕН ХЪОБФШ ГЧЕФ РЙЛУЕМС ОБ ОБЫЕК ЛБТФЕ ЧЩУПФ. гЧЕФ ПФФЕОЛБ УЕТПЗП - ЬФП ЮЙУМП ПФ 0 ДП 255. ъБФЕН ЬФП ЮЙУМП ДЕМЙН ОБ ЛБЛПК-ФП ЛПЬЖЖЙГЙЕОФ Й РПМХЮБЕН УЛПТПУФШ. оП ЮФПВЩ ПОБ ОЕ ВЩМБ ТБЧОБ ОХМА ОБ ЮЕТОЩИ ХЮБУФЛБИ, РТЙВБЧЙН ОЕВПМШЫПЕ ЮЙУМП. ч ПВЭЕН ЧЙДЕ ЬФП ЧЩЗМСДЙФ ФБЛ:

speed = pixel_color (X div N, Y div N)/ k + min_speed

дБЧБКФЕ РПРТПВХЕН ТЕБМЙЪПЧБФШ ЬФП ОБ Game maker. гЧЕФ РЙЛУЕМС НПЦОП ПРТЕДЕМЙФШ ФПМШЛП ОБ РПЧЕТИОПУФЙ (surface). ч ОБЫЕН УМХЮБЕ ОЕ ЧБЦОП, ТБВПФБМЙ ЧЩ У ОЙНЙ ЙМЙ ОЕФ, ФБЛ ЛБЛ ОБН РПОБДПВСФУС ФПМШЛП ПУОПЧЩ.

йФБЛ, surface - ЬФП РПЧЕТИОПУФШ ЙМЙ ИПМУФ, ОБ ЛПФПТПН НПЦОП ЮФП-ФП ЪБТБОЕЕ ОБТЙУПЧБФШ, ОЕ ПФПВТБЦБС ЬФП ОБ ЬЛТБОЕ. рТЙЮЕН surface, Ч ПФМЙЮЙЕ ПФ ПВЩЮОПК ЬЛТБООПК ЛБТФЙОЛЙ, ОЕ ПВОПЧМСЕФУС. ьФП ЪОБЮЙФ, ЮФП ЕУМЙ НЩ ЮФП-ФП ОБТЙУПЧБМЙ ПДОБЦДЩ, ПОП ФБН Й ПУФБОЕФУС ДП ФЕИ РПТ, РПЛБ НЩ УБНЙ ЬФП ОЕ ХВЕТЕН. юФПВЩ ЙУРПМШЪПЧБФШ surface - ЕЗП ОХЦОП УПЪДБФШ, ЪБФЕН ЧЩВТБФШ, ЮФП-ФП Ч ОЕН ОБТЙУПЧБФШ, УВТПУЙФШ <ЖПЛХУ> Й ЧЩЧЕУФЙ Ч ОХЦОЩК НПНЕОФ ОБ ЬЛТБО (УПЧЕФХА ЧБН РПУНПФТЕФШ УФБОДБТФОХА РПНПЭШ РП game maker, ЕУМЙ ЮФП-ФП ОЕ РПОЙНБЕФЕ). б Ч ОБЫЕК УЙФХБГЙЙ, ДБЦЕ ЧЩЧПДЙФШ ОБ ЬЛТБО ОЕ РТЙДЕФУС.

surface = surface_create( room_width, room_height )
surface_set_target( surface )
draw_sprite( s_highmap, 0, 0, 0 )
surface_reset_target()

чЙДЙФЕ ЛБЛ РТПУФП! фЕРЕТШ ОХЦОП ЧЩЮЙУМЙФШ УЛПТПУФШ, РП ОБЫЕК ЖПТНХМЕ, Б ДМС ЬФПЗП ОХЦОП ПРТЕДЕМЙФШ ГЧЕФ РЙЛУЕМС ОБ ОБЫЕК РПЧЕТИОПУФЙ. ьФП ПУХЭЕУФЧМСЕФУС ЖХОЛГЙЕ К surface_getpixel . б ЮФПВЩ ЙЪ ГЧЕФБ РПМХЮЙФШ ЮЙУМП - ЙУРПМШЪХЕФУС ЖХОЛГЙС color_get_value. лПЬЖЖЙГЙЕОФ k, ЛБЛ Й НЙОЙНБМШОБ С УЛПТПУФШ ПРТЕДЕМСЕФУС <ОБ ЗМБЪПЛ>. ч ТЕЪХМШФБФЕ РПМХЮБЕН:

speed = color_get_value(surface_getpixel(surface, X div 3, Y div 3))/500 + 0.2

оБ ЧУСЛЙК УМХЮБК, С ЧМПЦЙМ РТЙНЕТ У ЛБТФПК ЧЩУПФ, ЮФПВЩ ЧЩ НПЗМЙ ТБЪПВТБФШУС.

уЛБЮБФШ

рПУМЕ ФПЗП, ЛБЛ ЧЩЫЕХЛБЪБООПЕ ВЩМП ТЕБМЙЪПЧБОП, С ЪБРХУФЙМ ЙЗТХ Й РТПФЕУФЙТПЧБМ ЕЈ. чУЕ ТБВПФБЕФ, ОП ЧПФ ЙЗТБФШ ОЕ ЙОФЕТЕУОП, ФБЛ ЛБЛ НЙЛТПВПЧ ХВЙФШ ОЕ УПУФБЧМСЕФ ОЙЛБЛПЗП ФТХДБ. рТПУФЩН РПЧЩЫЕОЙЕН ЙИ ЛПМЙЮЕУФЧБ ОБ ХТПЧОЕ, ФПЦЕ ОЕ ДБЕФ ВПМШЫЙИ ТЕЪХМШФБФПЧ. рПЬФПНХ НЙЛТПВЩ ФЕРЕТШ РМПДСФУС У ЗЕПНЕФТЙЮЕУЛПК РТПЗТЕУУЙЕК: ЮЕТЕЪ ПРТЕДЕМЕООПЕ ЧТЕНС ЛБЦДЩК ДЕМЙФУС ОБ ДЧБ.

рПДЧЕДЕН ОЕВПМШЫПК ЙФПЗ. х ОБУ ЕУФШ ТЕМШЕЖОБС ТБОЛБ, Ч ЛПФПТПК РМБЧБАФ НЙЛТПВЩ Й МЕКЛПГЙФЩ. нЙЛТПВЩ ДЕМСФУС Й ОБРБДБАФ ОБ МЕКЛПГЙФЩ. фБЛ ЦЕ ЙНЕЕФУС ЧБФЛБ, УРЙТФ У ЛПФПТПК ЙУРБТСЕФУС Й ЪБ ФП ЧТЕНС, РПЛБ ПО ЕУФШ ОБ ОЕК, НЩ ДПМЦОЩ ЪБЭЙЭБФШ ЙННХОЙФЕФ ЮЕМПЧЕЛБ. оБ УБНПН ДЕМЕ ЙЗТБФШ ЕЭЕ ОЕМШЪС, ФБЛ ЛБЛ ОЕ ПВЯСЧМЕОЩ ХУМПЧЙС РПВЕДЩ Й РПТБЦЕОЙС. оП РТПУФП РПУНПФТЕФШ, ЛБЛ ПОЙ ЦЙЧХФ ФБН, НЩ НПЦЕН.

бЧФПТ: Stasundr