Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Книга по созданию трёхмерных игр / 13
.TXT - 503 -
ѓ ‹ Ђ ‚ Ђ 13 (Ђ¤ан ‹ Њ®в)
----------------------
€ ‘ Љ “ ‘ ‘ ’ ‚ … Ќ Ќ › ‰ € Ќ ’ … ‹ ‹ … Љ ’
—Ґ«®ўҐзҐбЄЁ© а §г¬ ЇаҐ¤бв ў«пҐв б®Ў®© ЎҐ§¤г, § Ї®«Ґго Їа®и«л¬,
бв®пйЁ¬ Ё Ўг¤гйЁ¬. Ћ ®б®§ Ґв бў®Ґ б®Ўб⢥®Ґ бгйҐбвў®ў ЁҐ Ё пў«пҐвбп
ў Ё§ўҐб⮬ бЁлб«Ґ ўбҐЈ® «Ёим гбва®©бвў®¬ б ў®§¬®¦®бвмо б ¬®®аЈ Ё§ жЁЁ Ё
бЇ®б®Ў®бвмо § ¤ ў вм ў®Їа®бл ® бў®Ґ¬ б ¬®®йг饨Ё. ‚лзЁб«ЁвҐ«м п вҐеЁЄ
室Ёвбп Ї®а®ЈҐ Ї®Ё¬ Ёп ¬Ґе Ё§¬®ў ¬лб«Ё, Ї ¬пвЁ Ё ᮧ Ёп. Ћ¤ Є®
¬, Є Є Їа®Ја ¬¬Ёбв ¬ Є®¬ЇмовҐале ЁЈа, б ¬®¬ ¤Ґ«Ґ Ґ 㦮 Ўлвм
б«ЁиЄ®¬ ЁбЄгиҐл¬Ё ў ᮧ¤ ЁЁ а §г¬® ¬лб«пйЁе бЁб⥬. ‘гйҐбвў ў иЁе
ЁЈа е ¤®«¦л в®«мЄ® Їа®Ё§ў®¤Ёвм ўЇҐз в«ҐЁҐ, зв® ®Ё бЇ®б®Ўл ¬лб«Ёвм
б ¬®бв®п⥫м®. ‚ нв®© з бвЁ ¬л Ё§Ў®а®§¤Ё¬ ⥠ў®¤л, Є®в®алҐ Ё ¤® бЁе Ї®а
®вбгвбвўгов Є ав е ¤ ¦Ґ б ¬ле ЇҐаҐ¤®ўле ўЁ¤Ґ®ЁЈа. Њл ®Ўбг¤Ё¬ ⥬л, ў
Є®Ёе ®Ў« бвм ®в Їа ЄвЁзҐбЄ®Ј® ¤® ⥮аҐвЁзҐбЄ®Ј® Ї®«®бвмо Ё§®вҐаЁз .
ЌҐб¬®вап нв®, Є®¬Ї«ҐЄб ¬лб«пйЁе ¬®¤Ґ«Ґ© ¬®¦Ґв Ўлвм Ї®«гзҐ ¤ ¦Ґ б
¬ЁЁ¬ «мл¬Ё § Ёп¬Ё. ќвЁ ¬®¤Ґ«Ё Ўг¤гв бЇ®б®Ўл б ¬®бв®пвҐ«м® ўлЇ®«пвм
в ЄЁҐ Їа®б⥩訥 § ¤ зЁ, Є Є ба ¦ҐЁҐ, Ї®ЁбЄ Ё гЄ«®ҐЁҐ.
Њл ®Ўбг¤Ё¬ б«Ґ¤гойЁҐ ⥬л:
- ЋЎ§®а в®Ј®, Є Є ¬лб«пв ўЁ¤Ґ®ЁЈал;
- Ђ«Ј®аЁв¬л ЏаҐб«Ґ¤®ў Ёп Ё “Є«®ҐЁп;
- 504 -
- Ў«®лҐ ¬лб«Ё;
- ‘«гз ©лҐ ЇҐаҐ¤ўЁ¦ҐЁп;
- Ђўв®¬ вл б Є®Ґзл¬Ё б®бв®пЁп¬Ё;
- ‚Ґа®пв®бвлҐ ўв®¬ вл;
- Џ ¬пвм Ё ®Ўг票Ґ;
- Ђ«Ј®аЁв¬л Џ®ЁбЄ ;
- ’Ґ®аЁп ЁЈа.
ЉЂЉ Њ›‘‹џ’ ‚€„…Ћ€ѓђ›: ЋЃ‡Ћђ
ЏаЁ¤Ґв в®в ¤Ґм, Є®Ј¤ Є®¬ЇмовҐа бв Ґв в ЄЁ¬ ¦Ґ бҐамҐ§л¬ б®ЎҐбҐ¤ЁЄ®¬,
Є Є Ё «гзиЁҐ 祫®ўҐзҐбЄЁҐ г¬л. Ћ¤ Є® ᥣ®¤пиЁҐ Є®¬ЇмовҐал (Ї® Єа ©Ґ©
¬ҐаҐ, ЏЉ) Ґ ®Ў« ¤ ов б«®¦®бвмо, Ґ®Ўе®¤Ё¬®© ¤«п ЁЁжЁ жЁЁ ¬лб«Ґ© Ё
вў®азҐбЄЁе Їа®жҐбб®ў.Ќ® б ¬®¬ ¤Ґ«Ґ б нв® Ё Ґ ¤®«¦® ў®«®ў вм! Њл ¦Ґ
¤Ґ« Ґ¬ ўЁ¤ҐЁЈал, Ґ ¤а®Ё¤®ў. ‚ ЁЈаҐ г б ЇаЁбгвбвўгов ҐЄ®в®алҐ
ᮧ¤ Ёп Ё ®ЎкҐЄвл. ‚бҐ, зв® ¬ 㦮 ᤥ« вм, нв® ЇаЁ¤ вм Ё¬ ўЁ¤Ё¬®бвм
бЇ®б®Ў®бвЁ а §г¬®Ј® ¬ли«ҐЁп. €Ја ойЁ© ¬®¦Ґв ®йгй вм бҐЎп Ї®¬ҐйҐл¬
Є®а®вЄ®Ґ ўаҐ¬п ў ҐЄ®Ґ Їа®бва бвў®, Ј¤Ґ ® ¤г¬ Ґв, зв® ўа ¦ҐбЄ п в Є
Є®а Ў«м ॠ«м ! „«п ®бгйҐбвў«ҐЁп нвЁе 楫Ґ© ¬л ¤®«¦л Їа® «Ё§Ёа®ў вм,
Є ЄЁ¬ а §г¬®¬ ¬л ¤®«¦л ¤Ґ«Ёвм иЁ ЁЈа®ўлҐ ®ЎкҐЄвл. ‘«®¦®бвм нв®Ј®
"а §г¬ " § ўЁбЁв ®в в®Ј®, Є Єго а §®ўЁ¤®бвм бгйҐбвў ¬л Є®бвагЁа㥬. Љ
ЇаЁ¬Ґаг, ᮧ¤ Ёп Ё§ Pac Man Ў®«миго з бвм бў®ҐЈ® ўаҐ¬ҐЁ ва впв
ЇаҐб«Ґ¤®ў ЁҐ Ё«Ё гЎҐЈ ЁҐ ®в ў б. Ѓг¤м ¬л ⥬Ё «о¤м¬Ё, зв® ЇЁб «Ё Pac
Man, ¬л Ё¬Ґ«Ё Ўл ў®§¬®¦®бвм § Ј®а вм Ј¤Ґ-ЁЎг¤м ѓ ў ©пе, ® г б ў
в Є®¬ б«гз Ґ 㦥 Ўл« Ўл «Ј®аЁв¬ЁзҐбЄЁ© Ёбва㬥⠤«п ®бгйҐбвў«ҐЁп нвЁе
ЇаҐб«Ґ¤®ў Ё© Ё гЎҐЈ Ё©.
‘ ¤агЈ®© бв®а®л, Ґб«Ё Ўл ¬л ᮧ¤ ў «Ё ўЁ¤Ґ®ЁЈал, Ї®¤®ЎлҐ "Љ®б¬ЁзҐбЄЁ¬
‡ еў взЁЄ ¬", ЇаЁ¤ ЁҐ ўЁ¤Ё¬®бвЁ ЁвҐ««ҐЄв ўап¤ «Ё Ї®вॡ®ў «® Ўл Ў®«ҐҐ
Ї ал ¤о¦Ё бва®Є ў Їа®Ја ¬¬Ґ. ЏбҐў¤®Є®¤ ўлЈ«п¤Ґ« Ўл ЇаЁ¬Ґа® в Є:
1. Џа®¤®«¦ вм ¤ўЁ¦ҐЁҐ ў ⮬ Їа ў«ҐЁЁ, ў Є®в®а®¬ ўл ¤ўЁЈ ҐвҐбм
(ўЇа ў® Ё«Ё ў«Ґў®);
2. Љ®Ј¤ ўл Ї®Ї ¤ҐвҐ Ја Ёжг нЄа , Ё§¬ҐЁвм Їа ў«ҐЁҐ Ё
¤ўЁЈ вмбп ў¤®«м ®бЁ ўлб®вл;
3. ЇҐаҐ©вЁ Є Ї.1.
ЌҐ иЁЎЄ® ®ЎиЁал© Ў®а "ЁвҐ««ҐЄвг «мле" дгЄжЁ© ¤«п ЁЈал, ЇаЁЎл«м ®в
Є®в®а®© § ўбҐ ўаҐ¬п ҐҐ бгйҐбвў®ў Ёп б®бв ўЁ« ®в 50 ¤® 100 ¬Ё««Ё®®ў
¤®«« а®ў. ’аҐе¬ҐалҐ ўЁ¤Ґ®ЁЈал ¬ ЁвҐаҐбл Ґ Ї®в®¬г, зв® ®Ё "㬥Ґ"
- 505 -
®Ўлзле "Ї«®бЄЁе" ЁЈа. ЋЎкҐ¬®бвм ¤ Ґв в®«мЄ® Ї®ўл襮Ґ ®йг饨Ґ
ॠ«м®бвЁ, «Ј®аЁв¬л, ¤Ґ«пойЁҐ ЇҐаб® ¦Ґ© а §г¬®¬, ў Ёе ⥠¦Ґ, зв® Ё
ў ¤ўг嬥але ЁЈа е. Љ ЇаЁ¬Ґаг, Terminator Rampage Ё¬ҐҐв ¤Ґ©б⢨⥫м®
Ґб«®¦го бЁб⥬㠨бЄгбб⢥®Ј® ЁвҐ««ҐЄв , ЇаЁ¬Ґа® в®Ј® ¦Ґ га®ўп
б«®¦®бвЁ, зв® Ё ў Pac Man. Ћ¤ Є®, ЇаЁ «ЁзЁЁ ваҐе¬Ґа®© Ја дЁЄЁ ў¬Ґб⥠б
Ё§®йаҐл¬ §ўгЄ®¬ бгйҐбвў ў Ґ© Є ¦гвбп ўЇ®«Ґ ®¤г襢«Ґл¬Ё.
€в Є, ЇаЁўҐ¤Ґ¬ Є ®ЎйҐ¬г § ¬Ґ ⥫о е а ЄвҐа Ў®«миЁбвў Є®¬ЇмовҐале ЁЈа:
ЁвҐ««ҐЄв ЇҐаб® ¦Ґ© 室Ёвбп ЇҐйҐа®¬ га®ўҐ, ® нв®в Ґ¤®бв в®Є
Є®¬ЇҐбЁагҐвбп § бзҐв Ја дЁЄЁ Ё §ўгЄ .
ђ §а Ў®взЁЄ®ў ўЁ¤Ґ®ЁЈа Ё¤Ґп ЁбЄгбб⢥®Ј® ЁвҐ««ҐЄв ЇаЁвпЈЁў Ґв б®ў Ё
б®ў Їа®в殮ЁЁ ¤«ЁвҐ«м®Ј® ўаҐ¬ҐЁ, Ї®в®¬г зв® ЁЈал, Є®в®алҐ ®Ё
ЇЁигв, ў Ў®«миЁб⢥ бў®Ґ¬ ¤®ў®«м® ЈаҐббЁўл. Ќ и § ¤ з ў нв®© з бвЁ
б®бв®Ёв ў ⮬, зв®Ўл Ї®пвм ¬Ґв®¤л, ЁбЇ®«м§гҐ¬лҐ ¤«п ¬®¤Ґ«Ёа®ў Ёп
ЁвҐ««ҐЄв , Ё Ј« ўлҐ ЄаЁвҐаЁЁ, ўгваЁ Є®в®але бгйҐбвўгов "¬лб«пйЁҐ"
«Ј®аЁв¬л. ‡ Ї®¬ЁвҐ, ЁЈал Ґ ¤г¬ ов. ЋЁ в®«мЄ® "¤Ґ« ов 㬮Ґ «Ёж®".
Џ®бҐ¬г Ў®«миго з бвм ўаҐ¬ҐЁ ¬л Ўг¤Ґ¬ Є®бвагЁа®ў вм ®б®ў®© а §г¬л© ўЁ¤
¤Ґп⥫м®бвЁ ўа®¤Ґ ЇаҐб«Ґ¤®ў Ёп Ё Ї ¤ҐЁп. Љ Є ўл ¤®Ј ¤лў ҐвҐбм, нв®
Ў®«ми®Ј® г¬ Ґ ¤®: ®Ў аг¦Ёвм Їа®вЁўЁЄ Ё гЁз⮦Ёвм ҐЈ®, Ё«Ё, б в®зЄЁ
§аҐЁп Є®¬ЇмовҐа®© Їа®Ја ¬¬л, ¤ўЁЈ вмбп Ї® Їа ў«ҐЁо Є ўа Јг, ў§пвм ҐЈ®
¬гиЄг Ё ®вЄалвм ®Ј®м Ё§ ўбҐе ўЁ¤®ў ®аг¦Ёп.
Ђ‹ѓЋђ€’Њ› Џђ…‘‹…„Ћ‚ЂЌ€џ € “Љ‹ЋЌ…Ќ€џ
€в Є, 祬. Ќ ЁЎ®«ҐҐ Їа®бвл¬Ё ЁЈа®ўл¬Ё «Ј®аЁв¬ ¬Ё ЁбЄгбб⢥®Ј®
ЁвҐ««ҐЄв пў«повбп в Є §лў Ґ¬л© Ђ«Ј®аЁв¬ ЏаҐб«Ґ¤®ў Ёп Ё ҐЈ®
Їа®вЁў®Ї®«®¦®бвм - Ђ«Ј®аЁв¬ “Є«®ҐЁп. ‚ ®б®ў®¬, ®Ё § бв ў«пов ЁЈа®ў®©
®ЎкҐЄв Ё«Ё ¤®Ј®пвм ЁЈа®Є , Ё«Ё гЎҐЈ вм ®в ҐЈ®. Љ®Ґз®, Є®дЁЈга жЁп
ЁЈа®ў®Ј® Їа®бва бвў в Є¦Ґ ¤®«¦ гзЁвлў вмбп, зв®Ўл ЇаҐб«Ґ¤®ў вҐ«м ¤ ¦Ґ Ё
Ґ Їлв «бп Їа®©вЁ бЄў®§м бвҐл. „ ў ©вҐ а бᬮваЁ¬ Їа®жҐбб, ¬®¤Ґ«ЁагойЁ©
Ї®Ј®о ҐЄ®в®а®Ј® бгйҐбвў § ЁЈа®Є®¬.
ЏаҐб«Ґ¤®ў ЁҐ
-------------------
‚®-ЇҐаўле, ¬ Ґ®Ўе®¤Ё¬® § вм а бЇ®«®¦ҐЁҐ ®Ў®Ёе ®ЎкҐЄв®ў. “ б Ґбвм нвЁ
¤ лҐ, в Є Є Є ¬л § Ґ¬ Є®®а¤Ё вл ЁЈа®Є Ё ЁЈа®ў®Ј® ®ЎкҐЄв , пў«по饣®бп
ўа Ј®¬.
‚®-ўв®але, ¬ Ґ®Ўе®¤Ё¬® бЄ®бвагЁа®ў вм «Ј®аЁв¬, Є®в®ал© Ўг¤Ґв гЇа ў«пвм
Ї®ўҐ¤ҐЁҐ¬ ўа Ј , ЇаҐб«Ґ¤го饣® ЁЈа®Є . Ђ«Ј®аЁв¬ 13.1 ¤Ґ« Ґв Ё¬Ґ® в®, зв®
¬л ®в ҐЈ® Ё е®вЁ¬:
- 506 -
Ђ«Ј®аЁв¬ 13.1. Ђ«Ј®аЁв¬ ЏаҐб«Ґ¤®ў Ёп.
_________________________________________________________________________
// ЏаҐ¤Ї®«®¦Ё¬, зв® px,py - Є®®а¤Ё вл ЁЈа®Є ,
// ex,ey - Є®®а¤Ё вл Їа®вЁўЁЄ
while (ЁЈа )
{
Їа®Ја ¬¬л© Є®¤
......
......
// ‚ з «Ґ а бб¬ ваЁў Ґ¬ ЇҐаҐ¬ҐйҐЁҐ Ї® Ј®аЁ§®в «Ё (®бм •)
if ex>px then ex=ex+1
if ex<px then ex=ex-1
// ’ҐЇҐам а бб¬ ваЁў Ґ¬ ўҐавЁЄ «мл© (Y) Є®¬Ї®Ґв
if ey>py then ey=ey+1
if ey<py then ey=ey-1
....
....
Їа®Ја ¬¬л© Є®¤
}
_________________________________________________________________________
- …б«Ё ўа Ј 室Ёвбп бЇа ў , в® Ґбвм ҐЈ® •-Є®®а¤Ё в Ў®«миҐ
ᮮ⢥вбвўго饩 Є®®¤Ё вл ЁЈа®Є , ЇаҐб«Ґ¤®ў ⥫м 㬥ми Ґв бў®о
б®Ўб⢥го Ї®§ЁжЁо Ї® ®бЁ • Ґ¤ЁЁжг Ё ⥬ б ¬л¬ ЇаЁЎ«Ё¦ Ґвбп Є
ЁЈа®Єг. …б«Ё ¦Ґ Їа®вЁўЁЄ 室Ёвбп «ҐўҐҐ ЁЈа®Є , ®, ®Ў®а®в,
㢥«ЁзЁў Ґв бў®о Ј®аЁ§®в «мго Є®®а¤Ё вг.
- ’ ¦Ґ б ¬ п «®ЈЁЄ ЇаЁ¬ҐЁ¬ Ё Є ЇҐаҐ¬ҐйҐЁо Ї® ўҐавЁЄ «Ё.
€бЇ®«м§гп нв®в «Ј®аЁв¬, Їа®вЁўЁЄ ЇаҐб«Ґ¤гҐв ЁЈа®Є Ї®звЁ бв®«м ¦Ґ
Ґг¬®«Ё¬®, Є Є Ё ’1000 Ё§ ’Ґа¬Ё в®а -2. Ћ Ґ ®бв ®ўЁвбп ¤® вҐе Ї®а, Ї®Є
Ґ Ї®©¬ Ґв ЁЈа®Є . Њл ¬®Ј«Ё Ўл ҐбЄ®«мЄ® ®Ў«ҐЈзЁвм ҐЈ® § ¤ зг Їг⥬
¤®Ў ў«ҐЁп ҐЄ®в®а®© ¤®Ї®«ЁвҐ«м®© «®ЈЁЄЁ, бЇ®б®Ўбвўго饩 ҐЈ® ¤ўЁ¦ҐЁо Є
Ї®§ЁжЁЁ ҐбҐЁп г¤ а . Ћ¤ Є®, ЇҐаҐ¤ ⥬, Є Є нв® ¤Ґ« вм, ¤ ў ©вҐ
Ї®б¬®ваЁ¬ Їа®Ја ¬¬г, ¬®¤Ґ«Ёагойго ЇаҐб«Ґ¤®ў ЁҐ. ‹ЁбвЁЈ Їа®Ја ¬¬л 13.1
аЁбгҐв 2 в®зЄЁ: ®¤г Ј®«гЎго (ўл), ¤агЈго Єа бго(Їа®вЁўЁЄ). —в® Ўл ўл
Ё ЇаҐ¤ЇаЁЁ¬ «Ё, Єа б п в®зЄ Їлв Ґвбп бвЁзм ў б. „«п ¤ўЁ¦ҐЁп (Ё«Ё, п
Ўл бЄ § «, ЎҐЈ !) ¦¬ЁвҐ Є« ўЁиг U - ЇҐаҐ¬ҐйҐЁҐ ўўҐае, N - ўЁ§, H -
ў«Ґў® Ё J - ўЇа ў®. „«п ўл室 Ё§ Їа®Ја ¬¬л ¦¬ЁвҐ Q.
‹ЁбвЁЈ 13.1. Џа®Ја ¬¬ ’Ґа¬Ё в®а (TERM.C).
_______________________________________________________________________
// I N C L U D E S////////////////////////////////////////////////////////////
#include <stdio.h>
#include <graph.h>
// G L O B A L S /////////////////////////////////////////////////////////////
unsigned int far *clock = (unsigned int far *)0x0000046C;// pointer to internal
// 18.2 clicks/sec
//////////////////////////////////////////////////////////////////////////////
Timer(int clicks)
{
// this function uses the internal time keeper timer i.e. the one that goes
// at 18.2 clicks/sec to to a time delay. You can find a 32 bit value of
// this timer at 0000:046Ch
unsigned int now;
// get current time
now = *clock;
// wait till time has gone past current time plus the amount we eanted to
// wait. Note each click is approx. 55 milliseconds.
while(abs(*clock - now) < clicks){}
} // end Timer
// M A I N ///////////////////////////////////////////////////////////////////
main()
{
int px=160,py=100, // starting position of player
ex=0,ey=0; // starting position of enemy
int done=0; // exit flag
_setvideomode(_MRES256COLOR);
printf(" The Terminator - Q to Quit");
// main game loop
while(!done)
{
// erase dots
_setcolor(0);
_setpixel(px,py);
_setpixel(ex,ey);
// move player
if (kbhit())
{
// which way is player moving
switch(getch())
{
case 'u': // up
{
py-=2;
} break;
case 'n': // down
{
py+=2;
} break;
case 'j': // right
{
px+=2;
} break;
case 'h': // left
{
px-=2;
} break;
case 'q':
{
done=1;
} break;
} // end switch
} // end if player hit a key
// move enemy
// begin brain
if (px>ex) ex++;
if (px<ex) ex--;
if (py>ey) ey++;
if (py<ey) ey--;
// end brain
// draw dots
_setcolor(9);
_setpixel(px,py);
_setcolor(12);
_setpixel(ex,ey);
// wait a bit
Timer(1);
} // end while
_setvideomode(_DEFAULTMODE);
} // end main
_______________________________________________________________________
‹ЁбвЁЈ 13.1 Ї®Є §лў Ґв Є Є Їа®бв® бЄ®бвагЁа®ў вм Ў®а ¤Ґ©бвўЁ©,
Є ¦гйЁебп ўЁ¤ а §г¬л¬Ё. Ќ® б ¬®¬ ¤Ґ«Ґ, ЇаҐ¦¤Ґ 祬 ¬л Ї®«гзЁ¬
Ї®«®жҐл© ЁбЄгббвўҐл© ЁвҐ««ҐЄв, нвЁ бва®ЄЁ Їа®Ја ¬¬л ¤®«¦л ЇаҐвҐаЇҐвм
¬ ббг гб®ўҐаиҐбвў®ў Ё©.
“Є«®ҐЁҐ
-----------------
Џ®Є ¬л ҐйҐ Ґ ги«Ё б«ЁиЄ®¬ ¤ «ҐЄ® ў иЁе а бб㦤ҐЁпе, Їа®¤®«¦Ё¬ иг
¤ЁбЄгббЁо а §Ј®ў®а®¬ ® пў«ҐЁЁ Їаאַ Їа®вЁў®Ї®«®¦®¬ ЇаҐб«Ґ¤®ў Ёо - ®Ў
гЄ«®ҐЁЁ. —в®Ўл бЄ®бвагЁа®ў вм ᮧ¤ ЁҐ, гЄ«®по饥бп ®в ЁЈа®Є , ¬
㦮 ᤥ« вм ў в®з®бвЁ Їа®вЁў®Ї®«®¦®Ґ ЇаҐ¤л¤гйЁ¬ ¤Ґ©бвўЁп¬. Ђ«Ј®аЁв¬
13.2 ў ®ЎйЁе зҐав е Ї®Є §лў Ґв нв®.
Ђ«Ј®аЁв¬ 13.2. Ђ«Ј®аЁв¬ “Є«®ҐЁп.
----------------------------------------------------------------------
// Їгбвм (px,py) - Ї®§ЁжЁп ЁЈа®Є Ё (ex,ey) - Ї®§ЁжЁп Їа®вЁўЁЄ
while (ЁЈа )
{
.....// Є®¤ Їа®Ја ¬¬л
// ‚ з «Ґ - Ј®аЁ§®в «м п б®бв ў«пой п ЇҐаҐ¬ҐйҐЁп
if ex>px then ex=ex-1
if ex<px then ex=ex+1
- 510 -
// ’ҐЇҐам - ўҐавЁЄ «м п б®бв ў«пой п
if ey>py then ey=ey-1
if ey<py then ey=ey+1
.... // Є®¤ Їа®Ја ¬¬л
}
________________________________________________________________________
‚ н⮬ ¬ҐбвҐ п ҐйҐ а § е®зг § ®бваЁвм ў иҐ ўЁ¬ ЁҐ ⮬, зв® ЁЈал Ґ
¤г¬ ов. ЏҐаб® ¦Ё ў Ёе в®«мЄ® б®ўҐаи ов Ґб«®¦лҐ нў®«ожЁЁ ў Їа®бва б⢥
Ё ўаҐ¬ҐЁ, ¤ ®ЇаҐ¤Ґ«Ґл¬ ®Ўа §®¬ ॠЈЁагов ®Єаг¦ ойго ®Ўбв ®ўЄг Ё
¤Ґ©бвўЁп ЁЈа®Є . (ЌҐЄ®в®алҐ гзҐлҐ бзЁв ов, зв® «о¤Ё - нв® Ґ зв® Ё®Ґ, Є Є
Ў®а ¤Ґ©бвўЁ© Ё ॠЄжЁ©.)
Ђ ⥯Ґам ЇҐаҐ©¤Ґ¬ Є б«Ґ¤го饩 ⥬Ґ Ё ®Ўбг¤Ё¬ в Є®Ґ Ї®пвЁҐ, Є Є "и Ў«®лҐ
¬лб«Ё".
Ў«®лҐ ¬лб«Ё
-----------------------
Ќ § ॠᮧ¤ Ёп ўЁ¤Ґ®ЁЈа Їа®Ја ¬¬Ёбвл бв «ЄЁў «Ёбм б бҐа쥧묨
Їа®Ў«Ґ¬ ¬Ё, Їа®Ўгп ҐбвЁ в®зЄЁ нЄа . ЋЁ а ¤®ў «Ёбм Ї® Ї®ў®¤г г¤ з®©
ђЁб.13,1. Џа®вЁўЁЄ, ¤Ґ©бвўгойЁ© Ї® и Ў«®г.
- 511 -
Ё¬Ёв жЁЁ в ЄвЁЄЁ Ў®п Ё ЇЁб Ёп Ў®а «Ј®аЁв¬®ў, гЇа ў«пойЁе бгйҐбвў ¬Ё
ў Ёе ¬ЁаҐ.
“ўл, ®Ё ¤г¬ «Ё, зв® ¬®Јгв Ё¬ЁвЁа®ў вм а §г¬®Ґ Ї®ўҐ¤ҐЁҐ б Ї®¬®ймо
и Ў«®®ў, в® Ґбвм ®ЇЁблў п а冷¬ жЁда ва ҐЄв®аЁЁ ЇҐаҐ¬ҐйҐЁп ᮧ¤ Ё©. Љ
ЇаЁ¬Ґаг, ў ЁЈаҐ Galaxian ¬ «ҐмЄЁҐ Є®б¬ЁзҐбЄЁҐ Є®а Ў«Ё ¤Ґ« ов ҐбЄ®«мЄ®
ЄагЈ®ў, бв५пов ў ў б ҐЄ®в®а®Ґ ўаҐ¬п, § ⥬ ў®§ўа й овбп ЇаҐ¦ҐҐ
¬Ґбв® ў бв о бў®Ёе б®а®¤ЁзҐ©. Џ®б¬®ваЁ¬ аЁб.13.1.
Љ®Ј¤ ®Ё ўлЇ®«пов нвЁ ¤ўЁ¦ҐЁп, в® ўбҐЈ® «Ёим б«Ґ¤гов Є®¬ ¤ ¬, § а ҐҐ
ЇЁб ле и Ў«®®ў.
Љ®бвагЁа®ў ЁҐ и Ў«®®ў - з१ўлз ©® «ҐЈЄ®Ґ § пвЁҐ Ё ®Ё и«Ё
ЁбЇ®«м§®ў ЁҐ ў® ¬®ЈЁе бжҐ аЁпе. Љ Є ЇаЁ¬Ґа, ЁбЇ®«м§гҐ¬ и Ў«®л Ё
б«гз ©лҐ зЁб« ¤«п ¬®¤Ґ«Ёа®ў Ёп "а §г¬ ", Є®в®ал© ¬®¦® ЁбЇ®«м§®ў вм,
ЇаЁ¬Ґа, ¤«п гЇа ў«ҐЁп ҐЎ®«миЁ¬ Є®б¬ЁзҐбЄЁ¬ Є®а Ў«Ґ¬. Ћ Їлв Ґвбп
гЄ«®Ёвмбп ®в ў б, Ё ў в® ¦Ґ ўаҐ¬п Їа®ЎгҐв ЇаЁжҐ«м® бв५пвм. ’®, зв®
¬®¦® ¤«п нв®Ј® ᤥ« вм, Ї®Є § ® ў Ђ«Ј®аЁв¬Ґ 13.3.
Ђ«Ј®аЁв¬ 13.3. Ў«®л б® б«гз ©л¬ ўлЎ®а®¬.
--------------------------------------------------------------------------
// ЏаҐ¤Ї®«®¦Ё¬, зв® pattern - нв® ¬ ббЁў, ᮤҐа¦ йЁ© Ў®а Є®¬ ¤
// ¤«п ॠ«Ё§ жЁЁ ¤ҐбпвЁ а §«Ёзле и Ў«®®ў Ї®ўҐ¤ҐЁп
while (Ё¤Ґв ЁЈа )
{
.... Є®¤ Їа®Ја ¬¬л
// Џа®ўҐа塞, § Є®зҐ «Ё ®Ўа Ў®вЄ ⥪г饣® и Ў«®
if (Ґб«Ё ®Ўа Ў®вЄ Є®¬ ¤ ⥪г饣® и Ў«® § Є®зҐ )
{
// ‚лЎЁа Ґ¬ ®ўл© и Ў«®
current_pattern = pattern[rand()%10];
Ї®§ЁжЁп Їа®вЁўЁЄ = бв а п Ї®§ЁжЁп +
б«Ґ¤гойЁ© н«Ґ¬Ґв ⥪г饣® и Ў«®
“ўҐ«ЁзЁ¬ Ґ¤ЁЁжг § 票Ґ Ё¤ҐЄб н«Ґ¬Ґв®ў и Ў«®
.... Є®¤ Їа®Ја ¬¬л
}
________________________________________________________________________
Ђ«Ј®аЁв¬ 13.3 Є ¦Ґвбп б«®¦ҐҐ ЇаҐ¤л¤гйЁе Ђ«Ј®аЁв¬®ў ЏаҐб«Ґ¤®ў Ёп Ё
“Є«®ҐЁп, ® б ¬®¬ ¤Ґ«Ґ нв® Ґ в Є. ‚ бгй®бвЁ:
- 512 -
- ‘«гз ©л¬ ®Ўа §®¬ ўлЎЁа Ґвбп ҐЄ®в®ал© и Ў«®;
- „ўЁ¦ҐЁҐ ᮧ¤ Ё© ў Є ¦¤®¬ Їа®е®¤Ґ жЁЄ« Ё§¬ҐпҐвбп ў ᮮ⢥вбвўЁЁ
б Їа ў«ҐЁҐ¬, гЄ § л¬ ў и Ў«®Ґ;
- ‡ ⥬ ¬л ЇҐаҐе®¤Ё¬ Є б«Ґ¤го饬г н«Ґ¬Ґвг и Ў«® . Љ ¦¤л© и Ў«®
¬®¦Ґв ўЄ«оз вм ў бҐЎп Їа®Ё§ў®«м®Ґ Є®«ЁзҐбвў® н«Ґ¬Ґв®ў. ЌҐЄ®в®алҐ Ё§
Ёе Ё¬Ґов 10 н«Ґ¬Ґв®ў, ЁлҐ - 1000.
‚ ¦® ®¤® - Є®Ј¤ "ᮧ¤ ЁҐ" ЁбзҐаЇлў Ґв Ў®а Є®¬ ¤, § ¤ ў Ґ¬л© ®¤Ё¬
и Ў«®®¬ - ®® ЇҐаҐе®¤Ёв Є ¤агЈ®¬г.
Ќ Є®Ґж, ¬л ¬®Ј«Ё Ўл бўп§ вм ўлЎ®а б«гз ©®Ј® ®¬Ґа и Ў«® б ¤Ґ©бвўЁп¬Ё
®б®ўҐ ҐЄ®© ¤агЈ®© «®ЈЁЄЁ - ЇаЁ¬Ґа, ®ЇЁблў Ґ¬®© Ђ«Ј®аЁв¬®¬ 13.1.
„®Ў ўЁў Є Ђ«Ј®аЁв¬г 13.3 Ї®б«Ґ¤Ё© и Ј, ¬л ЇаЁ¤ «Ё Ґ¬г ҐЄ®в®ал© бЇҐЄв,
Є®в®ал© ЇаЁ¤ « Ґ¬г Ў®«миго Є®¬Ї«ҐЄб®бвм. Џ®пўЁ«®бм Ї®¤®ЎЁҐ ¬л᫨⥫쮣®
Їа®жҐбб , б®бв®п饣® Ё§ ¤ўге бв ¤Ё©. ‘«гз ©®Ґ зЁб«® Ї®¤ Ґвбп ўе®¤
ᥫҐЄв®а и Ў«®®ў, Є®в®ал© § ⥬ ўлЎЁа Ґв ®ўл© и Ў«® ¤«п ЁЈал.
ЪДДДДДДДДДДДДДДДДДДДДДДї
і ѓҐҐа в®а і 1-© га®ўҐм
і б«гз ©ле зЁбҐ« і (¬л᫨⥫мл©)
АДДДДДДДДДДДВДДДДДДДДДДЩ
ЪДДДДДДДДБДДДДДДДДДї
і ‚лЎ®а и Ў«®®ў і
АДДДДДДДДДДДДДДДДДДЩ
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ЪДДДДДДДДДДДї ЪДДДДДДДДДДДї ЪДДДДДДДДДДДДї 2-© га®ўҐм
і і і і і і (дгЄжЁЁ ¬®в®аЁЄЁ)
і і і і і і
і і і і ... і і
і і і і і і
і і і і і і
АДДДДДДДДДДДЩ АДДДДДДДДДДДЩ АДДДДДДДДДДДДЩ
Ў«® 1 Ў«® 2 Ў«® N
ђЁб.13.2. €бЇ®«м§®ў ЁҐ б«гз ©ле зЁбҐ« ¤«п ўлЎ®а и Ў«® .
- 513 -
Џ® «®ЈЁЁ б Ґаў®© бЁб⥬®©, б«гз ©®Ґ зЁб«® ¬®¦® ЇаҐ¤бв ўЁвм Є Є
Ґаўл© Ё¬Їг«мб, ўлЎа л© и Ў«® ¤Ґ©бвўЁ© - Є Є ॠЄжЁо ҐЈ®.
Џ®б¬®ваЁвҐ аЁб. 13.2, зв®Ўл гўЁ¤Ґвм в®в Їа®жҐбб, ® Є®в®а®¬ п Ј®ў®ао.
„«п гб®ўҐаиҐбвў®ў Ёп в ЄвЁЄЁ ¬®¦® ¤®Ў ўЁвм Ё§¬ҐаҐЁҐ а ббв®пЁп ¤®
ЁЈа®Є : Ґб«Ё бгйҐбвў® 室Ёвбп § ЇаҐ¤Ґ« ¬Ё ҐЄ®в®а®Ј® а ¤Ёгб ,
ЁбЇ®«м§гҐвбп Ђ«Ј®аЁв¬ ЏаҐб«Ґ¤®ў Ёп, ®¤ Є®, Є®Ј¤ ®® ®Є §лў Ґвбп
¤®бв в®з® Ў«Ё§Є®, в® зЁ Ґв ЇҐаҐ¬Ґй вмбп Ї® и Ў«®л¬ ва ҐЄв®аЁп¬,
ўлЎЁа п Ёе б«гз ©л¬ ®Ўа §®¬. ќв Ё¤Ґп ЇаЁ¬ҐҐ ў Ђ«Ј®аЁв¬Ґ 13.4.
Ђ«Ј®аЁв¬ 13.4. ЏаҐб«Ґ¤®ў ЁҐ Ё ’ Ґж.
----------------------------------------------------------------------
while (Ё¤Ґв ЁЈа )
{
....Є®¤ Їа®Ја ¬¬л
if (ЁЈа®Є ўҐ ЄагЈ б а ¤Ёгᮬ 50 в®зҐЄ) then ЇаҐб«Ґ¤гҐ¬ ҐЈ®
else
ўлЎЁа Ґ¬ б«гз ©л© и Ў«® Ё ॠ«Ё§гҐ¬ ҐЈ®
.... Є®¤ Їа®Ја ¬¬л
}
________________________________________________________________________
„«п ¤Ґ¬®бва жЁЁ ЁбЇ®«м§®ў Ёп и Ў«®®ў п ЇҐаҐа Ў®в « Їа®Ја ¬¬г Ё§ ‹ЁбвЁЈ
13.1 Ё ЇаЁўҐ« ҐҐ ў ᮮ⢥вбвўЁҐ б Ђ«Ј®аЁв¬®¬ 13.4. Ќ®ў п Їа®Ја ¬¬ Ї®Є §
ў ‹ЁбвЁЈҐ 13.2. Љ®Ј¤ ўа Ј ЇаЁЎ«Ё¦ Ґвбп Є ЁЈа®Єг, ® ўлЎЁа Ґв ®¤Ё Ё§ ваҐе
и Ў«®®ў Ё ўлЇ®«пҐв ҐЈ® ¤® § ўҐа襨п. „ «ҐҐ, ў § ўЁбЁ¬®бвЁ ®в а ббв®пЁп
¤® ЁЈа®Є , Їа®вЁўЁЄ «ЁЎ® ЇаҐб«Ґ¤гҐв ЁЈа®Є , «ЁЎ® ўлЎЁа Ґв ¤агЈ®© и Ў«®.
‹ЁбвЁЈ 13.2. Њге (FLY.C).
__________________________________________________________________________
// I N C L U D E S////////////////////////////////////////////////////////////
#include <stdio.h>
#include <graph.h>
#include <math.h>
// G L O B A L S /////////////////////////////////////////////////////////////
unsigned int far *clock = (unsigned int far *)0x0000046C; // pointer to internal
// 18.2 clicks/sec
// the x and y components of the patterns that will be played, I just made
// them up
int patterns_x[3][20]= { 1,1,1,1,1,2,2,-1,-2,-3,-1,0,0,1,2,2,-2,-2,-1,0,
0,0,1,2,3,4,5,4,3,2,1,3,3,3,3,2,1,-2,-2,-1,
0,-1,-2,-3,-3,-2,-2,0,0,0,0,0,0,1,0,0,0,1,0,1 };
int patterns_y[3][20] = { 0,0,0,0,-1,-1,-1,-1,-1,0,0,0,0,0,2,2,2,2,2,2,
1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,0,0,0,0,
1,1,1,2,2,-1,-1,-1,-2,-2,-1,-1,0,0,0,1,1,1,1,1 };
//////////////////////////////////////////////////////////////////////////////
Timer(int clicks)
{
// this function uses the internal time keeper timer i.e. the one that goes
// at 18.2 clicks/sec to to a time delay. You can find a 32 bit value of
// this timer at 0000:046Ch
unsigned int now;
// get current time
now = *clock;
// wait till time has gone past current time plus the amount we eanted to
// wait. Note each click is approx. 55 milliseconds.
while(abs(*clock - now) < clicks){}
} // end Timer
// M A I N ///////////////////////////////////////////////////////////////////
main()
{
int px=160,py=100, // starting position of player
ex=0,ey=0; // starting position of enemy
int done=0, // exit flag
doing_pattern=0, // flags if a pattern is being executed
current_pattern, // curent pattern 0-2 that is being done by brain
pattern_element; // current element of pattern being executed
_setvideomode(_MRES256COLOR);
printf(" The Fly - Q to Quit");
// main game loop
while(!done)
{
// erase dots
_setcolor(0);
_setpixel(px,py);
_setpixel(ex,ey);
// move player
if (kbhit())
{
// which way is player moving
switch(getch())
{
case 'u': // up
{
py-=2;
} break;
case 'n': // down
{
py+=2;
} break;
case 'j': // right
{
px+=2;
} break;
case 'h': // left
{
px-=2;
} break;
case 'q':
{
done=1;
} break;
} // end switch
} // end if player hit a key
// move enemy
// begin brain
if (!doing_pattern)
{
if (px>ex) ex++;
if (px<ex) ex--;
if (py>ey) ey++;
if (py<ey) ey--;
// check if it's time to do a pattern i.e. is enemy within 50 pixels
// of player
if (sqrt(.1 + (px-ex)*(px-ex) + (py-ey)*(py-ey)) < 15)
{
// never ever use a SQRT in a real game!
// get a new random pattern
current_pattern = rand()%3;
// set brain into pattern state
doing_pattern = 1;
pattern_element = 0;
} // end if within a radius of 50
} // end if doing a pattern
else
{
// move the enemy using the next pattern element of the current pattern
ex+=patterns_x[current_pattern][pattern_element];
ey+=patterns_y[current_pattern][pattern_element];
// are we done doing pattern
if (++pattern_element==20)
{
pattern_element = 0;
doing_pattern = 0;
} // end if done doing pattern
} // end else do pattern
// end brain
// draw dots
_setcolor(9);
_setpixel(px,py);
_setcolor(12);
_setpixel(ex,ey);
// wait a bit
Timer(1);
} // end while
_setvideomode(_DEFAULTMODE);
} // end main
_________________________________________________________________________
Љ®Ј¤ ўл § ЇгбвЁвҐ Їа®Ја ¬¬г Ё§ ‹ЁбвЁЈ 13.2, в® Ї®©¬ҐвҐ, Ї®зҐ¬г п §ў «
ҐҐ "Њге ". ’®зЄ , ЎҐЈ ой п Ї® нЄа г Ё ў б ¬®¬ ¤Ґ«Ґ Ї®¬Ё Ґв ¬гег. Ћ
ЇаЁЎ«Ё¦ Ґвбп Є ў ¬ Ё ў¤агЈ зЁ Ґв Ўлбва® «Ґв вм ў®ЄагЈ. € в Є®Ґ Ї®ўҐ¤ҐЁҐ
ЇҐаб® ¦ ў®Ї«®йҐ® ўбҐЈ® ў ҐбЄ®«мЄЁе бва®Є е Їа®Ја ¬¬л б ЇаЁ¬ҐҐЁҐ¬
®ЇЁб ле ўлиҐ «Ј®аЁв¬®ў. (ѓ¬, в Є Є Є ўл ¤г¬ ҐвҐ, ¬®¦Ґв Ўлвм «о¤Ё - нв® Ё
ў б ¬®¬ ¤Ґ«Ґ Є®¬Ї«ҐЄб ¤Ґ©бвўЁ© Ё ॠЄжЁ©?)
’ҐЇҐам а бᬮваЁ¬ б«гз ©лҐ ЇҐаҐ¤ўЁ¦ҐЁп.
‘«гз ©лҐ ЇҐаҐ¤ўЁ¦ҐЁп
--------------------------------
—в® п Ї®Ё¬ о Ї®¤ б«гз ©л¬ ЇҐаҐ¤ўЁ¦ҐЁҐ¬? ќв® ўлЇ®«ҐЁҐ ЇҐаб® ¦Ґ¬
Є Є®Ј®-ЁЎг¤м б®ўҐа襮 ҐЇаҐ¤бЄ §гҐ¬®Ј® ¤Ґ©бвўЁп. ЌҐзв® Ї®¤®Ў®Ґ ¬л 㦥
ᤥ« «Ё ў Їа®Ја ¬¬Ґ Ё§ ‹ЁбвЁЈ 13.2. Ћ¤ Є®, ¬л ¬®¦Ґ¬ а биЁаЁвм нвг
Є®жҐЇжЁо Ґ в®«мЄ® ўлЎЁа п бЇ®б®Ў ॠЈЁа®ў Ёп, ® Ё ®ЇаҐ¤Ґ«пп, г¦ «Ё
ॠЄжЁп Є Є в Є®ў п. Џ®зҐ¬г Ўл ¬ Ґ ¤®Ў ўЁвм ҐйҐ ®¤Ё вЁЇ Ї®ўҐ¤ҐЁп 襩
"ЊгеҐ" - б«гз ©®Ґ ЇаҐ¤ўЁ¦ҐЁҐ.
‘«гз ©лҐ ЇҐаҐ¬ҐйҐЁп ЁбЇ®«м§говбп ў® ¬®ЈЁе ўЁ¤Ґ®ЁЈа е Є Є ®¤Ё Ё§
бЇ®б®Ў®ў ॠЈЁа®ў Ёп ўЁавг «м®Ј® ¬Ёа ¤Ґ©бвўЁп ЁЈа®Є . ’ Є®© ®Ўа §
¤Ґ©бвўЁ© ¬®¦® §ў вм "Ґпў®© «®ЈЁЄ®©". ЌҐпў п «®ЈЁЄ Ї®¬®Ј Ґв ЇаЁпвм
аҐиҐЁҐ ЇаЁ ®вбгвбвўЁЁ з бвЁ Ґ®Ўе®¤Ё¬®© Ёд®а¬ жЁЁ, Ё«Ё ў®®ЎйҐ Ёд®а¬ жЁЁ
Є Є в Є®ў®©.
‚ ўЁ¤Ґ®ЁЈа е ¬л ¬®¦Ґ¬ ЁбЇ®«м§®ў вм б«гз ©лҐ ЇҐаҐ¬ҐйҐЁп Ё Ґпўго «®ЈЁЄг
¤«п ўлЎ®а ва ҐЄв®аЁ© Ё«Ё ¤Ґ©бвўЁ© иЁе ᮧ¤ Ё©.
- 518 -
Љ ЇаЁ¬Ґаг, Є®Ј¤ ўл бв «ЄЁў ҐвҐбм б аҐиҐЁҐ¬ ҐЄ®в®а®Ј® ў®Їа®б , в Є®Ј® Є Є
®Ўе®¤ ЇаҐЇпвбвўЁп, ў®§ЁЄиҐЈ® ў 襬 ЇгвЁ, ўл Ї®Їлв ҐвҐбм Ё§ЎҐ¦ вм
ўбваҐзЁ б Ё¬, ¤ўЁЈ пбм Їа ў® Ё«Ё «Ґў®. …б«Ё ўбҐ ў аЁ вл а ўл ¬Ґ¦¤г
б®Ў®© Ё ®¤Ё Є®ў® ў®§¬®¦л, аҐиҐЁҐ, ᪮॥, б«гз ©® Ё, б«Ґ¤®ў ⥫м®,
пў«пҐвбп "Ґпўл¬ аҐиҐЁҐ¬". …б«Ё Ўл Єв®-ЁЎг¤м бЇа®бЁ« ў б, ЇаЁ¬Ґа,
Ї®зҐ¬г ўл аҐиЁ«Ё ®Ў®©вЁ бв®«Ў бЇа ў , Ґ б«Ґў , в® ўап¤ «Ё ўл б㬥«Ё Ўл
ўпв® ®ЎкпбЁвм ¬®вЁўл бў®ҐЈ® Ї®ўҐ¤ҐЁп. ‚ ¤агЈ®¬ б«гз Ґ ¬л ¬®¦Ґ¬
ЁбЇ®«м§®ў вм б«гз ©лҐ ЇҐаҐ¬ҐлҐ ¤«п ўлЎ®а Їа ў«ҐЁп ¤ўЁ¦ҐЁп 襩
¬ «ҐмЄ®© "ЊгеЁ". Ђ«Ј®аЁв¬ 13.5 ᮧ¤ Ґв ¬ «ҐмЄго в®зЄг, Є®в®а®© ⥯Ґам
Ї®« Ј Ґвбп «Ґв вм, ¤ўЁЈ пбм ў б«гз ©®¬ Їа ў«ҐЁЁ.
Ђ«Ј®аЁв¬ 13.5. ‘«гз ©®Ґ ЇҐаҐ¤ўЁ¦ҐЁҐ.
__________________________________________________________________________
while (Ё¤Ґв ЁЈа )
{
... Є®¤ Їа®Ја ¬¬л
if (ЇҐаҐ¬ҐйҐЁҐ в®зЄЁ Ї® ⥪г饩 ва ҐЄв®аЁЁ § Є®зҐ®) then
{
ўлЎ®а ®ў®© ва ҐЄв®аЁЁ, Ёл¬Ё б«®ў ¬Ё,
ўлЎЁа Ґ¬ ®ўл© д Єв®а ЇаҐ®Ўа §®ў Ёп Є®®а¤Ё в
}
¤ўЁЈ Ґ¬ в®зЄг ҐбЄ®«мЄ® а § Ї® ®ў®© ва ҐЄв®аЁЁ
... Є®¤ Їа®Ја ¬¬л
}
_________________________________________________________________________
Ђ«Ј®аЁв¬ 13.5 ¬®¤Ґ«ЁагҐв "ЈагЎл© а §г¬", Є®в®ал© ўлЎЁа Ґв Їа ў«ҐЁҐ
¤ «мҐ©иҐЈ® ¤ўЁ¦ҐЁп б«гз ©л¬ ®Ўа §®¬. Ќ ЇЁиҐ¬ Їа®Ја ¬¬г, Є®в®а п ᮧ¤ Ґв
®¤Ё®Є® «Ґвпйго в®зЄг ў Їа®бва б⢥ б Ї®¬®ймо нв®Ј® «Ј®аЁв¬ . Џ®б¬®ваЁ¬,
Є Є нв® а Ў®в Ґв, ЇаЁ¬ҐаҐ Їа®Ја ¬¬л Ё§ ‹ЁбвЁЈ 13.3.
‹ЁбвЁЈ 13.3. Ћ¤Ё®Є п ¬ге . (DFLY.C).
-------------------------------------------------------------------------
// I N C L U D E S////////////////////////////////////////////////////////////
#include <stdio.h>
#include <graph.h>
#include <math.h>
// G L O B A L S /////////////////////////////////////////////////////////////
unsigned int far *clock = (unsigned int far *)0x0000046C; // pointer to internal
// 18.2 clicks/sec
//////////////////////////////////////////////////////////////////////////////
Timer(int clicks)
{
// this function uses the internal time keeper timer i.e. the one that goes
// at 18.2 clicks/sec to to a time delay. You can find a 32 bit value of
// this timer at 0000:046Ch
unsigned int now;
// get current time
now = *clock;
// wait till time has gone past current time plus the amount we eanted to
// wait. Note each click is approx. 55 milliseconds.
while(abs(*clock - now) < clicks){}
} // end Timer
// M A I N ///////////////////////////////////////////////////////////////////
main()
{
int ex=160,ey=100; // starting position of fly
int curr_xv=1,curr_yv=0, // current translation factors
clicks=0; // times when the fly is done moving in the random
// direction
_setvideomode(_MRES256COLOR);
printf(" The Dumb Fly - Any key to Quit");
// main game loop
while(!kbhit())
{
// erase dots
_setcolor(0);
_setpixel(ex,ey);
// move the fly
// begin brain
// are we done with this direction
if (++clicks==20)
{
curr_xv = -5 + rand()%10; // -5 to +5
curr_yv = -5 + rand()%10; // -5 to +5
clicks=0;
} // end if time for a new direction
// move the fly
ex+=curr_xv;
ey+=curr_yv;
// make sure fly stays on paper
if (ex>319) ex=0;
if (ex<0) ex=319;
if (ey>199) ey=0;
if (ey<0) ey=199;
// end brain
// draw fly
_setcolor(12);
_setpixel(ex,ey);
// wait a bit
Timer(1);
} // end while
_setvideomode(_DEFAULTMODE);
} // end main
__________________________________________________________________________
„г¬ о, Ї®б«Ґ § ЇгбЄ Їа®Ја ¬¬л ўл б®Ј« бЁвҐбм б ⥬, зв® ¬л, Є®Ґж,
Ї®«гзЁ«Ё ўбҐ Ґ®Ўе®¤Ё¬®Ґ ¤«п ¬®¤Ґ«Ёа®ў Ёп «Ґв о饣® "а §г¬®Ј® бгйҐбвў ".
ЌҐбЄ®«мЄ® Їа®бвле Їа ўЁ«, и Ў«®л Ё б«гз ©лҐ зЁб« Ї®¬®Ј«Ё ¬ ᮧ¤ вм
¤®ў®«м® Їа ў¤®Ї®¤®Ўго Ё¬Ёв жЁо Ї®«Ґв ᥪ®¬®Ј®. ќв® Їа®бв® з㤥б®!
’ҐЇҐам бв «® ўаҐ¬п Ї®Ј®ў®аЁвм ® Є®Ґзле ўв®¬ в е.
- 521 -
ЉЋЌ…—Ќ›… Ђ‚’ЋЊЂ’›
Љ®ҐзлҐ ўв®¬ вл (ЉЂ) - Ў«Ё§ЄЁҐ ¤аг§мп б ¬ле а §®®Ўа §ле ¬Ґе Ё§¬®ў. ЋЁ
ж абвўгов ў ўЁав㠫쮬 Їа®бва б⢥ Є®¬ЇмовҐа®ў. ЉЂ ЁбЇ®«м§говбп ў
а §а Ў®вЄҐ ЇЇ а в®Ј® Ё Їа®Ја ¬¬®Ј® ®ЎҐбЇҐзҐЁп. Џ®бЄ®«мЄг ¬л Є®бг«Ёбм
нв®© ⥬л, бЄ ¦г, зв® ЉЂ - нв® Їа®Ја ¬¬® ¬®¤Ґ«Ёа㥬 п ¬ иЁ , Є®в®а п
¤ўЁ¦Ґвбп ®в б®бв®пЁп Є б®бв®пЁо, ®б®ўлў пбм ўе®¤ле ¤ ле. Ља®¬Ґ
в®Ј®, ЉЂ ®Ўлз® § Ї®¬Ё Ґв ўбҐ б®бв®пЁп, ў Є®в®але ® Ї®Ўлў «. Џ®б¬®ваЁвҐ
аЁб 13.3, Є®в®а®¬ Ё§®Ўа ¦Ґ ¤Ё Ја ¬¬ Їа®б⥩襣® ЉЂ. (—в® Ё¬Ґ®
нв®в ЉЂ ¤Ґ« Ґв - Ґ Ё¬ҐҐв ЁЄ Є®Ј® § 票п).
Љ Є ўЁ¤ЁвҐ, ЉЂ Ё¬ҐҐв Ў®а б®бв®пЁ©, ЇаҐ¤бв ў«Ґле Єаг¦Є ¬Ё Ё
®ЎкҐ¤ЁҐле ¤гЈ ¬Ё ЇҐаҐе®¤®ў ®в б®бв®пЁп Є б®бв®пЁо. ќвЁ ¤гЈЁ Ї®Є §лў ов
Їа ўЁ« , Ї® Є®в®ал¬ Їа®Ёб室пв ЇҐаҐе®¤л Ё§ ®¤®Ј® б®бв®пЁп ў ¤агЈ®Ґ.
ЉЂ ¬®Јгв Ўлвм ЁбЇ®«м§®ў л ў ўЁ¤Ґ®ЁЈа е Є Є ®¤Ё Ё§ ¬Ґв®¤®ў
ўлб®Є®га®ўҐў®Ј® гЇа ў«ҐЁп «®ЈЁЄ®©, б Ї®¬®ймо Є®в®а®Ј® ЇҐаҐ¤ овбп Є®¬ ¤л
"Ё§Є®га®ўҐў®© " «®ЈЁЄҐ.
’ Є ¦Ґ, Є Є и ¬®§Ј Ё¬ҐҐвЄ®аг, ЇҐаҐ¤ ойго иЁ ¦Ґ« Ёп ў Ў®«ҐҐ
Ё§Є®га®ўҐўлҐ ¬®в®алҐ ¤®«Ё ¬®§Ј ,ЉЂ ¬®¦Ґв Ўлвм ЁбЇ®«м§®ў ¤«п ЁЁжЁ жЁЁ,
гЇа ў«ҐЁп Ё ЇҐаҐеў в Ё§Є®га®ўҐўле ¤Ґ©бвўЁ©, ўлЇ®«пҐ¬ле Ё¬Ёв в®а®¬
¬®§Ј .
Љ Є ЇаЁ¬Ґа ¬л ¬®Ј«Ё Ўл ЁбЇ®«м§®ў вм ўбҐ, зв® ¬ 㦥 Ё§ўҐбв® ®
ЇаҐб«Ґ¤®ў ЁЁ, гЄ«®ҐЁЁ, и Ў«® е Ё б«гз ©ле ЇҐаҐ¤ўЁ¦ҐЁпе ¤«п
Є®бвагЁа®ў Ёп ЉЂ,
ђЁб.13.3. ЋЎй п б奬 ЉЂ.
- 522 -
ђЁб.13.4. ЂЎбва Євл© ўЁ¤ ЉЂ б в®зЄЁ §аҐЁп ¬®¤Ґ«Ё ЁЈал.
бЇ®б®Ў®Ј® ЇҐаҐе®¤Ёвм ®в б®бв®пЁп Є б®бв®пЁо, Є ¦¤®Ґ Ё§ Є®в®але ўлЇ®«пҐв
®¤г Ё§ ЇҐаҐзЁб«Ґле дгЄжЁ©.
’ҐЇҐам г б Ґбвм Ў®а аҐиҐЁ©, зв®Ўл ®вўҐвЁвм ў®Їа®бл:
- Љ Є п ЇаЁзЁ § бв ўЁв ЉЂ Ё§¬ҐЁвм бў®Ґ б®бв®пЁҐ?
- Љ Є § бв ўЁвм ЉЂ ўлЎа вм б«Ґ¤го饥 б®бв®пЁҐ?
ќв® е®а®иЁҐ ў®Їа®бл - Ї®б¬®ваЁ¬, Є Є ўлЈ«п¤пв ўЁ¤Ґ®ЁЈал Ё§гваЁ. ‚§Ј«пЁвҐ
аЁб.13.4. Ќ Ґ¬ Ї®Є § ® Ўбва Єв®Ґ ЇаҐ¤бв ў«ҐЁҐ ҐЄ®в®а®Ј® ЉЂ,
Їа ў¤ , Ї®Є ҐйҐ ЎҐ§ «®ЈЁЄЁ ᬥл б®бв®пЁ©.
Љ®Ґзл© ўв®¬ в, гЇа ў«пҐ¬л© ®Єаг¦ о饩 б।®©
------------------------------------------------------------
’ҐЇҐам бвгЇ Ґв ЇаЁпв п з бвм. Њл ¬®¦Ґ¬ ᮧ¤ вм ЉЂ, ў Є®в®а®¬ б®бв®пЁп
ЇҐаҐе®¤ ЇаҐ¤бв ў«Ґл а冷¬ ЇҐаҐ¬Ґле. „агЈЁ¬Ё б«®ў ¬Ё, ¬л гЇа ў«пҐ¬
Є®Ґзл¬ ўв®¬ ⮬ б Ї®¬®ймо б ¬®© ЁЈа®ў®© б।л, ў Є®в®а®© ® 室Ёвбп,
в Є ¦Ґ, Є Є и б®ЎбвўҐл© ¬®§Ј ॠЈЁагҐв ®Єаг¦ ойго ®Ўбв ®ўЄг.
- 523 -
Ќ 祬 ᮧ¤ ў вм ЉЂ б в®Ј®, зв® ® Ўг¤Ґв б«гз ©л¬ ®Ўа §®¬ ўлЎЁа вм ®¤® Ё§
Ё¦ҐЇҐаҐзЁб«Ґле б®бв®пЁ©:
- ЇаҐб«Ґ¤®ў ЁҐ;
- гЄ«®ҐЁҐ;
- б«гз ©®Ґ;
- и Ў«®.
Ќ® ў бв®п饩 ЁЈаҐ ¤«п гЇа ў«ҐЁп б®бв®пЁҐ¬ ЉЂ ў¬Ґбв® б«гз ©ле зЁбҐ«
Ўл«® Ўл «гзиҐ ЇаЁў«Ґзм б ¬г ЁЈа®ўго бЁвг жЁо. ЌЁ¦Ґ ЇаЁўҐ¤Ґ ЇаЁ¬Ґа ЉЂ,
¤Ґ©вўго饣® Ї® ®Ўбв®п⥫мбвў ¬:
- …б«Ё ЁЈа®Є Ў«Ё§Є®, ЉЂ ЇҐаҐЄ«оз Ґвбп ў б®бв®пЁҐ Ў«®;
- …б«Ё ЁЈа®Є ¤ «ҐЄ®, ¬®¦® § бв ўЁвм ЏЉ ®е®вЁвмбп § Ё¬, ЁбЇ®«м§гп
б®бв®пЁҐ ЏаҐб«Ґ¤®ў ЁҐ;
- …б«Ё ЁЈа®Є ®ЎагиЁ« иҐ ¬ «ҐмЄ®Ґ ᮧ¤ ЁҐ иЄў «мл© ®Ј®м, ЉЂ
¬®¬Ґв «м® ЇҐаҐе®¤Ёв ў б®бв®пЁҐ “Є«®ҐЁҐ;
- Ќ Є®Ґж, ЇаЁ «оЎ®© Ё®© бЁвг жЁЁ ЉЂ ®ва Ў влў Ґв б®бв®пЁҐ ‘«гз ©®Ґ.
ђЁб.13.5 ¤Ґ¬®бваЁагҐв Ї®¤®Ў®Ґ Ї®ўҐ¤ҐЁҐ Є®Ґз®Ј® ўв®¬ в .
ђЁб.13.5. ЉЂ, гЇа ў«пҐ¬л© ®Єаг¦ о饩 б।®©.
- 524 -
ЏҐаҐ©¤Ґ¬ Є Їа®Ја ¬¬®© ॠ«Ё§ жЁЁ ®ЇЁб ®Ј® ЉЂ. Њл Ґ бв Ґ¬ ᮧ¤ ў вм
б«®¦®Ґ ЁЈа®ў®Ґ Їа®бва бвў®. „«п ¤Ґ¬®бва жЁЁ ¬ ¤®бв в®з® Ё¬Ґвм зЁбвл©
нЄа б Ї а®© в®зҐЄ, Ё§®Ўа ¦ ойЁе ЁЈа®Є Ё Їа®вЁўЁЄ . —в®Ўл Ї®пвм бгвм,
нв®Ј® ўЇ®«Ґ ¤®бв в®з®. Џа®Ја ¬¬ Ё§ ‹ЁбвЁЈ 13.4 ¬®¤Ґ«ЁагҐв Ї®«Ґв
¤Ґ©бвўЁвҐ«м® §®©«Ёў®© ¬геЁ, Є®в®а п ЎгЄў «м® § Ґ¤ Ґв ЁЈа®Є .
‹ЁбвЁЈ 13.4. “¬ п "Њге " (BFLY.C).
_______________________________________________________________________
// I N C L U D E S////////////////////////////////////////////////////////////
#include <stdio.h>
#include <graph.h>
#include <math.h>
// D E F I N E S ////////////////////////////////////////////////////////////
#define STATE_CHASE 1
#define STATE_RANDOM 2
#define STATE_EVADE 3
#define STATE_PATTERN 4
// G L O B A L S /////////////////////////////////////////////////////////////
unsigned int far *clock = (unsigned int far *)0x0000046C; // pointer to internal
// 18.2 clicks/sec
// the x and y components of the patterns that will be played, I just made
// them up
int patterns_x[3][20]= { 1,1,1,1,1,2,2,-1,-2,-3,-1,0,0,1,2,2,-2,-2,-1,0,
0,0,1,2,3,4,5,4,3,2,1,3,3,3,3,2,1,-2,-2,-1,
0,-1,-2,-3,-3,-2,-2,0,0,0,0,0,0,1,0,0,0,1,0,1 };
int patterns_y[3][20] = { 0,0,0,0,-1,-1,-1,-1,-1,0,0,0,0,0,2,2,2,2,2,2,
1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,0,0,0,0,
1,1,1,2,2,-1,-1,-1,-2,-2,-1,-1,0,0,0,1,1,1,1,1 };
//////////////////////////////////////////////////////////////////////////////
Timer(int clicks)
{
// this function uses the internal time keeper timer i.e. the one that goes
// at 18.2 clicks/sec to to a time delay. You can find a 32 bit value of
// this timer at 0000:046Ch
unsigned int now;
// get current time
now = *clock;
// wait till time has gone past current time plus the amount we eanted to
// wait. Note each click is approx. 55 milliseconds.
while(abs(*clock - now) < clicks){}
} // end Timer
// M A I N ///////////////////////////////////////////////////////////////////
main()
{
int px=160,py=100, // starting position of player
ex=0,ey=0, // starting position of enemy
curr_xv,curr_yv; // velocity of fly during random walk
int done=0, // exit flag
doing_pattern=0, // flags if a pattern is being executed
current_pattern, // curent pattern 0-2 that is being done by brain
pattern_element, // current element of pattern being executed
select_state=0, // flags if a state transition needs to take place
clicks=20, // used to time the number of cycles a state stays active
fly_state = STATE_CHASE; // start fly off in chase state
float distance; // used to hold distance between fly and player
_setvideomode(_MRES256COLOR);
printf(" Brainy Fly - Q to Quit");
// main game loop
while(!done)
{
// erase dots
_setcolor(0);
_setpixel(px,py);
_setpixel(ex,ey);
// move player
if (kbhit())
{
// which way is player moving
switch(getch())
{
case 'u': // up
{
py-=2;
} break;
case 'n': // down
{
py+=2;
} break;
case 'j': // right
{
px+=2;
} break;
case 'h': // left
{
px-=2;
} break;
case 'q':
{
done=1;
} break;
} // end switch
} // end if player hit a key
// move enemy
// begin brain
// what state is brain in let FSM sort it out
switch(fly_state)
{
case STATE_CHASE:
{
_settextposition(24,2);
printf("current state:chase ");
// make the fly chase the player
if (px>ex) ex++;
if (px<ex) ex--;
if (py>ey) ey++;
if (py<ey) ey--;
// time to go to another state
if (--clicks==0)
select_state=1;
} break;
case STATE_RANDOM:
{
_settextposition(24,2);
printf("current state:random ");
// move fly in random direction
ex+=curr_xv;
ey+=curr_yv;
// time to go to another state
if (--clicks==0)
select_state=1;
} break;
case STATE_EVADE:
{
_settextposition(24,2);
printf("current state:evade ");
// make fly run from player
if (px>ex) ex--;
if (px<ex) ex++;
if (py>ey) ey--;
if (py<ey) ey++;
// time to go to another state
if (--clicks==0)
select_state=1;
} break;
case STATE_PATTERN:
{
_settextposition(24,2);
printf("current state:pattern ");
// move the enemy using the next pattern element of the current pattern
ex+=patterns_x[current_pattern][pattern_element];
ey+=patterns_y[current_pattern][pattern_element];
// are we done doing pattern
if (++pattern_element==20)
{
pattern_element = 0;
select_state=1;
} // end if done doing pattern
} break;
default:break;
} // end switch fly state
// does brain want another state ?
if (select_state==1)
{
// select a state based on the envoronment and on fuzzy logic
// uses distance from player to selct a new state
distance = sqrt(.5 + fabs((px-ex)*(px-ex) + (py-ey)*(py-ey)));
if (distance > 5 && distance <15 && rand()%2==1)
{
// get a new random pattern
current_pattern = rand()%3;
// set brain into pattern state
fly_state = STATE_PATTERN;
pattern_element = 0;
} // end if close to player
else
if (distance < 10) // too close let's run!
{
clicks=20;
fly_state = STATE_EVADE;
} // else if too close
else
if (distance > 25 && distance <100 && rand()%3==1) // let's chase player
{
clicks=15;
fly_state = STATE_CHASE;
} // end if chase player
else
if (distance > 30 && rand()%2==1)
{
clicks=10;
fly_state = STATE_RANDOM;
curr_xv = -5 + rand()%10; // -5 to +5
curr_yv = -5 + rand()%10; // -5 to +5
} // end if random
else
{
clicks=5;
fly_state = STATE_RANDOM;
curr_xv = -5 + rand()%10; // -5 to +5
curr_yv = -5 + rand()%10; // -5 to +5
} // end else
// reset need another state flag
select_state=0;
} // end if we need to change to another state
// make sure fly stays on paper
if (ex>319) ex=0;
if (ex<0) ex=319;
if (ey>199) ey=0;
if (ey<0) ey=199;
// end brain
// draw dots
_setcolor(9);
_setpixel(px,py);
_setcolor(12);
_setpixel(ex,ey);
// wait a bit
Timer(1);
} // end while
_setvideomode(_DEFAULTMODE);
} // end main
_________________________________________________________________________
‡ ЇгбвЁў Їа®Ја ¬¬г, ўл ўҐапЄ ®Ўа вЁвҐ ўЁ¬ ЁҐ Є ¦гйгобп б«®¦®бвм
Ї®ўҐ¤ҐЁп "ЊгеЁ". Ђ ўҐ¤м ¤«п Ї®«г票п в Є®Ј® १г«мв в ЁбЇ®«м§®ў
ўҐбм¬ Їа®бв п б奬 ! ‚®§¬®¦®, Ё ўл § ¬ҐвЁвҐ в®, зв® гўЁ¤Ґ« п - згвм «Ё Ґ
祫®ўҐзҐбЄго бЇ®б®Ў®бвм ¬лб«Ёвм.
“Їа ў«ҐЁҐ ЇаЁ®аЁвҐвл¬ б®бв®пЁҐ¬
------------------------------------------
Њ®¦® ҐйҐ гб®ўҐаиҐбвў®ў вм и ЉЂ, Ґб«Ё ўўҐбвЁ гЇа ў«ҐЁҐ ᬥ®© б®бв®пЁ©
б Ї®¬®ймо ҐЄ®в®але ЇҐаҐ¬Ґле Ё дгЄжЁ©. Ќ Їа ЄвЁЄҐ нв® ®§ з Ґв
ў®§¬®¦®бвм Ё§¬ҐҐЁп ⥪г饣® ०Ё¬ , Ґ ¤®¦Ё¤ пбм Ї®«®Ј® § ўҐа襨п
Їа®Ја ¬¬л, ®вўҐз о饩 § ҐЈ® ўлЇ®«ҐЁҐ.
‚ Ё¬Ёв в®аҐ ¤ўЁ¦ҐЁп "ЊгеЁ" Є ¦¤®Ґ б®бв®пЁҐ ўлЇ®«п«®бм ¤® Ї®«®Ј®
§ ўҐа襨п. Ќ® Ґб«Ё ўЄ«озЁвм ў Їа®Ја ¬¬г Їа®ўҐаЄг ўлЇ®«ҐЁп Ё«Ё
ҐўлЇ®«ҐЁп ҐЄ®в®але гб«®ўЁ©, нв® Ї®§ў®«Ё«® Ўл ЉЂ "ўлЇалЈгвм" Ё§
б®бв®пЁп, Ґ ¤®¦Ё¤ пбм ®Є®з Ёп ҐЈ® "®ва Ў®вЄЁ".
ќвЁ¬ § Є зЁў Ґвбп и а §Ј®ў®а ® Є®Ґзле ўв®¬ в е, Є®в®алҐ ¬®Јгв Ўлвм
ЁбЇ®«м§®ў л ў иЁе ЁЈа е ¤«п ¬®¤Ґ«Ёа®ў Ёп Ї®ўҐ¤ҐЁп бгйҐбвў Ё ЇаЁ¤ Ёп
Ё¬ ўЁ¤Ё¬®бвЁ «ЁзЁп ЁвҐ««ҐЄв . ’ҐЇҐам Є Ё¬Ґо饩бп г б бЁб⥬Ґ
ўлб®Є®га®ўҐў®Ј® гЇа ў«ҐЁп Ґ Ї®¬Ґи Ґв ¤®Ў ўЁвм Ё§Є®га®ўҐў®Ґ
дгЄжЁ®Ёа®ў ЁҐ.
‚Ґа®пв®бвлҐ ўв®¬ вл
-------------------------------
Ќ ўҐа®Ґ, ўл 㦥 Ї®п«Ё, Є Є ўҐа®пв®бвм Ё б«гз ©лҐ зЁб« ¬®Јгв Ўлвм
ЁбЇ®«м§®ў л ¤«п ўлЎ®а Їа ў«ҐЁ© Ё б®бв®пЁ©. Њл гзЁ«Ёбм ЁбЇ®«м§®ў вм
б«гз ©лҐ Ї®«Ґ¤®ў ⥫м®бвЁ ¤«п Є®бвагЁа®ў Ёп "е а ЄвҐа " ЇҐаб® ¦Ґ©. џ
Ё¬Ґо ў ўЁ¤г, зв® "Њге " ў 襬 ЇаҐ¤л¤г饬 ЇаЁ¬ҐаҐ ¬®Ј« б ¬®бв®п⥫м®
ўлЎЁа вм а §«ЁзлҐ б®бв®пЁп, ®б®ўлў пбм ®Єаг¦ о饩 ®Ўбв ®ўЄҐ. …б«Ё
ҐбЄ®«мЄ® Ё§¬ҐЁвм ¬Ґв®¤ ўлЎ®а б®бв®пЁ©, ®б®ў л©
- 531 -
ЈҐҐа жЁЁ б«гз ©ле зЁбҐ« (в® Ґбвм, ᮧ¤ ў вм гб«®ўЁп, ЇаЁ Є®в®але ўе®¤ ў
®ЇаҐ¤Ґ«Ґ®Ґ б®бв®пЁҐ бв « Ўл «ҐЈзҐ Ё«Ё в殮«ҐҐ), в®, ў Є®Ґз®¬ бзҐвҐ,
¬ г¤ «®бм Ўл Ё§¬ҐЁвм "е а ЄвҐа" "ЊгеЁ".
‘Є ¦Ґ¬, ¬ § е®вҐ«®бм Ё¬Ґвм ў ЁЈаҐ ¤ўҐ "¬геЁ". …б«Ё ®¤г Ё вг ¦Ґ Їа®Ја ¬¬г
ЁбЇ®«м§®ў вм ¤«п ᮧ¤ Ёп ва ҐЄв®аЁЁ ¤ўЁ¦ҐЁп Є ¦¤®© "¬геЁ", ®Ё Ўл
¤Ґ©бвў®ў «Ё ®¤Ё Є®ў®. ‚® ¬®ЈЁе б«гз пе Ў®«м襣® Ё Ґ вॡгҐвбп. Ћ¤ Є®
Ј®а §¤® ЁвҐаҐбҐ© Ё¬Ґвм ¬®Ј® "¬ге" б ҐЎ®«миЁ¬Ё а §«ЁзЁп¬Ё ў Ї®ўҐ¤ҐЁЁ.
ќв® ¬®¦® Ўл«® Ўл ॠ«Ё§®ў вм Ё§¬ҐҐЁҐ¬ ¤Ё Ї §® б«гз ©ле зЁбҐ« ў® ўбҐе
бва®Є е Їа®Ја ¬¬л, Ј¤Ґ ўлЎЁа овбп б®бв®пЁп "¬геЁ". Ќ® в Є®© Ї®¤е®¤ Ўг¤Ґв
®зҐм ЈагЎл¬. Њл Ї®©¤Ґ¬ ¤агЈЁ¬ Їг⥬ - Їг⥬ ᮧ¤ Ёп ®ЎйҐЈ® ¬Ґв®¤
гЇа ў«ҐЁп е а ЄвҐа®¬ ЇҐаб® ¦Ґ©, ®б®ў ®Ј® ўҐа®пв®бвЁ.
‚ ЁбЄгбб⢥®¬ ЁвҐ««ҐЄвҐ "Ё¤ЁўЁ¤г «м®бвм" ®§ з Ґв ў®§¬®¦®бвм бгйҐбвў
Ї®-а §®¬г ўлЇ®«пвм ®ЇаҐ¤Ґ«ҐлҐ ¤Ґ©бвўЁп ЇаЁ ®¤Ёе Ё вҐе ¦Ґ
®Ўбв®п⥫мбвў е. Ќ ЇаЁ¬Ґа, г ¬Ґп Ґбвм ҐбЄ®«мЄ® ¤®бв в®з®
¤а㧥©, Є®в®алҐ § е®вҐ«Ё Ўл б«ҐЈЄ Їа®гзЁвм Ї«гв , Ї®Їл⠢襣®бп Ёе ¤гвм.
Ќ® г ¬Ґп в Є¦Ґ Ґбвм ¤аг§мп, Є®в®алҐ Ў®«ҐҐ бЇ®Є®©л Ё ЇаҐ¤Ї®зЁв ов б з «
¤г¬ вм, Ї®в®¬ ¤Ґ©бвў®ў вм. ‘Є®аҐҐ ўбҐЈ®, ¬®иҐЁЄг г¤ «®бм Ўл Є Є-в® б
Ё¬Ё ¤®Ј®ў®аЁвмбп. ’®, зв® ¬л ўЁ¤Ё¬ ¤ ®¬ ЇаЁ¬ҐаҐ, Ё пў«пҐвбп
"Ё¤ЁўЁ¤г «м®бвмо".
Љ ЄЁ¬ Ё¬Ґ® бЇ®б®Ў®¬ нв® Ўг¤Ґв ¤®бвЁЈгв®, Ґ ЇаЁжЁЇЁ «м®, ў ¦Ґ
Є®Ґзл© аҐ§г«мв в.
‚ ўЁ¤Ґ®ЁЈа е ¬л ¬®Ј«Ё Ўл Ё¬Ґвм ҐбЄ®«мЄ® Їа®вЁўЁЄ®ў, Є®в®алҐ Ї®бв®п®
ЇаҐб«Ґ¤гов б, Ї®Є ¤агЈЁҐ ў нв® ўаҐ¬п ҐЇ®¤ўЁ¦л Ё бв५пов. ’аҐвмЁ
вагб«Ёўл Ё ЇаҐ¤Ї®зЁв ов гЎҐЈ вм, Ґ ба ¦ вмбп. Ђ «Ё§Ёагп бЁвг жЁо, ¬л
ўЁ¤Ё¬, зв® Ё¬ҐҐвбп ўбҐ в®в ¦Ґ Ў®а б®бв®пЁ©, ® ўҐа®пв®бвЁ ЇҐаҐе®¤ ў
Ёе а §«Ёзл ¤«п Є ¦¤®Ј® б®бв®пЁп. „«п ¬®¤Ґ«Ёа®ў Ёп нв®Ј® Їа®жҐбб ¬л
¬®Ј«Ё Ўл б®б« вмбп "в Ў«Ёжг ўҐа®пв®б⥩" ў в®© з бвЁ Їа®Ја ¬¬л, Є®в®а п
ўлЎЁа Ґв ®ў®Ґ б®бв®пЁҐ. ќв в Ў«Ёж ¬®Ј« Ўл ᮤҐа¦ вм а §«ЁзлҐ б⥯ҐЁ
ўҐа®пв®бвЁ ЇҐаҐе®¤®ў бгйҐбвў ў в® Ё«Ё Ё®Ґ б®бв®пЁҐ. Љ ЇаЁ¬Ґаг, ў§Ј«пЁвҐ
в Ў«.13.1, ў Є®в®а®© ЇҐаҐзЁб«Ґл б®®в®иҐЁп ўҐа®пв®б⥩ ¤«п ваҐе
а §«Ёзле бгйҐбвў ў ®¤®© ЁЈаҐ.
’ Ў«Ёж 13.1. ђ бЇаҐ¤Ґ«ҐЁҐ ўҐа®пв®б⥩ ¤«п ваҐе бгйҐбвў ў ЁЈаҐ.
-------------------------------------------------------------------------
‘®бв®пЁҐ ‘гйҐбвў®1: ЂЁЈЁ«пв®а
(Ђ)Ђв Є 50%
(Џ)ЏаҐб«Ґ¤®ў ЁҐ 5%
(‘)‘«гз ©®Ґ 10%
(ђ)ђ®ҐЁҐ 20%
() Ў«® 15%
- 532 -
‘®бв®пЁҐ ‘гйҐбвў® 2: “¬ЁЄ
(Ђ)Ђв Є 20%
(Џ)ЏаҐб«Ґ¤®ў ЁҐ 30%
(‘)‘«гз ©®Ґ 20%
(ђ)ђ®ҐЁҐ 20%
() Ў«® 10%
‘®бв®пЁҐ ‘гйҐбвў® 3: •лЄ «Є
(Ђ)Ђв Є 5%
(Џ)ЏаҐб«Ґ¤®ў ЁҐ 60%
(‘)‘«гз ©®Ґ 20%
(ђ)ђ®ҐЁҐ 10%
() Ў«® 5%
________________________________________________________________________
Љ Є ўл ¬®¦ҐвҐ бг¤Ёвм Ї® а бЇаҐ¤Ґ«ҐЁо ўҐа®пв®б⥩, ЂЁЈЁ«пв®а
ЇаҐЁ¬гйҐб⢥® в ЄгҐв, •лЄ «Є ЇаҐ¤Ї®зЁв Ґв ЇаҐб«Ґ¤®ў ЁҐ, “¬ЁЄ -
зв®-в® б।ҐҐ ¬Ґ¦¤г Ё¬Ё. ЏаҐ¦¤Ґ 祬 ЇҐаҐ©вЁ Є а §Ј®ў®аг ® ॠ«Ё§ жЁЁ
ўҐа®пв®б⥩, п е®зг Ї®Ј®ў®аЁвм ҐйҐ ®Ў ®¤®¬ ЇаЁжЁЇҐ Ї®ўҐ¤ҐЁп ЁЈа®ўле
®ЎкҐЄв®ў - ® ஥ЁЁ. ђ®ҐЁҐ ®§ з Ґв, з⮠ᮧ¤ Ёп ў ЁЈаҐ бЎЁў овбп ў ЄгзЁ
Ё Їлв овбп Є Є-в® бЈагЇЇЁа®ў вмбп. ќв® Ї®е®¦Ґ в®, Є Є бв®пйЁҐ б®«¤ вл
Ё«Ё ᥪ®¬лҐ Ё®Ј¤ бв६пвбп б®Ўа вмбп ў¬Ґб⥠Ё ®бв вмбп а冷¬ ¤агЈ б
¤агЈ®¬.
‚ ¤Ґ©б⢨⥫м®бвЁ, нв® Ґ зв® Ё®Ґ, Є Є ўлЎ®а ®ЎйҐ© в®зЄЁ ўбваҐзЁ Ё
楫Ґгбв६«Ґ®Ґ ¤ўЁ¦ҐЁҐ Є Ґ©. Њл ¬®¦Ґ¬ ЁбЇ®«м§®ў вм в Є®© вЁЇ Ї®ўҐ¤ҐЁп
Є Є б®ўҐа襮 ®ў®Ґ б®бв®пЁҐ, ЇаЁ Є®в®а®¬ ᮧ¤ Ёп Є ¦гвбп
ЈагЇЇЁагойЁ¬Ёбп.
Њ®¤Ґ«Ёа®ў ЁҐ нв®Ј® б®бв®пЁп Ґ ®зҐм б«®¦®:
- ‚лЎа вм бгйҐбвў , Є®в®алҐ ўл е®вЁвҐ бЈагЇЇЁа®ў вм ў¬ҐбвҐ;
- ‚лЎа вм б।оо ®в®бЁвҐ«м® ўбҐе ᮧ¤ Ё© Ї®§ЁжЁо. ќв в®зЄ ў
Їа®бва б⢥ пў«пҐвбп жҐв஬ Ё ¬®¦Ґв Ўлвм ЁбЇ®«м§®ў ¤«п ўлзЁб«ҐЁп
ва ҐЄв®аЁ© ¤ўЁ¦ҐЁп ўбҐе ®ЎкҐЄв®ў, Є®в®алҐ б«Ґ¤гов Є Ґ©;
- ‚лзЁб«Ёвм ва ҐЄв®аЁо в Є, зв®Ўл Є ¦¤®Ґ ᮧ¤ ЁҐ б«Ґ¤®ў «® Є жҐваг.
‚ б®бв®пЁҐ ஥Ёп Ё¬ҐҐв б¬лб« ЇҐаҐе®¤Ёвм, Є®Ј¤ б«ЁиЄ®¬ ¬®Ј®
Їа®вЁўЁЄ®ў ў¤агЈ зЁ ов ®¤®ўаҐ¬Ґ® Ё§алЈ вм ®Ј®м, в®аЇҐ¤л Ё Їа®зЁҐ
б।бвў гЁз⮦ҐЁп. Ќ ўҐа®Ґ, «®ЈЁзҐҐ ўбҐЈ® ®ЎкҐ¤Ёпвм бгйҐбвў Ї® вЁЇ ¬.
Џ®б¬®ваЁ¬ аЁб.13.6, Є®в®а®¬ Ї®Є § ® ЈҐ®¬ҐваЁзҐбЄ®Ґ ЇаҐ¤бв ў«ҐЁҐ
஥Ёп.
- 533 -
ђЁб.13.6. ѓҐ®¬ҐваЁзҐбЄ®Ґ ЇаҐ¤бв ў«ҐЁҐ ஥Ёп.
ђЁб.13.7. ќў®«ожЁп 襣® ЁЈа®ў®Ј® ¬®§Ј .
- 534 -
’ҐЇҐам ЇҐаҐ©¤Ґ¬ Є ⮬г, Є Є ¬л ¬®Ј«Ё Ўл б®бв ўЁвм бЇа ў®злҐ в Ў«Ёжл
ўҐа®пв®б⥩. „ ў ©вҐ Ї®б¬®ваЁ¬ и ЁЈа®ў®© "¬®§Ј", Ё§®Ўа ¦Ґл©
аЁб.13.7, б ¤агЈ®© бв®а®л.
“ б Ґбвм ўлб®Є®га®ўҐў®Ґ гЇа ў«ҐЁҐ б®бв®пЁҐ¬, Є®в®а®Ґ ЁЁжЁЁагҐв ®ўлҐ
б®бв®пЁп, ®б®ўлў пбм б®бв®пЁЁ ®Єаг¦ о饩 баҐ¤л Ё ўҐа®пв®бвЁ. ќв®
®ў®Ґ б®бв®пЁҐ пў«пҐвбп "§ ¤Ґ©бвў®ў л¬ ў®ўҐ" б Ї®¬®ймо Ё§Є®га®ўҐў®Ј®
гЇа ў«ҐЁп б®бв®пЁҐ¬, Є®в®а®Ґ, ў Є®Ґз®¬ Ёв®ЈҐ, пў«пҐвбп «®Ј®¬
¬®в®а®© ¤®«Ё 祫®ўҐзҐбЄ®Ј® ¬®§Ј . ’ҐЇҐам ¬л ¤ўЁЈ Ґ¬бп Є ⮬г, зв®Ўл
¤®Ў ўЁвм ҐйҐ ®¤Ё га®ўҐм Є "¬®§Јг". ќв®в ®ўл© га®ўҐм ЇаЁЁ¬ Ґв ў®
ўЁ¬ ЁҐ Ё б®бв®пЁҐ ®Єаг¦ о饩 б।л, Ё а бЇаҐ¤Ґ«ҐЁҐ ўҐа®пв®бвЁ.
Ћв¤Ґ«м®Ґ а бЇаҐ¤Ґ«ҐЁҐ ўҐа®пв®бвЁ ¬®¦Ґв бгйҐбвў®ў вм ¤«п Є ¦¤®Ј®
ᮧ¤ Ёп, в Є зв® ¬л ¬®¦Ґ¬ Ї®«гзЁвм ¬®Ј® а §ле "«Ёз®б⥩" б ®¤®© Ё в®©
¦Ґ ®ЎйҐ© аеЁвҐЄвга®© "¤ўЁЈ ⥫쮣® жҐва ". ‘гйҐбвўгов ¬Ё««Ё а¤л Їг⥩
б®бв ў«ҐЁп бЇа ў®зле в Ў«Ёж ўҐа®пв®бвЁ. ‚ ¬ 㦮 ЇҐаҐзЁб«Ёвм ўбҐ
б®бв®пЁп, Є®в®алҐ Ґбвм ў ЁЈаҐ. Љ ЇаЁ¬Ґаг, Ўг¤Ґ¬ ЁбЇ®«м§®ў вм вҐ, Є®в®алҐ
¬л 㦥 Ё¬ҐҐ¬. ‚®в ®Ё:
- ЏаҐб«Ґ¤®ў ЁҐ;
- “Є«®ҐЁҐ;
- ‘«гз ©®Ґ;
- Ў«®;
- ђ®ҐЁҐ;
- ЌҐЇ®¤ўЁ¦®бвм.
џ ¤®Ў ўЁ« ҐйҐ б®бв®пЁҐ "ҐЇ®¤ўЁ¦®бвЁ", Ї®¤ Є®в®ал¬ Ї®¤а §г¬Ґў о Ї®«®Ґ
ЎҐ§¤Ґ©бвўЁҐ Їа®вЁўЁЄ . ќв® б®бв®пЁҐ ¬®¦Ґв Ї®Є § вмбп Ґ ЁвҐаҐбл¬, ® ў
१г«мв ⥠ўа Ј ўлЈ«п¤Ёв в Є, Ўг¤в® ® ¤г¬ Ґв, Ё«Ё Ї®¤¦Ё¤ Ґв ЁЈа®Є , зв®Ўл
ᤥ« вм ўлЇ ¤. ќв® ᮧ¤ Ґв ў ЁЈаҐ ҐЄ®в®а®Ґ Їа殮ЁҐ Ё ЎҐбЇ®Є®©бвў®.
Ќ ¬ Ґ®Ўе®¤Ё¬® ®ЇаҐ¤Ґ«Ёвм ЇҐаҐ¬ҐлҐ б®бв®пЁп ®Єаг¦ о饩 б।л, Є®в®алҐ
гЇа ў«пов иЁ¬Ё аҐиҐЁп¬Ё. ‘ нв®© 楫мо ¬®¦® § ¤ вм ¤ўҐ ЇҐаҐ¬ҐлҐ:
- „Ёбв жЁп ¤® ЁЈа®Є ;
- ‘®бв®пЁҐ Ё ў®®а㦥ЁҐ ЁЈа®Є : бв५пҐв Ё«Ё Ґв.
’ҐЇҐам ¬®¦® Ї®бва®Ёвм в Ў«Ёжл ўҐа®пв®б⥩. —в®Ўл ᤥ« вм нв®, § Ї®«Ё¬
¬ ббЁўл жЁда ¬Ё ®в 1 ¤® 6, Є®в®алҐ ЇаҐ¤бв ў«пов а §«ЁзлҐ б®бв®пЁп.
“ б Ї®«гзЁвбп в Ў«Ёж Ё§ 20 н«Ґ¬Ґв®ў. „«п ўлЎ®а б®бв®пЁп
Їа®Ё¤ҐЄбЁа㥬 в Ў«Ёжг б«гз ©л¬Ё зЁб« ¬Ё ®в 0 ¤® 19. Љ®Ґз®, Є®Ј¤ ¬л
ўлЎЁа Ґ¬ б«гз ©®Ґ зЁб«® в ЄЁ¬ бЇ®б®Ў®¬, Є Є Ї®Є § ® §¤Ґбм:
sel = rand()%20
зЁб« ®в 0 ¤® 19 Ї®«гз овбп а ў®жҐл¬Ё. ‚®§ЁЄ Ґв ў®Їа®б, Є Є ᤥ« вм
в Є, зв®Ўл ЇҐаҐЄ«о票Ґ ў в® Ё«Ё Ё®Ґ б®бв®пЁҐ Їа®Ёб室Ё«® з йҐ Ё«Ё ०Ґ?
€ зҐ, зв® ў ¬ ¤Ґ« вм, зв®Ўл § Ї®«Ёвм в Ў«Ёжг ⥬ а бЇаҐ¤Ґ«ҐЁҐ¬
ўҐа®пв®б⥩, Є®в®а®Ґ ўл ¦Ґ« ҐвҐ. Љ ЇаЁ¬Ґаг, ҐбвЁ ўл е®вЁвҐ Ї®«гзЁвм 50%
ЇаҐб«Ґ¤®ў Ёп, ў ¬ Ґ®Ўе®¤Ё¬® Ї®¬ҐбвЁвм ў в Ў«Ёжг 10 Ґ¤ЁЁж. …б«Ё ஥ЁҐ
¤®«¦® б®бв ў«пвм 20%, в® ў ¬ Ґ®Ўе®¤Ё¬® § ҐбвЁ ў в Ў«Ёжг зҐвлॠЇпвҐаЄЁ.
Ќ з «® ў 襩 в Ў«Ёжл ўлЈ«п¤Ґ«® Ўл ЇаЁ¬Ґа® в Є:
int table_1 [20] = {1,1,1,1,1,1,1,1,1,1,5,5,5,5,...
®бв «млҐ_б®бв®пЁп}
‘ в®зЄЁ §аҐЁп ¬ ⥬ вЁЄЁ ¬л ЁбЇ®«м§гҐ¬ ЇҐаҐ¬Ґго, Є®в®а п Ё¬ҐҐв а ў®Ґ
а бЇаҐ¤Ґ«ҐЁҐ ўҐа®пв®бвЁ ®в 0 ¤® 19, зв®Ўл ЇҐаҐЁ¤ҐЄбЁа®ў вм в Ў«Ёжг,
Є®в®а п ЇаҐ¤бв ў«пҐв б®Ў®© дгЄжЁо Ї«®в®бвЁ ўҐа®пв®бвЁ, Ј¤Ґ н«Ґ¬Ґв
Ё¤ҐЄбЁагҐв б«Ґ¤го饥 б®бв®пЁҐ.
џ ¤Ґобм, зв® ўл Ї®Ё¬ ҐвҐ, ® 祬 Ё¤Ґв аҐзм, ® ¤ ¦Ґ Ґб«Ё Ґв, в® Ї®ўҐамвҐ
¬Ґ - ўбҐ, ® 祬 ¬л Ј®ў®аЁ¬, ¤®ў®«м® Єагв®! ’ҐЇҐам, Є®Ј¤ ўл ўЁ¤ЁвҐ д®а¬г
бЇа ў®зле в Ў«Ёж, ¬л ¬®¦Ґ¬ Ї®Ј®ў®аЁвм бзҐв ўлЎ®а б®бв®пЁ©. Љ Є ўл
ўЁ¤Ґ«Ё ў Їа®Ја ¬¬Ґ "“¬ п ¬ге " (‹ЁбвЁЈ 13.4), ¤Ёбв жЁп ¤® ЁЈа®Є Ё
б«гз ©лҐ зЁб« Ўл«Ё ЁбЇ®«м§®ў л ¤«п ўлЎ®а б«Ґ¤го饣® б®бв®пЁп. Њл
Ї®¤®и«Ё Є ⮬г, зв®Ўл ᤥ« вм ¤«п нв®Ј® ¦Ґ § зЁвҐ«м® Ў®«миҐ. Њл Ўг¤Ґ¬
гзЁвлў вм Є Є ¤Ёбв жЁо, в Є Ё ў®®а㦥ЁҐ ЁЈа®Є ¤«п ўлЎ®а ®¤®© Ё§ ¤ўге
Ї«®в®б⥩ ўҐа®пв®бвЁ: ® ЁбЇ®«м§гҐвбп, Є®Ј¤ Їа®вЁўЁЄЁ ¤ «ҐЄ®, ¤агЈ п
- Є®Ј¤ ®Ё Ў«Ё§Є®.
ЏаЁ в Є®¬ Ї®¤е®¤Ґ ўбҐ¬Ё ўа Ј ¬Ё ЁбЇ®«м§гҐвбп в®«мЄ® ®¤ ¬®¤Ґ«м
"е а ЄвҐа ", ®, ў®бп а §®®Ўа §ЁҐ ў "Ё¤ЁўЁ¤г «м®бвм" Їа®вЁўЁЄ®ў, ¬л
ЎҐ§ ®б®Ўле ¤®Ї®«ЁвҐ«мле § ва в § ¬Ґв® ®Ў®Ј вЁ¬ ЁЈаг. ’ Є®© «Ј®аЁв¬
Ї®Є § Ё¦Ґ.
Ђ«Ј®аЁв¬ 13.6. €бЇ®«м§®ў ЁҐ Ї«®в®бвЁ ўҐа®пв®б⥩ ў ўлЎ®аҐ б®бв®пЁп.
-------------------------------------------------------------------------
table_1 = {1,1,1,2,2,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6};
table_2 = {1,1,2,2,2,2,3,3,3,3,3,3,4,4,5,5,5,5,5,6};
while (Ё¤Ґв ЁЈа )
{
... Є®¤ Їа®Ја ¬¬л
if (ўлЇ®«повбп Є®¬ ¤л ®¤®Ј® Ё§ б®бв®пЁ©)
{
...Їа®¤®«¦ вм Ёе ўлЇ®«ҐЁҐ
}
else // ‚лЎЁа Ґ¬ ®ў®Ґ б®бв®пЁҐ
{
if (а ббв®пЁҐ ¬Ґ¦¤г ЁЈа®Є®¬ Ё Їа®вЁўЁЄ®¬ > 100)
{
®ў®Ґ б®бв®пЁҐ=table_1[rand()%20];
}
else
{
if (а ббв®пЁҐ < 100 Ё ЁЈа®Є бв५пҐв)
{
®ў®Ґ б®бв®пЁҐ=table_2[rand()%20];
}
else //—Ёбв® б«гз ©л© ўлЎ®а
{
®ў®Ґ б®бв®пЁҐ=rand()%7;
} // Є®Ґж ®ЇҐа в®а else
} // Є®Ґж ўлЎ®а ®ў®Ј® б®бв®пЁп
} // Є®Ґж Ј« ў®Ј® жЁЄ« while
__________________________________________________________________________
- 536 -
‚®§¬®¦®, ҐЄ®в®алҐ ¤Ґ©бвўЁп ў иЁе ᮧ¤ Ё©, ॠ«Ё§гойЁе Ђ«Ј®аЁв¬ 13.6,
Ўг¤г⠢룫拉вм ¦гвЄ®ў в®, ® п Ј а вЁаго, зв® бЄгз® Ґ Ўг¤Ґв.
…б«Ё ўл 㢥«ЁзЁвҐ а §¬Ґал в Ў«Ёж ўҐа®пв®б⥩, в® г ў б Ї®пўЁвбп
ў®§¬®¦®бвм Ї®«гзЁвм ўЇ®«Ґ ЇаЁ«Ёзл© аҐ§г«мв в. „ «ҐҐ, ўл ¬®¦ҐвҐ ¤®Ў ўЁвм
ҐйҐ ҐбЄ®«мЄ® ®ЇҐа в®а®ў IF, гб«®¦Ёвм ®Єаг¦ ойго б।㠨, Є®Ґж,
㢥«ЁзЁвм Є®«ЁзҐбвў® в Ў«Ёж ¤«п ¤®бвЁ¦ҐЁп Ў®«м襣® а §®®Ўа §Ёп ў
е а ЄвҐа е ЇҐаб® ¦Ґ© ў 襩 ЁЈал.
‚® ўбпЄ®¬ б«гз Ґ, Ї®©¤Ґ¬ ¤ «миҐ. ‚ б«Ґ¤гойЁе а §¤Ґ« е ¬л Ўг¤Ґ¬ Ј®ў®аЁвм ®
⮬, зв® пў«пҐвбп з бвмо, Є Є п Ј®ў®ао, "н§®вҐаЁзҐбЄ®© Є®««ҐЄжЁЁ". ќв®
¤®ў®«м® ЁвҐаҐб®, е®вп Ё б®ўҐа襮 Ґ ЁбЇ®«м§говбп ў ЁЈа е ᥣ®¤п襣®
¤п. Ѓлвм ¬®¦Ґв, ЁЈал § ўва 襣® ¤п ®Їпвм ўҐагвбп Є нв®© Є®жҐЇжЁЁ.
ЏЂЊџ’њ € ЋЃ“—…Ќ€…
…б«Ё Ўл ¬Ґ Ўл«® 㦮 ®ЇаҐ¤Ґ«Ёвм вҐа¬Ёл "Ї ¬пвм" Ё "®Ўг票Ґ", п ўҐа®пв®
бЄ § « Ўл, зв® ®Ё пў«повбп бЇ®б®Ў®бвмо ЁбЇ®«м§®ў вм Їа®и«л© ®Їлв ¤«п
аҐиҐЁп ®ўле Їа®Ў«Ґ¬ ў¬Ґб⥠ᮠᯮᮡ®бвмо Є Ї«Ёў вм Ё ЁвҐаЇаҐвЁа®ў вм
®ўго Ёд®а¬ жЁо.
‚Ї®«Ґ ў®§¬®¦® ¤Ґ«Ёвм ᮧ¤ Ёп ў иЁе ЁЈа е бЇ®б®Ў®бвмо "гзЁвмбп" Ё
"§ Ї®¬Ё вм", е®вп Ё ў ¤®бв в®з® ЈагЎ®© д®а¬Ґ. ‚бҐ, зв® ¬ Ґ®Ўе®¤Ё¬®
ᤥ« вм, нв® ўўҐбвЁ ҐбЄ®«мЄ® ЇҐаҐ¬Ґле Ё ЁбЇ®«м§®ў вм Ёе ЇаЁ ўлЎ®аҐ
б®бв®пЁп Ё ў ¬®в®але дгЄжЁпе.
- 537 -
Љ ЇаЁ¬Ґаг, ¬л ¬®Ј«Ё Ўл Ї®§ў®«Ёвм Є ¦¤®¬г бгйҐбвўг ў 襩 ЁЈаҐ Ё¬Ґвм
ўгваҐоо Є авг ЁЈа®ў®Ј® Їа®бва бвў . …б«Ё Ўл бгйҐбвў®, ў®©¤п ў Є®¬ вг,
®Ў аг¦Ё«® в ¬ Єгзг ᬥа⥫мле ўа Ј®ў, в® ў б«Ґ¤гойЁ© а §, Є®Ј¤ ®®
ўе®¤Ёв ў Є®¬ вг, ¬л ¬®Ј«Ё Ўл 㢥«ЁзЁвм ҐЈ® ЈаҐббЁў®бвм. „агЈ®© ЇаЁ¬Ґа:
Ґб«Ё ў® ўаҐ¬п Ў®п ЁЈа®Є ¤ўЁЈ «бп ў«Ґў® Ё Ї®в®¬ бв५п«, ЁЈа®ўлҐ бгйҐбвў
¬®Ј«Ё Ўл § Ї®¬Ёвм нв® Їг⥬ ЁвҐаЇ®«пжЁЁ ва ҐЄв®аЁЁ ЁЈа®Є ў ®ЇаҐ¤Ґ«Ґ®¬
Їа ў«ҐЁЁ. ‹оЎлҐ ¤Ґ©бвўЁп, Є®в®алҐ ЁЈа®Є з йҐ ўбҐЈ® ЇаҐ¤ЇаЁЁ¬ Ґв, ¬®Јгв
Ўлвм ЁбЇ®«м§®ў л Їа®вЁў ҐЈ®, Ґб«Ё ¤Ґ«Ёвм ЁЈа®ўлҐ бгйҐбвў бЇ®б®Ў®бвмо
ЁбЇ®«м§®ў Ёп нв®© Ёд®а¬ жЁЁ ¤«п гб®ўҐаиҐбвў®ў Ёп б®Ўб⢥®© в ЄвЁЄЁ.
ќв® в®«мЄ® ҐбЄ®«мЄ® ЇаЁ¬Ґа®ў, ¤«п 祣® ¬®Јгв Ўлвм ЁбЇ®«м§®ў л Ї ¬пвм Ё
®Ўг票Ґ. ‚®®ЎйҐ, ўЇ®«Ґ ¬®¦® гзЁвм ЁЈаг § Ї®¬Ё вм Ёд®а¬ жЁо ® ў б ў
⮬ ¦Ґ ®ЎкҐ¬Ґ, ў Є®в®а®¬ ўл § Ї®¬Ё ҐвҐ Ёд®а¬ жЁо ®Ў ЁЈаҐ, § ⥬
ЁбЇ®«м§®ў вм Є®Ї«Ґл© ®Їлв Їа®вЁў ЁЈа®Є , е®вп нв® Ё ҐбЄ®«мЄ®
Ї®¬Ё Ґв б ¬®гЎЁ©бвў®.
Ђ‹ѓЋђ€’Њ› ЏЋ€‘ЉЂ. ‚›‘‹…†€‚ЂЌ€… €ѓђЋЉЂ
"Њ®§ЈЁ", Є®в®алҐ ¬л бЄ®бвагЁа®ў «Ё, Ї®«гзЁ«Ёбм ¤®бв в®з® г¬л¬Ё, в Є зв®
бгйҐбвў® ¤ ¦Ґ Ї®«гзЁ«® и б ўл¦Ёвм. € ⥯Ґам п е®зг Ї®Ј®ў®аЁвм ® ¤агЈ®©
¤®ў®«м® Їа®бв®© ўҐйЁ - Є Є ¤®«¦Ґ Ўлвм ®аЈ Ё§®ў Ї®ЁбЄ.
‚бЇ®¬Ё¬ ⥮аЁо ’Ґ§Ґп б ЊЁ®в ўа®¬. †Ё« Є®Ј¤ -в® ¤ ўл¬-¤ ў® ЊЁ®в ўа
(祫®ўҐЄ б Ј®«®ў®© ЎлЄ ), Є®в®ал© ЇаҐб«Ґ¤®ў « ’Ґ§Ґп. ‚ ®ЎйҐ¬, ’Ґ§Ґ© гЄа « г
ЊЁ®в ўа ... Ґ Ї®¬о в®з® - CD-ROM, Ё«Ё зв®-в® в ¬ ҐйҐ ... ’Ґ§Ґ© Ї®Ї « ў
«®ўгиЄг (ў ¤Ґ©б⢨⥫м®бвЁ, Ї®¤ап¤зЁЄ, Ї®бва®ЁўиЁ© ҐҐ, §лў « ҐҐ
« ЎЁаЁв®¬), ® гбЇҐ« ўлЎа вмбп аг¦г ЇаҐ¦¤Ґ, 祬 ЊЁ®в ўа ҐЈ® бвЁЈ.
‚®Їа®б б®бв®Ёв ў ⮬, Є Є 㦮 ¤ўЁЈ вмбп Ї® « ЎЁаЁвг, зв®Ўл ©вЁ Їгвм Є
ўл室㠨«Ё «оЎ®© Їа®Ё§ў®«м®© в®зЄҐ « ЎЁаЁв , Ё ЇаЁ н⮬ Ґ § бвапвм ў Ґ¬
ўбҐЈ¤ ? „ ў ©вҐ ў§Ј«пҐ¬ аЁб.13.8, Ј¤Ґ Ё§®Ўа ¦Ґ ЇаЁ¬Ґа « ЎЁаЁв .
‘гйҐбвўгҐв Їа®бв®© «Ј®аЁв¬, ®Ў®§ зҐл© §¤Ґбм Є Є Ђ«Ј®аЁв¬ 13.7, Є®в®ал©
Ї®¬®¦Ґв ў ¬ ©вЁ ўл室 Ё§ «оЎ®Ј® « ЎЁаЁв . Ѓг¤м⥠ўЁ¬ ⥫мл, ў ®¤Ё
ЇаҐЄа бл© ¬®¬Ґв ® ¬®¦Ґв ў ¬ бЁ«м® ЇаЁЈ®¤Ёвмбп!
Ђ«Ј®аЁв¬ 13.7. Џгвм аг¦г.
------------------------------------------------------------------------
do
{
¤ўЁЈ ©вҐбм ў¤®«м Їа ў®© бвҐл
Ґб«Ё ўбваҐвЁ«бп Їа®е®¤, Ї®ўҐаЁвҐ Їа ў®
Ґб«Ё Ї®Ї «Ё ў вгЇЁЄ, а §ўҐаЁвҐбм 180 Ја ¤гб®ў
} Ї®Є Ґ ўл©¤ҐвҐ Ё§ « ЎЁаЁв
________________________________________________________________________
- 538 -
ђЁб.13.8. ЋЎа §Ґж « ЎЁаЁв .
ќв®в «Ј®аЁв¬ а Ў®в Ґв ЎҐ§гЇаҐз®: Ї®Їа®Ўг©вҐ ҐЈ® г бҐЎп ¤®¬ . ‘в авг©вҐ Ё§
«оЎ®Ј® гЈ« ў 襩 Єў авЁал Ё б«Ґ¤г©вҐ «Ј®аЁв¬г. ‚®§¬®¦®, ЇаЁ Ё§ўҐбвле
®Ўбв®п⥫мбвў е ўл ¤ ¦Ґ ©¤ҐвҐ Їгвм Є Є ¦¤®© ¤ўҐаЁ.
’ Є Є Є б ЁвҐаҐбгов ўЁ¤Ґ®ЁЈал, Ї®Їлв Ґ¬бп ЁбЇ®«м§®ў вм нв®в «Ј®аЁв¬,
зв®Ўл Ї®¬®зм ᮧ¤ Ёп¬ ў ЁЈаҐ ўлб«Ґ¤Ёвм ЁЈа®Є , Ґ влЄ пбм ў бвҐл (Ґб«Ё
¬л, Є®Ґз®, Ґ е®вЁ¬ ®Ў¬ лў вм ЁЈа®Є , Ї®§ў®«Ёў ᮧ¤ Ёп¬
ЎҐбЇаҐЇпвб⢥® Їа®е®¤Ёвм бЄў®§м бвҐл). €бЇ®«м§®ў ЁҐ нв®Ј® «Ј®аЁв¬
¬®¦Ґв ЇаЁўҐбвЁ Є § ва㤥Ёп¬, Ґб«Ё ¤® ®Ўе®¤Ёвм ®ЎкҐЄвл ЄагЈ«®© д®а¬л.
Ћ¤ Є®, ¬л ¬®¦Ґ¬ Ё«Ё Ё§ЎҐЈ вм в Є®© бЁвг жЁЁ, Ё«Ё ¤®Ў ўЁвм ў Їа®Ја ¬¬г
¤®Ї®«ЁвҐ«мл© «Ј®аЁв¬ ¤«п ЇаҐ¤®вўа 饨п 室мЎл Ї® ЄагЈг.
’…Ћђ€џ €ѓђ
‘«Ґ¤гой п ⥬ Ґ б«ЁиЄ®¬ вҐб® бўп§ б ўЁ¤Ґ®ЁЈа ¬Ё, , ᪮॥, ®в®бЁвбп
Є бва ⥣ЁзҐбЄЁ¬ ЁЈа ¬ вЁЇ и е¬ в. ’Ґ¬ Ґ ¬ҐҐҐ, п е®з㠮ᢥвЁвм ҐҐ, зв®Ўл
б®®ЎйЁвм ў ¬ ҐЄ®в®алҐ ЁвҐаҐблҐ Ё¤ҐЁ.
- 539 -
’Ґ®аЁп ЁЈа пў«пҐвбп а §¤Ґ«®¬ ¬ ⥬ вЁЄЁ, б«ЁиЄ®¬ ваг¤л¬ Ё б«ЁиЄ®¬
Ўбва Євл¬, ¤«п в®Ј® зв®Ўл ЇаЁ¬Ґпвм ҐҐ ў ўЁ¤Ґ®ЁЈа е. Ћ ®ЇҐаЁагҐв
Ў®а®¬ Їа ўЁ« ¤«п ўлзЁб«ҐЁп ®ЇвЁ¬ «м®Ј® аҐиҐЁп Ё«Ё «Ј®аЁв¬ ,
Ї®§ў®«по饣® ЁЈа®Єг Ї®ЎҐ¤Ёвм. ЋЎлз® нв® ¤Ґ« Ґвбп б Ї®¬®ймо ¬®¦Ґбвў
¬ ваЁж, ўҐа®пв®б⥩ Ё «ЁҐ©®Ј® Їа®Ја ¬¬Ёа®ў Ёп. ’Ґ¬ Ґ ¬ҐҐҐ, ¬л ¬®¦Ґ¬
Ё§ў«Ґзм Ё§ ⥮ਨ ЁЈа Ґ¬ «® Ї®«Ґ§®Ј®.
Љ Є Їа ўЁ«®, вॡгҐвбп аҐиЁвм Їа®Ў«Ґ¬г Їг⥬ ®жҐЄЁ ⥪г饣® Ї®«®¦ҐЁп Ё«Ё
ЁЈа®ў®© бЁвг жЁЁ, Ї®¤а §г¬Ґў п, зв® ЁЈа®Є в®з® ®жҐЁў Ґв бў®Ё ¤Ґ©бвўЁп ў
¤ ®© в®зЄҐ ў ¤ л© ¬®¬Ґв ўаҐ¬ҐЁ Ё ¤ «ҐҐ бв а Ґвбп г«гзиЁвм бў®о
Ї®§ЁжЁо. —в®Ўл ўлЇ®«Ёвм нв® Є®¬ЇмовҐаҐ, ¬ ¤®:
- ‚®-ЇҐаўле, ¬л ᮧ¤ Ґ¬ ҐбЄ®«мЄ® ўЁ¤®ў 楫Ґўле дгЄжЁ©, Є®в®алҐ ¬®Ј«Ё
Ўл ®жҐЁў вм иг ⥪гйго Ї®§ЁжЁо;
- „ «ҐҐ ¬л Їа®ЎгҐ¬ ЇаЁ¬ҐЁвм ®ўго в ЄвЁЄг Ё«Ё Ё§¬ҐЁвм Ї®§ЁжЁо б ⥬,
зв®Ўл Ї®б¬®ваҐвм, г«гзиЁв «Ё нв® иҐ Ї®«®¦ҐЁҐ;
- …б«Ё нв® ¤®бвЁЈ Ґвбп, ¬л ўлЇ®«пҐ¬ нв® ¤Ґ©бвўЁҐ;
- …б«Ё Ґв, ЁбЇлвлў Ґ¬ б«Ґ¤гойго в ЄвЁЄг.
€¬Ґ® Ї® в Є®© б奬Ґ а Ў®в ов и е¬ влҐ Їа®Ја ¬¬л. Љ®¬ЇмовҐа Ї®бв®п®
ўҐ¤Ґв Ї®¤бзҐв бў®Ёе б®Ўб⢥ле ®зЄ®ў Ё ®зЄ®ў Їа®вЁўЁЄ , § ўЁбпйЁе ®в
⥪г饣® а бЇ®«®¦ҐЁп дЁЈга, Ё Їлв Ґвбп ©вЁ ЁЎ®«ҐҐ ®ЇвЁ¬ «мл© е®¤.
ќв®в "¬л᫨⥫мл© Їа®жҐбб" ¬®¦Ґв ў ¤Ґ©б⢨⥫м®бвЁ Ё¤вЁ ¬®ЈЁе
га®ўпе. Љ®¬ЇмовҐа Ўг¤Ґв Їа®ўҐапвм Є ¦¤го Ё§ ў®§¬®¦®б⥩: Ґб«Ё п б«Ґ« о
в Є, в® ¬®© Їа®вЁўЁЄ ¬®Ј Ўл ЇаҐ¤ЇаЁпвм в®-в®..., Ґб«Ё п Ї®бвгЇ«о н¤ Є,
б®ЇҐаЁЄ ᤥ« Ґв б«Ґ¤го饥... ’ Є ¬®¦Ґв Їа®¤®«¦ вмбп ¤® ЎҐбЄ®Ґз®бвЁ, е®вп
祫®ўҐЄ ¬®¦Ґв Їа®ЁЈа вм ¤ ¦Ґ ў ⮬ б«гз Ґ, Ґб«Ё Є®¬ЇмовҐа Ўг¤Ґв ¤Ґ« вм
в®«мЄ® ¤ў и Ј "Їа®ўҐаЄ -¤Ґ©бвўЁҐ".
‚ ўЁ¤Ґ®ЁЈа е нв в ЄвЁЄ ¬®¦Ґв Ўлвм ЁбЇ®«м§®ў Є Є б ¬®Ґ ўлб®Є®га®ўҐў®Ґ
гЇа ў«ҐЁҐ ўбҐ¬Ё ®бв «мл¬Ё дгЄжЁп¬Ё. Љ ЇаЁ¬Ґаг, Є ¦¤го ¬Ёгвг Ё«Ё ®Є®«®
нв®Ј®, Є®¬ЇмовҐа ¬®Ј Ўл Їа®бзЁвлў вм е®¤л Ё ®жҐЁў вм, Є Є ® ¤Ґ©бвўгҐв.
…б«Ё ўбҐ ҐЈ® 室л г¤ зл, ® ¬®Ј Ўл ¤Ґ©бвў®ў вм в Є Ё ¤ «миҐ. Ћ¤ Є®, Ґб«Ё
Є Є п-в® Ї®ЇлвЄ ®Є § « бм Ґг¤ з®©, § зЁв, ЇаЁи«® ўаҐ¬п ¤«п ЇҐаҐб¬®ва
в ЄвЁЄЁ.
€’Ћѓ
‚ нв®© Ј« ўҐ ¬л § ва®г«Ё ¬ ббг ЁвҐаҐбле ⥬ Ё ¤ ¦Ґ ᮧ¤ «Ё ҐЎ®«ми®©
"¬®§Ј", бЇ®б®Ўл© Ё¬ЁвЁа®ў вм ¬®ЈЁҐ дгЄжЁЁ, ЇаЁбгйЁҐ ¦Ёўл¬ ®ЎкҐЄв ¬.
€бЇ®«м§гп Є®¬ЎЁ жЁЁ а §«Ёзле «Ј®аЁв¬®ў, ®ЇЁб ле ў нв®© Ј« ўҐ, ўл
ᬮ¦ҐвҐ ᮧ¤ вм "ўЁавг «мл© ¬®§Ј" ¤®бв в®з® ¬®йл© ¤«п в®Ј®, зв®Ўл ў иЁ
ᮧ¤ Ёп ᬮЈ«Ё Ў®а®вмбп § ўл¦Ёў ЁҐ. Ћ¤ Є®, п е®зг ў ¬ ¤ вм Ї аг
б®ўҐв®ў:
- 540 -
- ‘в а ©вҐбм Ґ гб«®¦пвм "¬®§Ј" ЎҐ§ Ґ®Ўе®¤Ё¬®бвЁ;
- ЌҐ Їлв ©вҐбм ба §г ᮧ¤ вм бгЇҐаЄ®¬ЇмовҐа. ‚ з «Ґ Їгбвм ў иҐ Їа®б⮥
Їа®Ё§ўҐ¤ҐЁҐ Ўг¤Ґв Ў®«миҐ Ї®е®¦Ґ "„Ґ¤Ё".
Њл ®Ўбг¤Ё«Ё Ў®«миЁбвў® ¬Ґв®¤®ў гЇа ў«ҐЁп Ї®ўҐ¤ҐЁҐ¬, ЇаЁ¬ҐпҐ¬ле ў
ᥣ®¤пиЁе ўЁ¤Ґ®ЁЈа е. …б«Ё ўл ᬮЈ«Ё ў Ёе а §®Ўа вмбп, ўл ᬮ¦ҐвҐ
ᮧ¤ ў вм ЁЈал Ґ е㦥, в® Ё «гзиҐ зҐ¬ вҐ, Є®в®алҐ бгйҐбвўгов ᥣ®¤п.
€¤гбваЁп Є®¬ЇмовҐале ЁЈа ¤ўЁ¦Ґвбп ᥬЁ¬Ё«мл¬Ё и Ј ¬Ё Ї® ЇгвЁ г«гз襨п
Ја дЁзҐбЄЁе Ё §ўгЄ®ўле ў®§¬®¦®б⥩, з бв® § Ўлў п ® в Є®© ¬ «ҐмЄ®© ¤Ґв «Ё
Є Є ЁвҐ««ҐЄв. Љ бз бвмо, ⥯Ґам ўл Ё¬ҐҐвҐ ў®§¬®¦®бвм ЇаЁўҐбвЁ "¬®§ЈЁ" Ё
бва ⥣Ёо ў б«Ґ¤го饥 Ї®Є®«ҐЁҐ Є®¬ЇмовҐале ЁЈа.
ѓ ‹ Ђ ‚ Ђ 13 (Ђ¤ан ‹ Њ®в)
----------------------
€ ‘ Љ “ ‘ ‘ ’ ‚ … Ќ Ќ › ‰ € Ќ ’ … ‹ ‹ … Љ ’
—Ґ«®ўҐзҐбЄЁ© а §г¬ ЇаҐ¤бв ў«пҐв б®Ў®© ЎҐ§¤г, § Ї®«Ґго Їа®и«л¬,
бв®пйЁ¬ Ё Ўг¤гйЁ¬. Ћ ®б®§ Ґв бў®Ґ б®Ўб⢥®Ґ бгйҐбвў®ў ЁҐ Ё пў«пҐвбп
ў Ё§ўҐб⮬ бЁлб«Ґ ўбҐЈ® «Ёим гбва®©бвў®¬ б ў®§¬®¦®бвмо б ¬®®аЈ Ё§ жЁЁ Ё
бЇ®б®Ў®бвмо § ¤ ў вм ў®Їа®бл ® бў®Ґ¬ б ¬®®йг饨Ё. ‚лзЁб«ЁвҐ«м п вҐеЁЄ
室Ёвбп Ї®а®ЈҐ Ї®Ё¬ Ёп ¬Ґе Ё§¬®ў ¬лб«Ё, Ї ¬пвЁ Ё ᮧ Ёп. Ћ¤ Є®
¬, Є Є Їа®Ја ¬¬Ёбв ¬ Є®¬ЇмовҐале ЁЈа, б ¬®¬ ¤Ґ«Ґ Ґ 㦮 Ўлвм
б«ЁиЄ®¬ ЁбЄгиҐл¬Ё ў ᮧ¤ ЁЁ а §г¬® ¬лб«пйЁе бЁб⥬. ‘гйҐбвў ў иЁе
ЁЈа е ¤®«¦л в®«мЄ® Їа®Ё§ў®¤Ёвм ўЇҐз в«ҐЁҐ, зв® ®Ё бЇ®б®Ўл ¬лб«Ёвм
б ¬®бв®п⥫м®. ‚ нв®© з бвЁ ¬л Ё§Ў®а®§¤Ё¬ ⥠ў®¤л, Є®в®алҐ Ё ¤® бЁе Ї®а
®вбгвбвўгов Є ав е ¤ ¦Ґ б ¬ле ЇҐаҐ¤®ўле ўЁ¤Ґ®ЁЈа. Њл ®Ўбг¤Ё¬ ⥬л, ў
Є®Ёе ®Ў« бвм ®в Їа ЄвЁзҐбЄ®Ј® ¤® ⥮аҐвЁзҐбЄ®Ј® Ї®«®бвмо Ё§®вҐаЁз .
ЌҐб¬®вап нв®, Є®¬Ї«ҐЄб ¬лб«пйЁе ¬®¤Ґ«Ґ© ¬®¦Ґв Ўлвм Ї®«гзҐ ¤ ¦Ґ б
¬ЁЁ¬ «мл¬Ё § Ёп¬Ё. ќвЁ ¬®¤Ґ«Ё Ўг¤гв бЇ®б®Ўл б ¬®бв®пвҐ«м® ўлЇ®«пвм
в ЄЁҐ Їа®б⥩訥 § ¤ зЁ, Є Є ба ¦ҐЁҐ, Ї®ЁбЄ Ё гЄ«®ҐЁҐ.
Њл ®Ўбг¤Ё¬ б«Ґ¤гойЁҐ ⥬л:
- ЋЎ§®а в®Ј®, Є Є ¬лб«пв ўЁ¤Ґ®ЁЈал;
- Ђ«Ј®аЁв¬л ЏаҐб«Ґ¤®ў Ёп Ё “Є«®ҐЁп;
- 504 -
- Ў«®лҐ ¬лб«Ё;
- ‘«гз ©лҐ ЇҐаҐ¤ўЁ¦ҐЁп;
- Ђўв®¬ вл б Є®Ґзл¬Ё б®бв®пЁп¬Ё;
- ‚Ґа®пв®бвлҐ ўв®¬ вл;
- Џ ¬пвм Ё ®Ўг票Ґ;
- Ђ«Ј®аЁв¬л Џ®ЁбЄ ;
- ’Ґ®аЁп ЁЈа.
ЉЂЉ Њ›‘‹џ’ ‚€„…Ћ€ѓђ›: ЋЃ‡Ћђ
ЏаЁ¤Ґв в®в ¤Ґм, Є®Ј¤ Є®¬ЇмовҐа бв Ґв в ЄЁ¬ ¦Ґ бҐамҐ§л¬ б®ЎҐбҐ¤ЁЄ®¬,
Є Є Ё «гзиЁҐ 祫®ўҐзҐбЄЁҐ г¬л. Ћ¤ Є® ᥣ®¤пиЁҐ Є®¬ЇмовҐал (Ї® Єа ©Ґ©
¬ҐаҐ, ЏЉ) Ґ ®Ў« ¤ ов б«®¦®бвмо, Ґ®Ўе®¤Ё¬®© ¤«п ЁЁжЁ жЁЁ ¬лб«Ґ© Ё
вў®азҐбЄЁе Їа®жҐбб®ў.Ќ® б ¬®¬ ¤Ґ«Ґ б нв® Ё Ґ ¤®«¦® ў®«®ў вм! Њл ¦Ґ
¤Ґ« Ґ¬ ўЁ¤ҐЁЈал, Ґ ¤а®Ё¤®ў. ‚ ЁЈаҐ г б ЇаЁбгвбвўгов ҐЄ®в®алҐ
ᮧ¤ Ёп Ё ®ЎкҐЄвл. ‚бҐ, зв® ¬ 㦮 ᤥ« вм, нв® ЇаЁ¤ вм Ё¬ ўЁ¤Ё¬®бвм
бЇ®б®Ў®бвЁ а §г¬®Ј® ¬ли«ҐЁп. €Ја ойЁ© ¬®¦Ґв ®йгй вм бҐЎп Ї®¬ҐйҐл¬
Є®а®вЄ®Ґ ўаҐ¬п ў ҐЄ®Ґ Їа®бва бвў®, Ј¤Ґ ® ¤г¬ Ґв, зв® ўа ¦ҐбЄ п в Є
Є®а Ў«м ॠ«м ! „«п ®бгйҐбвў«ҐЁп нвЁе 楫Ґ© ¬л ¤®«¦л Їа® «Ё§Ёа®ў вм,
Є ЄЁ¬ а §г¬®¬ ¬л ¤®«¦л ¤Ґ«Ёвм иЁ ЁЈа®ўлҐ ®ЎкҐЄвл. ‘«®¦®бвм нв®Ј®
"а §г¬ " § ўЁбЁв ®в в®Ј®, Є Єго а §®ўЁ¤®бвм бгйҐбвў ¬л Є®бвагЁа㥬. Љ
ЇаЁ¬Ґаг, ᮧ¤ Ёп Ё§ Pac Man Ў®«миго з бвм бў®ҐЈ® ўаҐ¬ҐЁ ва впв
ЇаҐб«Ґ¤®ў ЁҐ Ё«Ё гЎҐЈ ЁҐ ®в ў б. Ѓг¤м ¬л ⥬Ё «о¤м¬Ё, зв® ЇЁб «Ё Pac
Man, ¬л Ё¬Ґ«Ё Ўл ў®§¬®¦®бвм § Ј®а вм Ј¤Ґ-ЁЎг¤м ѓ ў ©пе, ® г б ў
в Є®¬ б«гз Ґ 㦥 Ўл« Ўл «Ј®аЁв¬ЁзҐбЄЁ© Ёбва㬥⠤«п ®бгйҐбвў«ҐЁп нвЁе
ЇаҐб«Ґ¤®ў Ё© Ё гЎҐЈ Ё©.
‘ ¤агЈ®© бв®а®л, Ґб«Ё Ўл ¬л ᮧ¤ ў «Ё ўЁ¤Ґ®ЁЈал, Ї®¤®ЎлҐ "Љ®б¬ЁзҐбЄЁ¬
‡ еў взЁЄ ¬", ЇаЁ¤ ЁҐ ўЁ¤Ё¬®бвЁ ЁвҐ««ҐЄв ўап¤ «Ё Ї®вॡ®ў «® Ўл Ў®«ҐҐ
Ї ал ¤о¦Ё бва®Є ў Їа®Ја ¬¬Ґ. ЏбҐў¤®Є®¤ ўлЈ«п¤Ґ« Ўл ЇаЁ¬Ґа® в Є:
1. Џа®¤®«¦ вм ¤ўЁ¦ҐЁҐ ў ⮬ Їа ў«ҐЁЁ, ў Є®в®а®¬ ўл ¤ўЁЈ ҐвҐбм
(ўЇа ў® Ё«Ё ў«Ґў®);
2. Љ®Ј¤ ўл Ї®Ї ¤ҐвҐ Ја Ёжг нЄа , Ё§¬ҐЁвм Їа ў«ҐЁҐ Ё
¤ўЁЈ вмбп ў¤®«м ®бЁ ўлб®вл;
3. ЇҐаҐ©вЁ Є Ї.1.
ЌҐ иЁЎЄ® ®ЎиЁал© Ў®а "ЁвҐ««ҐЄвг «мле" дгЄжЁ© ¤«п ЁЈал, ЇаЁЎл«м ®в
Є®в®а®© § ўбҐ ўаҐ¬п ҐҐ бгйҐбвў®ў Ёп б®бв ўЁ« ®в 50 ¤® 100 ¬Ё««Ё®®ў
¤®«« а®ў. ’аҐе¬ҐалҐ ўЁ¤Ґ®ЁЈал ¬ ЁвҐаҐбл Ґ Ї®в®¬г, зв® ®Ё "㬥Ґ"
- 505 -
®Ўлзле "Ї«®бЄЁе" ЁЈа. ЋЎкҐ¬®бвм ¤ Ґв в®«мЄ® Ї®ўл襮Ґ ®йг饨Ґ
ॠ«м®бвЁ, «Ј®аЁв¬л, ¤Ґ«пойЁҐ ЇҐаб® ¦Ґ© а §г¬®¬, ў Ёе ⥠¦Ґ, зв® Ё
ў ¤ўг嬥але ЁЈа е. Љ ЇаЁ¬Ґаг, Terminator Rampage Ё¬ҐҐв ¤Ґ©б⢨⥫м®
Ґб«®¦го бЁб⥬㠨бЄгбб⢥®Ј® ЁвҐ««ҐЄв , ЇаЁ¬Ґа® в®Ј® ¦Ґ га®ўп
б«®¦®бвЁ, зв® Ё ў Pac Man. Ћ¤ Є®, ЇаЁ «ЁзЁЁ ваҐе¬Ґа®© Ја дЁЄЁ ў¬Ґб⥠б
Ё§®йаҐл¬ §ўгЄ®¬ бгйҐбвў ў Ґ© Є ¦гвбп ўЇ®«Ґ ®¤г襢«Ґл¬Ё.
€в Є, ЇаЁўҐ¤Ґ¬ Є ®ЎйҐ¬г § ¬Ґ ⥫о е а ЄвҐа Ў®«миЁбвў Є®¬ЇмовҐале ЁЈа:
ЁвҐ««ҐЄв ЇҐаб® ¦Ґ© 室Ёвбп ЇҐйҐа®¬ га®ўҐ, ® нв®в Ґ¤®бв в®Є
Є®¬ЇҐбЁагҐвбп § бзҐв Ја дЁЄЁ Ё §ўгЄ .
ђ §а Ў®взЁЄ®ў ўЁ¤Ґ®ЁЈа Ё¤Ґп ЁбЄгбб⢥®Ј® ЁвҐ««ҐЄв ЇаЁвпЈЁў Ґв б®ў Ё
б®ў Їа®в殮ЁЁ ¤«ЁвҐ«м®Ј® ўаҐ¬ҐЁ, Ї®в®¬г зв® ЁЈал, Є®в®алҐ ®Ё
ЇЁигв, ў Ў®«миЁб⢥ бў®Ґ¬ ¤®ў®«м® ЈаҐббЁўл. Ќ и § ¤ з ў нв®© з бвЁ
б®бв®Ёв ў ⮬, зв®Ўл Ї®пвм ¬Ґв®¤л, ЁбЇ®«м§гҐ¬лҐ ¤«п ¬®¤Ґ«Ёа®ў Ёп
ЁвҐ««ҐЄв , Ё Ј« ўлҐ ЄаЁвҐаЁЁ, ўгваЁ Є®в®але бгйҐбвўгов "¬лб«пйЁҐ"
«Ј®аЁв¬л. ‡ Ї®¬ЁвҐ, ЁЈал Ґ ¤г¬ ов. ЋЁ в®«мЄ® "¤Ґ« ов 㬮Ґ «Ёж®".
Џ®бҐ¬г Ў®«миго з бвм ўаҐ¬ҐЁ ¬л Ўг¤Ґ¬ Є®бвагЁа®ў вм ®б®ў®© а §г¬л© ўЁ¤
¤Ґп⥫м®бвЁ ўа®¤Ґ ЇаҐб«Ґ¤®ў Ёп Ё Ї ¤ҐЁп. Љ Є ўл ¤®Ј ¤лў ҐвҐбм, нв®
Ў®«ми®Ј® г¬ Ґ ¤®: ®Ў аг¦Ёвм Їа®вЁўЁЄ Ё гЁз⮦Ёвм ҐЈ®, Ё«Ё, б в®зЄЁ
§аҐЁп Є®¬ЇмовҐа®© Їа®Ја ¬¬л, ¤ўЁЈ вмбп Ї® Їа ў«ҐЁо Є ўа Јг, ў§пвм ҐЈ®
¬гиЄг Ё ®вЄалвм ®Ј®м Ё§ ўбҐе ўЁ¤®ў ®аг¦Ёп.
Ђ‹ѓЋђ€’Њ› Џђ…‘‹…„Ћ‚ЂЌ€џ € “Љ‹ЋЌ…Ќ€џ
€в Є, 祬. Ќ ЁЎ®«ҐҐ Їа®бвл¬Ё ЁЈа®ўл¬Ё «Ј®аЁв¬ ¬Ё ЁбЄгбб⢥®Ј®
ЁвҐ««ҐЄв пў«повбп в Є §лў Ґ¬л© Ђ«Ј®аЁв¬ ЏаҐб«Ґ¤®ў Ёп Ё ҐЈ®
Їа®вЁў®Ї®«®¦®бвм - Ђ«Ј®аЁв¬ “Є«®ҐЁп. ‚ ®б®ў®¬, ®Ё § бв ў«пов ЁЈа®ў®©
®ЎкҐЄв Ё«Ё ¤®Ј®пвм ЁЈа®Є , Ё«Ё гЎҐЈ вм ®в ҐЈ®. Љ®Ґз®, Є®дЁЈга жЁп
ЁЈа®ў®Ј® Їа®бва бвў в Є¦Ґ ¤®«¦ гзЁвлў вмбп, зв®Ўл ЇаҐб«Ґ¤®ў вҐ«м ¤ ¦Ґ Ё
Ґ Їлв «бп Їа®©вЁ бЄў®§м бвҐл. „ ў ©вҐ а бᬮваЁ¬ Їа®жҐбб, ¬®¤Ґ«ЁагойЁ©
Ї®Ј®о ҐЄ®в®а®Ј® бгйҐбвў § ЁЈа®Є®¬.
ЏаҐб«Ґ¤®ў ЁҐ
-------------------
‚®-ЇҐаўле, ¬ Ґ®Ўе®¤Ё¬® § вм а бЇ®«®¦ҐЁҐ ®Ў®Ёе ®ЎкҐЄв®ў. “ б Ґбвм нвЁ
¤ лҐ, в Є Є Є ¬л § Ґ¬ Є®®а¤Ё вл ЁЈа®Є Ё ЁЈа®ў®Ј® ®ЎкҐЄв , пў«по饣®бп
ўа Ј®¬.
‚®-ўв®але, ¬ Ґ®Ўе®¤Ё¬® бЄ®бвагЁа®ў вм «Ј®аЁв¬, Є®в®ал© Ўг¤Ґв гЇа ў«пвм
Ї®ўҐ¤ҐЁҐ¬ ўа Ј , ЇаҐб«Ґ¤го饣® ЁЈа®Є . Ђ«Ј®аЁв¬ 13.1 ¤Ґ« Ґв Ё¬Ґ® в®, зв®
¬л ®в ҐЈ® Ё е®вЁ¬:
- 506 -
Ђ«Ј®аЁв¬ 13.1. Ђ«Ј®аЁв¬ ЏаҐб«Ґ¤®ў Ёп.
_________________________________________________________________________
// ЏаҐ¤Ї®«®¦Ё¬, зв® px,py - Є®®а¤Ё вл ЁЈа®Є ,
// ex,ey - Є®®а¤Ё вл Їа®вЁўЁЄ
while (ЁЈа )
{
Їа®Ја ¬¬л© Є®¤
......
......
// ‚ з «Ґ а бб¬ ваЁў Ґ¬ ЇҐаҐ¬ҐйҐЁҐ Ї® Ј®аЁ§®в «Ё (®бм •)
if ex>px then ex=ex+1
if ex<px then ex=ex-1
// ’ҐЇҐам а бб¬ ваЁў Ґ¬ ўҐавЁЄ «мл© (Y) Є®¬Ї®Ґв
if ey>py then ey=ey+1
if ey<py then ey=ey-1
....
....
Їа®Ја ¬¬л© Є®¤
}
_________________________________________________________________________
- …б«Ё ўа Ј 室Ёвбп бЇа ў , в® Ґбвм ҐЈ® •-Є®®а¤Ё в Ў®«миҐ
ᮮ⢥вбвўго饩 Є®®¤Ё вл ЁЈа®Є , ЇаҐб«Ґ¤®ў ⥫м 㬥ми Ґв бў®о
б®Ўб⢥го Ї®§ЁжЁо Ї® ®бЁ • Ґ¤ЁЁжг Ё ⥬ б ¬л¬ ЇаЁЎ«Ё¦ Ґвбп Є
ЁЈа®Єг. …б«Ё ¦Ґ Їа®вЁўЁЄ 室Ёвбп «ҐўҐҐ ЁЈа®Є , ®, ®Ў®а®в,
㢥«ЁзЁў Ґв бў®о Ј®аЁ§®в «мго Є®®а¤Ё вг.
- ’ ¦Ґ б ¬ п «®ЈЁЄ ЇаЁ¬ҐЁ¬ Ё Є ЇҐаҐ¬ҐйҐЁо Ї® ўҐавЁЄ «Ё.
€бЇ®«м§гп нв®в «Ј®аЁв¬, Їа®вЁўЁЄ ЇаҐб«Ґ¤гҐв ЁЈа®Є Ї®звЁ бв®«м ¦Ґ
Ґг¬®«Ё¬®, Є Є Ё ’1000 Ё§ ’Ґа¬Ё в®а -2. Ћ Ґ ®бв ®ўЁвбп ¤® вҐе Ї®а, Ї®Є
Ґ Ї®©¬ Ґв ЁЈа®Є . Њл ¬®Ј«Ё Ўл ҐбЄ®«мЄ® ®Ў«ҐЈзЁвм ҐЈ® § ¤ зг Їг⥬
¤®Ў ў«ҐЁп ҐЄ®в®а®© ¤®Ї®«ЁвҐ«м®© «®ЈЁЄЁ, бЇ®б®Ўбвўго饩 ҐЈ® ¤ўЁ¦ҐЁо Є
Ї®§ЁжЁЁ ҐбҐЁп г¤ а . Ћ¤ Є®, ЇҐаҐ¤ ⥬, Є Є нв® ¤Ґ« вм, ¤ ў ©вҐ
Ї®б¬®ваЁ¬ Їа®Ја ¬¬г, ¬®¤Ґ«Ёагойго ЇаҐб«Ґ¤®ў ЁҐ. ‹ЁбвЁЈ Їа®Ја ¬¬л 13.1
аЁбгҐв 2 в®зЄЁ: ®¤г Ј®«гЎго (ўл), ¤агЈго Єа бго(Їа®вЁўЁЄ). —в® Ўл ўл
Ё ЇаҐ¤ЇаЁЁ¬ «Ё, Єа б п в®зЄ Їлв Ґвбп бвЁзм ў б. „«п ¤ўЁ¦ҐЁп (Ё«Ё, п
Ўл бЄ § «, ЎҐЈ !) ¦¬ЁвҐ Є« ўЁиг U - ЇҐаҐ¬ҐйҐЁҐ ўўҐае, N - ўЁ§, H -
ў«Ґў® Ё J - ўЇа ў®. „«п ўл室 Ё§ Їа®Ја ¬¬л ¦¬ЁвҐ Q.
‹ЁбвЁЈ 13.1. Џа®Ја ¬¬ ’Ґа¬Ё в®а (TERM.C).
_______________________________________________________________________
// I N C L U D E S////////////////////////////////////////////////////////////
#include <stdio.h>
#include <graph.h>
// G L O B A L S /////////////////////////////////////////////////////////////
unsigned int far *clock = (unsigned int far *)0x0000046C;// pointer to internal
// 18.2 clicks/sec
//////////////////////////////////////////////////////////////////////////////
Timer(int clicks)
{
// this function uses the internal time keeper timer i.e. the one that goes
// at 18.2 clicks/sec to to a time delay. You can find a 32 bit value of
// this timer at 0000:046Ch
unsigned int now;
// get current time
now = *clock;
// wait till time has gone past current time plus the amount we eanted to
// wait. Note each click is approx. 55 milliseconds.
while(abs(*clock - now) < clicks){}
} // end Timer
// M A I N ///////////////////////////////////////////////////////////////////
main()
{
int px=160,py=100, // starting position of player
ex=0,ey=0; // starting position of enemy
int done=0; // exit flag
_setvideomode(_MRES256COLOR);
printf(" The Terminator - Q to Quit");
// main game loop
while(!done)
{
// erase dots
_setcolor(0);
_setpixel(px,py);
_setpixel(ex,ey);
// move player
if (kbhit())
{
// which way is player moving
switch(getch())
{
case 'u': // up
{
py-=2;
} break;
case 'n': // down
{
py+=2;
} break;
case 'j': // right
{
px+=2;
} break;
case 'h': // left
{
px-=2;
} break;
case 'q':
{
done=1;
} break;
} // end switch
} // end if player hit a key
// move enemy
// begin brain
if (px>ex) ex++;
if (px<ex) ex--;
if (py>ey) ey++;
if (py<ey) ey--;
// end brain
// draw dots
_setcolor(9);
_setpixel(px,py);
_setcolor(12);
_setpixel(ex,ey);
// wait a bit
Timer(1);
} // end while
_setvideomode(_DEFAULTMODE);
} // end main
_______________________________________________________________________
‹ЁбвЁЈ 13.1 Ї®Є §лў Ґв Є Є Їа®бв® бЄ®бвагЁа®ў вм Ў®а ¤Ґ©бвўЁ©,
Є ¦гйЁебп ўЁ¤ а §г¬л¬Ё. Ќ® б ¬®¬ ¤Ґ«Ґ, ЇаҐ¦¤Ґ 祬 ¬л Ї®«гзЁ¬
Ї®«®жҐл© ЁбЄгббвўҐл© ЁвҐ««ҐЄв, нвЁ бва®ЄЁ Їа®Ја ¬¬л ¤®«¦л ЇаҐвҐаЇҐвм
¬ ббг гб®ўҐаиҐбвў®ў Ё©.
“Є«®ҐЁҐ
-----------------
Џ®Є ¬л ҐйҐ Ґ ги«Ё б«ЁиЄ®¬ ¤ «ҐЄ® ў иЁе а бб㦤ҐЁпе, Їа®¤®«¦Ё¬ иг
¤ЁбЄгббЁо а §Ј®ў®а®¬ ® пў«ҐЁЁ Їаאַ Їа®вЁў®Ї®«®¦®¬ ЇаҐб«Ґ¤®ў Ёо - ®Ў
гЄ«®ҐЁЁ. —в®Ўл бЄ®бвагЁа®ў вм ᮧ¤ ЁҐ, гЄ«®по饥бп ®в ЁЈа®Є , ¬
㦮 ᤥ« вм ў в®з®бвЁ Їа®вЁў®Ї®«®¦®Ґ ЇаҐ¤л¤гйЁ¬ ¤Ґ©бвўЁп¬. Ђ«Ј®аЁв¬
13.2 ў ®ЎйЁе зҐав е Ї®Є §лў Ґв нв®.
Ђ«Ј®аЁв¬ 13.2. Ђ«Ј®аЁв¬ “Є«®ҐЁп.
----------------------------------------------------------------------
// Їгбвм (px,py) - Ї®§ЁжЁп ЁЈа®Є Ё (ex,ey) - Ї®§ЁжЁп Їа®вЁўЁЄ
while (ЁЈа )
{
.....// Є®¤ Їа®Ја ¬¬л
// ‚ з «Ґ - Ј®аЁ§®в «м п б®бв ў«пой п ЇҐаҐ¬ҐйҐЁп
if ex>px then ex=ex-1
if ex<px then ex=ex+1
- 510 -
// ’ҐЇҐам - ўҐавЁЄ «м п б®бв ў«пой п
if ey>py then ey=ey-1
if ey<py then ey=ey+1
.... // Є®¤ Їа®Ја ¬¬л
}
________________________________________________________________________
‚ н⮬ ¬ҐбвҐ п ҐйҐ а § е®зг § ®бваЁвм ў иҐ ўЁ¬ ЁҐ ⮬, зв® ЁЈал Ґ
¤г¬ ов. ЏҐаб® ¦Ё ў Ёе в®«мЄ® б®ўҐаи ов Ґб«®¦лҐ нў®«ожЁЁ ў Їа®бва б⢥
Ё ўаҐ¬ҐЁ, ¤ ®ЇаҐ¤Ґ«Ґл¬ ®Ўа §®¬ ॠЈЁагов ®Єаг¦ ойго ®Ўбв ®ўЄг Ё
¤Ґ©бвўЁп ЁЈа®Є . (ЌҐЄ®в®алҐ гзҐлҐ бзЁв ов, зв® «о¤Ё - нв® Ґ зв® Ё®Ґ, Є Є
Ў®а ¤Ґ©бвўЁ© Ё ॠЄжЁ©.)
Ђ ⥯Ґам ЇҐаҐ©¤Ґ¬ Є б«Ґ¤го饩 ⥬Ґ Ё ®Ўбг¤Ё¬ в Є®Ґ Ї®пвЁҐ, Є Є "и Ў«®лҐ
¬лб«Ё".
Ў«®лҐ ¬лб«Ё
-----------------------
Ќ § ॠᮧ¤ Ёп ўЁ¤Ґ®ЁЈа Їа®Ја ¬¬Ёбвл бв «ЄЁў «Ёбм б бҐа쥧묨
Їа®Ў«Ґ¬ ¬Ё, Їа®Ўгп ҐбвЁ в®зЄЁ нЄа . ЋЁ а ¤®ў «Ёбм Ї® Ї®ў®¤г г¤ з®©
ђЁб.13,1. Џа®вЁўЁЄ, ¤Ґ©бвўгойЁ© Ї® и Ў«®г.
- 511 -
Ё¬Ёв жЁЁ в ЄвЁЄЁ Ў®п Ё ЇЁб Ёп Ў®а «Ј®аЁв¬®ў, гЇа ў«пойЁе бгйҐбвў ¬Ё
ў Ёе ¬ЁаҐ.
“ўл, ®Ё ¤г¬ «Ё, зв® ¬®Јгв Ё¬ЁвЁа®ў вм а §г¬®Ґ Ї®ўҐ¤ҐЁҐ б Ї®¬®ймо
и Ў«®®ў, в® Ґбвм ®ЇЁблў п а冷¬ жЁда ва ҐЄв®аЁЁ ЇҐаҐ¬ҐйҐЁп ᮧ¤ Ё©. Љ
ЇаЁ¬Ґаг, ў ЁЈаҐ Galaxian ¬ «ҐмЄЁҐ Є®б¬ЁзҐбЄЁҐ Є®а Ў«Ё ¤Ґ« ов ҐбЄ®«мЄ®
ЄагЈ®ў, бв५пов ў ў б ҐЄ®в®а®Ґ ўаҐ¬п, § ⥬ ў®§ўа й овбп ЇаҐ¦ҐҐ
¬Ґбв® ў бв о бў®Ёе б®а®¤ЁзҐ©. Џ®б¬®ваЁ¬ аЁб.13.1.
Љ®Ј¤ ®Ё ўлЇ®«пов нвЁ ¤ўЁ¦ҐЁп, в® ўбҐЈ® «Ёим б«Ґ¤гов Є®¬ ¤ ¬, § а ҐҐ
ЇЁб ле и Ў«®®ў.
Љ®бвагЁа®ў ЁҐ и Ў«®®ў - з१ўлз ©® «ҐЈЄ®Ґ § пвЁҐ Ё ®Ё и«Ё
ЁбЇ®«м§®ў ЁҐ ў® ¬®ЈЁе бжҐ аЁпе. Љ Є ЇаЁ¬Ґа, ЁбЇ®«м§гҐ¬ и Ў«®л Ё
б«гз ©лҐ зЁб« ¤«п ¬®¤Ґ«Ёа®ў Ёп "а §г¬ ", Є®в®ал© ¬®¦® ЁбЇ®«м§®ў вм,
ЇаЁ¬Ґа, ¤«п гЇа ў«ҐЁп ҐЎ®«миЁ¬ Є®б¬ЁзҐбЄЁ¬ Є®а Ў«Ґ¬. Ћ Їлв Ґвбп
гЄ«®Ёвмбп ®в ў б, Ё ў в® ¦Ґ ўаҐ¬п Їа®ЎгҐв ЇаЁжҐ«м® бв५пвм. ’®, зв®
¬®¦® ¤«п нв®Ј® ᤥ« вм, Ї®Є § ® ў Ђ«Ј®аЁв¬Ґ 13.3.
Ђ«Ј®аЁв¬ 13.3. Ў«®л б® б«гз ©л¬ ўлЎ®а®¬.
--------------------------------------------------------------------------
// ЏаҐ¤Ї®«®¦Ё¬, зв® pattern - нв® ¬ ббЁў, ᮤҐа¦ йЁ© Ў®а Є®¬ ¤
// ¤«п ॠ«Ё§ жЁЁ ¤ҐбпвЁ а §«Ёзле и Ў«®®ў Ї®ўҐ¤ҐЁп
while (Ё¤Ґв ЁЈа )
{
.... Є®¤ Їа®Ја ¬¬л
// Џа®ўҐа塞, § Є®зҐ «Ё ®Ўа Ў®вЄ ⥪г饣® и Ў«®
if (Ґб«Ё ®Ўа Ў®вЄ Є®¬ ¤ ⥪г饣® и Ў«® § Є®зҐ )
{
// ‚лЎЁа Ґ¬ ®ўл© и Ў«®
current_pattern = pattern[rand()%10];
Ї®§ЁжЁп Їа®вЁўЁЄ = бв а п Ї®§ЁжЁп +
б«Ґ¤гойЁ© н«Ґ¬Ґв ⥪г饣® и Ў«®
“ўҐ«ЁзЁ¬ Ґ¤ЁЁжг § 票Ґ Ё¤ҐЄб н«Ґ¬Ґв®ў и Ў«®
.... Є®¤ Їа®Ја ¬¬л
}
________________________________________________________________________
Ђ«Ј®аЁв¬ 13.3 Є ¦Ґвбп б«®¦ҐҐ ЇаҐ¤л¤гйЁе Ђ«Ј®аЁв¬®ў ЏаҐб«Ґ¤®ў Ёп Ё
“Є«®ҐЁп, ® б ¬®¬ ¤Ґ«Ґ нв® Ґ в Є. ‚ бгй®бвЁ:
- 512 -
- ‘«гз ©л¬ ®Ўа §®¬ ўлЎЁа Ґвбп ҐЄ®в®ал© и Ў«®;
- „ўЁ¦ҐЁҐ ᮧ¤ Ё© ў Є ¦¤®¬ Їа®е®¤Ґ жЁЄ« Ё§¬ҐпҐвбп ў ᮮ⢥вбвўЁЁ
б Їа ў«ҐЁҐ¬, гЄ § л¬ ў и Ў«®Ґ;
- ‡ ⥬ ¬л ЇҐаҐе®¤Ё¬ Є б«Ґ¤го饬г н«Ґ¬Ґвг и Ў«® . Љ ¦¤л© и Ў«®
¬®¦Ґв ўЄ«оз вм ў бҐЎп Їа®Ё§ў®«м®Ґ Є®«ЁзҐбвў® н«Ґ¬Ґв®ў. ЌҐЄ®в®алҐ Ё§
Ёе Ё¬Ґов 10 н«Ґ¬Ґв®ў, ЁлҐ - 1000.
‚ ¦® ®¤® - Є®Ј¤ "ᮧ¤ ЁҐ" ЁбзҐаЇлў Ґв Ў®а Є®¬ ¤, § ¤ ў Ґ¬л© ®¤Ё¬
и Ў«®®¬ - ®® ЇҐаҐе®¤Ёв Є ¤агЈ®¬г.
Ќ Є®Ґж, ¬л ¬®Ј«Ё Ўл бўп§ вм ўлЎ®а б«гз ©®Ј® ®¬Ґа и Ў«® б ¤Ґ©бвўЁп¬Ё
®б®ўҐ ҐЄ®© ¤агЈ®© «®ЈЁЄЁ - ЇаЁ¬Ґа, ®ЇЁблў Ґ¬®© Ђ«Ј®аЁв¬®¬ 13.1.
„®Ў ўЁў Є Ђ«Ј®аЁв¬г 13.3 Ї®б«Ґ¤Ё© и Ј, ¬л ЇаЁ¤ «Ё Ґ¬г ҐЄ®в®ал© бЇҐЄв,
Є®в®ал© ЇаЁ¤ « Ґ¬г Ў®«миго Є®¬Ї«ҐЄб®бвм. Џ®пўЁ«®бм Ї®¤®ЎЁҐ ¬л᫨⥫쮣®
Їа®жҐбб , б®бв®п饣® Ё§ ¤ўге бв ¤Ё©. ‘«гз ©®Ґ зЁб«® Ї®¤ Ґвбп ўе®¤
ᥫҐЄв®а и Ў«®®ў, Є®в®ал© § ⥬ ўлЎЁа Ґв ®ўл© и Ў«® ¤«п ЁЈал.
ЪДДДДДДДДДДДДДДДДДДДДДДї
і ѓҐҐа в®а і 1-© га®ўҐм
і б«гз ©ле зЁбҐ« і (¬л᫨⥫мл©)
АДДДДДДДДДДДВДДДДДДДДДДЩ
ЪДДДДДДДДБДДДДДДДДДї
і ‚лЎ®а и Ў«®®ў і
АДДДДДДДДДДДДДДДДДДЩ
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ЪДДДДДДДДДДДї ЪДДДДДДДДДДДї ЪДДДДДДДДДДДДї 2-© га®ўҐм
і і і і і і (дгЄжЁЁ ¬®в®аЁЄЁ)
і і і і і і
і і і і ... і і
і і і і і і
і і і і і і
АДДДДДДДДДДДЩ АДДДДДДДДДДДЩ АДДДДДДДДДДДДЩ
Ў«® 1 Ў«® 2 Ў«® N
ђЁб.13.2. €бЇ®«м§®ў ЁҐ б«гз ©ле зЁбҐ« ¤«п ўлЎ®а и Ў«® .
- 513 -
Џ® «®ЈЁЁ б Ґаў®© бЁб⥬®©, б«гз ©®Ґ зЁб«® ¬®¦® ЇаҐ¤бв ўЁвм Є Є
Ґаўл© Ё¬Їг«мб, ўлЎа л© и Ў«® ¤Ґ©бвўЁ© - Є Є ॠЄжЁо ҐЈ®.
Џ®б¬®ваЁвҐ аЁб. 13.2, зв®Ўл гўЁ¤Ґвм в®в Їа®жҐбб, ® Є®в®а®¬ п Ј®ў®ао.
„«п гб®ўҐаиҐбвў®ў Ёп в ЄвЁЄЁ ¬®¦® ¤®Ў ўЁвм Ё§¬ҐаҐЁҐ а ббв®пЁп ¤®
ЁЈа®Є : Ґб«Ё бгйҐбвў® 室Ёвбп § ЇаҐ¤Ґ« ¬Ё ҐЄ®в®а®Ј® а ¤Ёгб ,
ЁбЇ®«м§гҐвбп Ђ«Ј®аЁв¬ ЏаҐб«Ґ¤®ў Ёп, ®¤ Є®, Є®Ј¤ ®® ®Є §лў Ґвбп
¤®бв в®з® Ў«Ё§Є®, в® зЁ Ґв ЇҐаҐ¬Ґй вмбп Ї® и Ў«®л¬ ва ҐЄв®аЁп¬,
ўлЎЁа п Ёе б«гз ©л¬ ®Ўа §®¬. ќв Ё¤Ґп ЇаЁ¬ҐҐ ў Ђ«Ј®аЁв¬Ґ 13.4.
Ђ«Ј®аЁв¬ 13.4. ЏаҐб«Ґ¤®ў ЁҐ Ё ’ Ґж.
----------------------------------------------------------------------
while (Ё¤Ґв ЁЈа )
{
....Є®¤ Їа®Ја ¬¬л
if (ЁЈа®Є ўҐ ЄагЈ б а ¤Ёгᮬ 50 в®зҐЄ) then ЇаҐб«Ґ¤гҐ¬ ҐЈ®
else
ўлЎЁа Ґ¬ б«гз ©л© и Ў«® Ё ॠ«Ё§гҐ¬ ҐЈ®
.... Є®¤ Їа®Ја ¬¬л
}
________________________________________________________________________
„«п ¤Ґ¬®бва жЁЁ ЁбЇ®«м§®ў Ёп и Ў«®®ў п ЇҐаҐа Ў®в « Їа®Ја ¬¬г Ё§ ‹ЁбвЁЈ
13.1 Ё ЇаЁўҐ« ҐҐ ў ᮮ⢥вбвўЁҐ б Ђ«Ј®аЁв¬®¬ 13.4. Ќ®ў п Їа®Ја ¬¬ Ї®Є §
ў ‹ЁбвЁЈҐ 13.2. Љ®Ј¤ ўа Ј ЇаЁЎ«Ё¦ Ґвбп Є ЁЈа®Єг, ® ўлЎЁа Ґв ®¤Ё Ё§ ваҐе
и Ў«®®ў Ё ўлЇ®«пҐв ҐЈ® ¤® § ўҐа襨п. „ «ҐҐ, ў § ўЁбЁ¬®бвЁ ®в а ббв®пЁп
¤® ЁЈа®Є , Їа®вЁўЁЄ «ЁЎ® ЇаҐб«Ґ¤гҐв ЁЈа®Є , «ЁЎ® ўлЎЁа Ґв ¤агЈ®© и Ў«®.
‹ЁбвЁЈ 13.2. Њге (FLY.C).
__________________________________________________________________________
// I N C L U D E S////////////////////////////////////////////////////////////
#include <stdio.h>
#include <graph.h>
#include <math.h>
// G L O B A L S /////////////////////////////////////////////////////////////
unsigned int far *clock = (unsigned int far *)0x0000046C; // pointer to internal
// 18.2 clicks/sec
// the x and y components of the patterns that will be played, I just made
// them up
int patterns_x[3][20]= { 1,1,1,1,1,2,2,-1,-2,-3,-1,0,0,1,2,2,-2,-2,-1,0,
0,0,1,2,3,4,5,4,3,2,1,3,3,3,3,2,1,-2,-2,-1,
0,-1,-2,-3,-3,-2,-2,0,0,0,0,0,0,1,0,0,0,1,0,1 };
int patterns_y[3][20] = { 0,0,0,0,-1,-1,-1,-1,-1,0,0,0,0,0,2,2,2,2,2,2,
1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,0,0,0,0,
1,1,1,2,2,-1,-1,-1,-2,-2,-1,-1,0,0,0,1,1,1,1,1 };
//////////////////////////////////////////////////////////////////////////////
Timer(int clicks)
{
// this function uses the internal time keeper timer i.e. the one that goes
// at 18.2 clicks/sec to to a time delay. You can find a 32 bit value of
// this timer at 0000:046Ch
unsigned int now;
// get current time
now = *clock;
// wait till time has gone past current time plus the amount we eanted to
// wait. Note each click is approx. 55 milliseconds.
while(abs(*clock - now) < clicks){}
} // end Timer
// M A I N ///////////////////////////////////////////////////////////////////
main()
{
int px=160,py=100, // starting position of player
ex=0,ey=0; // starting position of enemy
int done=0, // exit flag
doing_pattern=0, // flags if a pattern is being executed
current_pattern, // curent pattern 0-2 that is being done by brain
pattern_element; // current element of pattern being executed
_setvideomode(_MRES256COLOR);
printf(" The Fly - Q to Quit");
// main game loop
while(!done)
{
// erase dots
_setcolor(0);
_setpixel(px,py);
_setpixel(ex,ey);
// move player
if (kbhit())
{
// which way is player moving
switch(getch())
{
case 'u': // up
{
py-=2;
} break;
case 'n': // down
{
py+=2;
} break;
case 'j': // right
{
px+=2;
} break;
case 'h': // left
{
px-=2;
} break;
case 'q':
{
done=1;
} break;
} // end switch
} // end if player hit a key
// move enemy
// begin brain
if (!doing_pattern)
{
if (px>ex) ex++;
if (px<ex) ex--;
if (py>ey) ey++;
if (py<ey) ey--;
// check if it's time to do a pattern i.e. is enemy within 50 pixels
// of player
if (sqrt(.1 + (px-ex)*(px-ex) + (py-ey)*(py-ey)) < 15)
{
// never ever use a SQRT in a real game!
// get a new random pattern
current_pattern = rand()%3;
// set brain into pattern state
doing_pattern = 1;
pattern_element = 0;
} // end if within a radius of 50
} // end if doing a pattern
else
{
// move the enemy using the next pattern element of the current pattern
ex+=patterns_x[current_pattern][pattern_element];
ey+=patterns_y[current_pattern][pattern_element];
// are we done doing pattern
if (++pattern_element==20)
{
pattern_element = 0;
doing_pattern = 0;
} // end if done doing pattern
} // end else do pattern
// end brain
// draw dots
_setcolor(9);
_setpixel(px,py);
_setcolor(12);
_setpixel(ex,ey);
// wait a bit
Timer(1);
} // end while
_setvideomode(_DEFAULTMODE);
} // end main
_________________________________________________________________________
Љ®Ј¤ ўл § ЇгбвЁвҐ Їа®Ја ¬¬г Ё§ ‹ЁбвЁЈ 13.2, в® Ї®©¬ҐвҐ, Ї®зҐ¬г п §ў «
ҐҐ "Њге ". ’®зЄ , ЎҐЈ ой п Ї® нЄа г Ё ў б ¬®¬ ¤Ґ«Ґ Ї®¬Ё Ґв ¬гег. Ћ
ЇаЁЎ«Ё¦ Ґвбп Є ў ¬ Ё ў¤агЈ зЁ Ґв Ўлбва® «Ґв вм ў®ЄагЈ. € в Є®Ґ Ї®ўҐ¤ҐЁҐ
ЇҐаб® ¦ ў®Ї«®йҐ® ўбҐЈ® ў ҐбЄ®«мЄЁе бва®Є е Їа®Ја ¬¬л б ЇаЁ¬ҐҐЁҐ¬
®ЇЁб ле ўлиҐ «Ј®аЁв¬®ў. (ѓ¬, в Є Є Є ўл ¤г¬ ҐвҐ, ¬®¦Ґв Ўлвм «о¤Ё - нв® Ё
ў б ¬®¬ ¤Ґ«Ґ Є®¬Ї«ҐЄб ¤Ґ©бвўЁ© Ё ॠЄжЁ©?)
’ҐЇҐам а бᬮваЁ¬ б«гз ©лҐ ЇҐаҐ¤ўЁ¦ҐЁп.
‘«гз ©лҐ ЇҐаҐ¤ўЁ¦ҐЁп
--------------------------------
—в® п Ї®Ё¬ о Ї®¤ б«гз ©л¬ ЇҐаҐ¤ўЁ¦ҐЁҐ¬? ќв® ўлЇ®«ҐЁҐ ЇҐаб® ¦Ґ¬
Є Є®Ј®-ЁЎг¤м б®ўҐа襮 ҐЇаҐ¤бЄ §гҐ¬®Ј® ¤Ґ©бвўЁп. ЌҐзв® Ї®¤®Ў®Ґ ¬л 㦥
ᤥ« «Ё ў Їа®Ја ¬¬Ґ Ё§ ‹ЁбвЁЈ 13.2. Ћ¤ Є®, ¬л ¬®¦Ґ¬ а биЁаЁвм нвг
Є®жҐЇжЁо Ґ в®«мЄ® ўлЎЁа п бЇ®б®Ў ॠЈЁа®ў Ёп, ® Ё ®ЇаҐ¤Ґ«пп, г¦ «Ё
ॠЄжЁп Є Є в Є®ў п. Џ®зҐ¬г Ўл ¬ Ґ ¤®Ў ўЁвм ҐйҐ ®¤Ё вЁЇ Ї®ўҐ¤ҐЁп 襩
"ЊгеҐ" - б«гз ©®Ґ ЇаҐ¤ўЁ¦ҐЁҐ.
‘«гз ©лҐ ЇҐаҐ¬ҐйҐЁп ЁбЇ®«м§говбп ў® ¬®ЈЁе ўЁ¤Ґ®ЁЈа е Є Є ®¤Ё Ё§
бЇ®б®Ў®ў ॠЈЁа®ў Ёп ўЁавг «м®Ј® ¬Ёа ¤Ґ©бвўЁп ЁЈа®Є . ’ Є®© ®Ўа §
¤Ґ©бвўЁ© ¬®¦® §ў вм "Ґпў®© «®ЈЁЄ®©". ЌҐпў п «®ЈЁЄ Ї®¬®Ј Ґв ЇаЁпвм
аҐиҐЁҐ ЇаЁ ®вбгвбвўЁЁ з бвЁ Ґ®Ўе®¤Ё¬®© Ёд®а¬ жЁЁ, Ё«Ё ў®®ЎйҐ Ёд®а¬ жЁЁ
Є Є в Є®ў®©.
‚ ўЁ¤Ґ®ЁЈа е ¬л ¬®¦Ґ¬ ЁбЇ®«м§®ў вм б«гз ©лҐ ЇҐаҐ¬ҐйҐЁп Ё Ґпўго «®ЈЁЄг
¤«п ўлЎ®а ва ҐЄв®аЁ© Ё«Ё ¤Ґ©бвўЁ© иЁе ᮧ¤ Ё©.
- 518 -
Љ ЇаЁ¬Ґаг, Є®Ј¤ ўл бв «ЄЁў ҐвҐбм б аҐиҐЁҐ¬ ҐЄ®в®а®Ј® ў®Їа®б , в Є®Ј® Є Є
®Ўе®¤ ЇаҐЇпвбвўЁп, ў®§ЁЄиҐЈ® ў 襬 ЇгвЁ, ўл Ї®Їлв ҐвҐбм Ё§ЎҐ¦ вм
ўбваҐзЁ б Ё¬, ¤ўЁЈ пбм Їа ў® Ё«Ё «Ґў®. …б«Ё ўбҐ ў аЁ вл а ўл ¬Ґ¦¤г
б®Ў®© Ё ®¤Ё Є®ў® ў®§¬®¦л, аҐиҐЁҐ, ᪮॥, б«гз ©® Ё, б«Ґ¤®ў ⥫м®,
пў«пҐвбп "Ґпўл¬ аҐиҐЁҐ¬". …б«Ё Ўл Єв®-ЁЎг¤м бЇа®бЁ« ў б, ЇаЁ¬Ґа,
Ї®зҐ¬г ўл аҐиЁ«Ё ®Ў®©вЁ бв®«Ў бЇа ў , Ґ б«Ґў , в® ўап¤ «Ё ўл б㬥«Ё Ўл
ўпв® ®ЎкпбЁвм ¬®вЁўл бў®ҐЈ® Ї®ўҐ¤ҐЁп. ‚ ¤агЈ®¬ б«гз Ґ ¬л ¬®¦Ґ¬
ЁбЇ®«м§®ў вм б«гз ©лҐ ЇҐаҐ¬ҐлҐ ¤«п ўлЎ®а Їа ў«ҐЁп ¤ўЁ¦ҐЁп 襩
¬ «ҐмЄ®© "ЊгеЁ". Ђ«Ј®аЁв¬ 13.5 ᮧ¤ Ґв ¬ «ҐмЄго в®зЄг, Є®в®а®© ⥯Ґам
Ї®« Ј Ґвбп «Ґв вм, ¤ўЁЈ пбм ў б«гз ©®¬ Їа ў«ҐЁЁ.
Ђ«Ј®аЁв¬ 13.5. ‘«гз ©®Ґ ЇҐаҐ¤ўЁ¦ҐЁҐ.
__________________________________________________________________________
while (Ё¤Ґв ЁЈа )
{
... Є®¤ Їа®Ја ¬¬л
if (ЇҐаҐ¬ҐйҐЁҐ в®зЄЁ Ї® ⥪г饩 ва ҐЄв®аЁЁ § Є®зҐ®) then
{
ўлЎ®а ®ў®© ва ҐЄв®аЁЁ, Ёл¬Ё б«®ў ¬Ё,
ўлЎЁа Ґ¬ ®ўл© д Єв®а ЇаҐ®Ўа §®ў Ёп Є®®а¤Ё в
}
¤ўЁЈ Ґ¬ в®зЄг ҐбЄ®«мЄ® а § Ї® ®ў®© ва ҐЄв®аЁЁ
... Є®¤ Їа®Ја ¬¬л
}
_________________________________________________________________________
Ђ«Ј®аЁв¬ 13.5 ¬®¤Ґ«ЁагҐв "ЈагЎл© а §г¬", Є®в®ал© ўлЎЁа Ґв Їа ў«ҐЁҐ
¤ «мҐ©иҐЈ® ¤ўЁ¦ҐЁп б«гз ©л¬ ®Ўа §®¬. Ќ ЇЁиҐ¬ Їа®Ја ¬¬г, Є®в®а п ᮧ¤ Ґв
®¤Ё®Є® «Ґвпйго в®зЄг ў Їа®бва б⢥ б Ї®¬®ймо нв®Ј® «Ј®аЁв¬ . Џ®б¬®ваЁ¬,
Є Є нв® а Ў®в Ґв, ЇаЁ¬ҐаҐ Їа®Ја ¬¬л Ё§ ‹ЁбвЁЈ 13.3.
‹ЁбвЁЈ 13.3. Ћ¤Ё®Є п ¬ге . (DFLY.C).
-------------------------------------------------------------------------
// I N C L U D E S////////////////////////////////////////////////////////////
#include <stdio.h>
#include <graph.h>
#include <math.h>
// G L O B A L S /////////////////////////////////////////////////////////////
unsigned int far *clock = (unsigned int far *)0x0000046C; // pointer to internal
// 18.2 clicks/sec
//////////////////////////////////////////////////////////////////////////////
Timer(int clicks)
{
// this function uses the internal time keeper timer i.e. the one that goes
// at 18.2 clicks/sec to to a time delay. You can find a 32 bit value of
// this timer at 0000:046Ch
unsigned int now;
// get current time
now = *clock;
// wait till time has gone past current time plus the amount we eanted to
// wait. Note each click is approx. 55 milliseconds.
while(abs(*clock - now) < clicks){}
} // end Timer
// M A I N ///////////////////////////////////////////////////////////////////
main()
{
int ex=160,ey=100; // starting position of fly
int curr_xv=1,curr_yv=0, // current translation factors
clicks=0; // times when the fly is done moving in the random
// direction
_setvideomode(_MRES256COLOR);
printf(" The Dumb Fly - Any key to Quit");
// main game loop
while(!kbhit())
{
// erase dots
_setcolor(0);
_setpixel(ex,ey);
// move the fly
// begin brain
// are we done with this direction
if (++clicks==20)
{
curr_xv = -5 + rand()%10; // -5 to +5
curr_yv = -5 + rand()%10; // -5 to +5
clicks=0;
} // end if time for a new direction
// move the fly
ex+=curr_xv;
ey+=curr_yv;
// make sure fly stays on paper
if (ex>319) ex=0;
if (ex<0) ex=319;
if (ey>199) ey=0;
if (ey<0) ey=199;
// end brain
// draw fly
_setcolor(12);
_setpixel(ex,ey);
// wait a bit
Timer(1);
} // end while
_setvideomode(_DEFAULTMODE);
} // end main
__________________________________________________________________________
„г¬ о, Ї®б«Ґ § ЇгбЄ Їа®Ја ¬¬л ўл б®Ј« бЁвҐбм б ⥬, зв® ¬л, Є®Ґж,
Ї®«гзЁ«Ё ўбҐ Ґ®Ўе®¤Ё¬®Ґ ¤«п ¬®¤Ґ«Ёа®ў Ёп «Ґв о饣® "а §г¬®Ј® бгйҐбвў ".
ЌҐбЄ®«мЄ® Їа®бвле Їа ўЁ«, и Ў«®л Ё б«гз ©лҐ зЁб« Ї®¬®Ј«Ё ¬ ᮧ¤ вм
¤®ў®«м® Їа ў¤®Ї®¤®Ўго Ё¬Ёв жЁо Ї®«Ґв ᥪ®¬®Ј®. ќв® Їа®бв® з㤥б®!
’ҐЇҐам бв «® ўаҐ¬п Ї®Ј®ў®аЁвм ® Є®Ґзле ўв®¬ в е.
- 521 -
ЉЋЌ…—Ќ›… Ђ‚’ЋЊЂ’›
Љ®ҐзлҐ ўв®¬ вл (ЉЂ) - Ў«Ё§ЄЁҐ ¤аг§мп б ¬ле а §®®Ўа §ле ¬Ґе Ё§¬®ў. ЋЁ
ж абвўгов ў ўЁав㠫쮬 Їа®бва б⢥ Є®¬ЇмовҐа®ў. ЉЂ ЁбЇ®«м§говбп ў
а §а Ў®вЄҐ ЇЇ а в®Ј® Ё Їа®Ја ¬¬®Ј® ®ЎҐбЇҐзҐЁп. Џ®бЄ®«мЄг ¬л Є®бг«Ёбм
нв®© ⥬л, бЄ ¦г, зв® ЉЂ - нв® Їа®Ја ¬¬® ¬®¤Ґ«Ёа㥬 п ¬ иЁ , Є®в®а п
¤ўЁ¦Ґвбп ®в б®бв®пЁп Є б®бв®пЁо, ®б®ўлў пбм ўе®¤ле ¤ ле. Ља®¬Ґ
в®Ј®, ЉЂ ®Ўлз® § Ї®¬Ё Ґв ўбҐ б®бв®пЁп, ў Є®в®але ® Ї®Ўлў «. Џ®б¬®ваЁвҐ
аЁб 13.3, Є®в®а®¬ Ё§®Ўа ¦Ґ ¤Ё Ја ¬¬ Їа®б⥩襣® ЉЂ. (—в® Ё¬Ґ®
нв®в ЉЂ ¤Ґ« Ґв - Ґ Ё¬ҐҐв ЁЄ Є®Ј® § 票п).
Љ Є ўЁ¤ЁвҐ, ЉЂ Ё¬ҐҐв Ў®а б®бв®пЁ©, ЇаҐ¤бв ў«Ґле Єаг¦Є ¬Ё Ё
®ЎкҐ¤ЁҐле ¤гЈ ¬Ё ЇҐаҐе®¤®ў ®в б®бв®пЁп Є б®бв®пЁо. ќвЁ ¤гЈЁ Ї®Є §лў ов
Їа ўЁ« , Ї® Є®в®ал¬ Їа®Ёб室пв ЇҐаҐе®¤л Ё§ ®¤®Ј® б®бв®пЁп ў ¤агЈ®Ґ.
ЉЂ ¬®Јгв Ўлвм ЁбЇ®«м§®ў л ў ўЁ¤Ґ®ЁЈа е Є Є ®¤Ё Ё§ ¬Ґв®¤®ў
ўлб®Є®га®ўҐў®Ј® гЇа ў«ҐЁп «®ЈЁЄ®©, б Ї®¬®ймо Є®в®а®Ј® ЇҐаҐ¤ овбп Є®¬ ¤л
"Ё§Є®га®ўҐў®© " «®ЈЁЄҐ.
’ Є ¦Ґ, Є Є и ¬®§Ј Ё¬ҐҐвЄ®аг, ЇҐаҐ¤ ойго иЁ ¦Ґ« Ёп ў Ў®«ҐҐ
Ё§Є®га®ўҐўлҐ ¬®в®алҐ ¤®«Ё ¬®§Ј ,ЉЂ ¬®¦Ґв Ўлвм ЁбЇ®«м§®ў ¤«п ЁЁжЁ жЁЁ,
гЇа ў«ҐЁп Ё ЇҐаҐеў в Ё§Є®га®ўҐўле ¤Ґ©бвўЁ©, ўлЇ®«пҐ¬ле Ё¬Ёв в®а®¬
¬®§Ј .
Љ Є ЇаЁ¬Ґа ¬л ¬®Ј«Ё Ўл ЁбЇ®«м§®ў вм ўбҐ, зв® ¬ 㦥 Ё§ўҐбв® ®
ЇаҐб«Ґ¤®ў ЁЁ, гЄ«®ҐЁЁ, и Ў«® е Ё б«гз ©ле ЇҐаҐ¤ўЁ¦ҐЁпе ¤«п
Є®бвагЁа®ў Ёп ЉЂ,
ђЁб.13.3. ЋЎй п б奬 ЉЂ.
- 522 -
ђЁб.13.4. ЂЎбва Євл© ўЁ¤ ЉЂ б в®зЄЁ §аҐЁп ¬®¤Ґ«Ё ЁЈал.
бЇ®б®Ў®Ј® ЇҐаҐе®¤Ёвм ®в б®бв®пЁп Є б®бв®пЁо, Є ¦¤®Ґ Ё§ Є®в®але ўлЇ®«пҐв
®¤г Ё§ ЇҐаҐзЁб«Ґле дгЄжЁ©.
’ҐЇҐам г б Ґбвм Ў®а аҐиҐЁ©, зв®Ўл ®вўҐвЁвм ў®Їа®бл:
- Љ Є п ЇаЁзЁ § бв ўЁв ЉЂ Ё§¬ҐЁвм бў®Ґ б®бв®пЁҐ?
- Љ Є § бв ўЁвм ЉЂ ўлЎа вм б«Ґ¤го饥 б®бв®пЁҐ?
ќв® е®а®иЁҐ ў®Їа®бл - Ї®б¬®ваЁ¬, Є Є ўлЈ«п¤пв ўЁ¤Ґ®ЁЈал Ё§гваЁ. ‚§Ј«пЁвҐ
аЁб.13.4. Ќ Ґ¬ Ї®Є § ® Ўбва Єв®Ґ ЇаҐ¤бв ў«ҐЁҐ ҐЄ®в®а®Ј® ЉЂ,
Їа ў¤ , Ї®Є ҐйҐ ЎҐ§ «®ЈЁЄЁ ᬥл б®бв®пЁ©.
Љ®Ґзл© ўв®¬ в, гЇа ў«пҐ¬л© ®Єаг¦ о饩 б।®©
------------------------------------------------------------
’ҐЇҐам бвгЇ Ґв ЇаЁпв п з бвм. Њл ¬®¦Ґ¬ ᮧ¤ вм ЉЂ, ў Є®в®а®¬ б®бв®пЁп
ЇҐаҐе®¤ ЇаҐ¤бв ў«Ґл а冷¬ ЇҐаҐ¬Ґле. „агЈЁ¬Ё б«®ў ¬Ё, ¬л гЇа ў«пҐ¬
Є®Ґзл¬ ўв®¬ ⮬ б Ї®¬®ймо б ¬®© ЁЈа®ў®© б।л, ў Є®в®а®© ® 室Ёвбп,
в Є ¦Ґ, Є Є и б®ЎбвўҐл© ¬®§Ј ॠЈЁагҐв ®Єаг¦ ойго ®Ўбв ®ўЄг.
- 523 -
Ќ 祬 ᮧ¤ ў вм ЉЂ б в®Ј®, зв® ® Ўг¤Ґв б«гз ©л¬ ®Ўа §®¬ ўлЎЁа вм ®¤® Ё§
Ё¦ҐЇҐаҐзЁб«Ґле б®бв®пЁ©:
- ЇаҐб«Ґ¤®ў ЁҐ;
- гЄ«®ҐЁҐ;
- б«гз ©®Ґ;
- и Ў«®.
Ќ® ў бв®п饩 ЁЈаҐ ¤«п гЇа ў«ҐЁп б®бв®пЁҐ¬ ЉЂ ў¬Ґбв® б«гз ©ле зЁбҐ«
Ўл«® Ўл «гзиҐ ЇаЁў«Ґзм б ¬г ЁЈа®ўго бЁвг жЁо. ЌЁ¦Ґ ЇаЁўҐ¤Ґ ЇаЁ¬Ґа ЉЂ,
¤Ґ©вўго饣® Ї® ®Ўбв®п⥫мбвў ¬:
- …б«Ё ЁЈа®Є Ў«Ё§Є®, ЉЂ ЇҐаҐЄ«оз Ґвбп ў б®бв®пЁҐ Ў«®;
- …б«Ё ЁЈа®Є ¤ «ҐЄ®, ¬®¦® § бв ўЁвм ЏЉ ®е®вЁвмбп § Ё¬, ЁбЇ®«м§гп
б®бв®пЁҐ ЏаҐб«Ґ¤®ў ЁҐ;
- …б«Ё ЁЈа®Є ®ЎагиЁ« иҐ ¬ «ҐмЄ®Ґ ᮧ¤ ЁҐ иЄў «мл© ®Ј®м, ЉЂ
¬®¬Ґв «м® ЇҐаҐе®¤Ёв ў б®бв®пЁҐ “Є«®ҐЁҐ;
- Ќ Є®Ґж, ЇаЁ «оЎ®© Ё®© бЁвг жЁЁ ЉЂ ®ва Ў влў Ґв б®бв®пЁҐ ‘«гз ©®Ґ.
ђЁб.13.5 ¤Ґ¬®бваЁагҐв Ї®¤®Ў®Ґ Ї®ўҐ¤ҐЁҐ Є®Ґз®Ј® ўв®¬ в .
ђЁб.13.5. ЉЂ, гЇа ў«пҐ¬л© ®Єаг¦ о饩 б।®©.
- 524 -
ЏҐаҐ©¤Ґ¬ Є Їа®Ја ¬¬®© ॠ«Ё§ жЁЁ ®ЇЁб ®Ј® ЉЂ. Њл Ґ бв Ґ¬ ᮧ¤ ў вм
б«®¦®Ґ ЁЈа®ў®Ґ Їа®бва бвў®. „«п ¤Ґ¬®бва жЁЁ ¬ ¤®бв в®з® Ё¬Ґвм зЁбвл©
нЄа б Ї а®© в®зҐЄ, Ё§®Ўа ¦ ойЁе ЁЈа®Є Ё Їа®вЁўЁЄ . —в®Ўл Ї®пвм бгвм,
нв®Ј® ўЇ®«Ґ ¤®бв в®з®. Џа®Ја ¬¬ Ё§ ‹ЁбвЁЈ 13.4 ¬®¤Ґ«ЁагҐв Ї®«Ґв
¤Ґ©бвўЁвҐ«м® §®©«Ёў®© ¬геЁ, Є®в®а п ЎгЄў «м® § Ґ¤ Ґв ЁЈа®Є .
‹ЁбвЁЈ 13.4. “¬ п "Њге " (BFLY.C).
_______________________________________________________________________
// I N C L U D E S////////////////////////////////////////////////////////////
#include <stdio.h>
#include <graph.h>
#include <math.h>
// D E F I N E S ////////////////////////////////////////////////////////////
#define STATE_CHASE 1
#define STATE_RANDOM 2
#define STATE_EVADE 3
#define STATE_PATTERN 4
// G L O B A L S /////////////////////////////////////////////////////////////
unsigned int far *clock = (unsigned int far *)0x0000046C; // pointer to internal
// 18.2 clicks/sec
// the x and y components of the patterns that will be played, I just made
// them up
int patterns_x[3][20]= { 1,1,1,1,1,2,2,-1,-2,-3,-1,0,0,1,2,2,-2,-2,-1,0,
0,0,1,2,3,4,5,4,3,2,1,3,3,3,3,2,1,-2,-2,-1,
0,-1,-2,-3,-3,-2,-2,0,0,0,0,0,0,1,0,0,0,1,0,1 };
int patterns_y[3][20] = { 0,0,0,0,-1,-1,-1,-1,-1,0,0,0,0,0,2,2,2,2,2,2,
1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,0,0,0,0,
1,1,1,2,2,-1,-1,-1,-2,-2,-1,-1,0,0,0,1,1,1,1,1 };
//////////////////////////////////////////////////////////////////////////////
Timer(int clicks)
{
// this function uses the internal time keeper timer i.e. the one that goes
// at 18.2 clicks/sec to to a time delay. You can find a 32 bit value of
// this timer at 0000:046Ch
unsigned int now;
// get current time
now = *clock;
// wait till time has gone past current time plus the amount we eanted to
// wait. Note each click is approx. 55 milliseconds.
while(abs(*clock - now) < clicks){}
} // end Timer
// M A I N ///////////////////////////////////////////////////////////////////
main()
{
int px=160,py=100, // starting position of player
ex=0,ey=0, // starting position of enemy
curr_xv,curr_yv; // velocity of fly during random walk
int done=0, // exit flag
doing_pattern=0, // flags if a pattern is being executed
current_pattern, // curent pattern 0-2 that is being done by brain
pattern_element, // current element of pattern being executed
select_state=0, // flags if a state transition needs to take place
clicks=20, // used to time the number of cycles a state stays active
fly_state = STATE_CHASE; // start fly off in chase state
float distance; // used to hold distance between fly and player
_setvideomode(_MRES256COLOR);
printf(" Brainy Fly - Q to Quit");
// main game loop
while(!done)
{
// erase dots
_setcolor(0);
_setpixel(px,py);
_setpixel(ex,ey);
// move player
if (kbhit())
{
// which way is player moving
switch(getch())
{
case 'u': // up
{
py-=2;
} break;
case 'n': // down
{
py+=2;
} break;
case 'j': // right
{
px+=2;
} break;
case 'h': // left
{
px-=2;
} break;
case 'q':
{
done=1;
} break;
} // end switch
} // end if player hit a key
// move enemy
// begin brain
// what state is brain in let FSM sort it out
switch(fly_state)
{
case STATE_CHASE:
{
_settextposition(24,2);
printf("current state:chase ");
// make the fly chase the player
if (px>ex) ex++;
if (px<ex) ex--;
if (py>ey) ey++;
if (py<ey) ey--;
// time to go to another state
if (--clicks==0)
select_state=1;
} break;
case STATE_RANDOM:
{
_settextposition(24,2);
printf("current state:random ");
// move fly in random direction
ex+=curr_xv;
ey+=curr_yv;
// time to go to another state
if (--clicks==0)
select_state=1;
} break;
case STATE_EVADE:
{
_settextposition(24,2);
printf("current state:evade ");
// make fly run from player
if (px>ex) ex--;
if (px<ex) ex++;
if (py>ey) ey--;
if (py<ey) ey++;
// time to go to another state
if (--clicks==0)
select_state=1;
} break;
case STATE_PATTERN:
{
_settextposition(24,2);
printf("current state:pattern ");
// move the enemy using the next pattern element of the current pattern
ex+=patterns_x[current_pattern][pattern_element];
ey+=patterns_y[current_pattern][pattern_element];
// are we done doing pattern
if (++pattern_element==20)
{
pattern_element = 0;
select_state=1;
} // end if done doing pattern
} break;
default:break;
} // end switch fly state
// does brain want another state ?
if (select_state==1)
{
// select a state based on the envoronment and on fuzzy logic
// uses distance from player to selct a new state
distance = sqrt(.5 + fabs((px-ex)*(px-ex) + (py-ey)*(py-ey)));
if (distance > 5 && distance <15 && rand()%2==1)
{
// get a new random pattern
current_pattern = rand()%3;
// set brain into pattern state
fly_state = STATE_PATTERN;
pattern_element = 0;
} // end if close to player
else
if (distance < 10) // too close let's run!
{
clicks=20;
fly_state = STATE_EVADE;
} // else if too close
else
if (distance > 25 && distance <100 && rand()%3==1) // let's chase player
{
clicks=15;
fly_state = STATE_CHASE;
} // end if chase player
else
if (distance > 30 && rand()%2==1)
{
clicks=10;
fly_state = STATE_RANDOM;
curr_xv = -5 + rand()%10; // -5 to +5
curr_yv = -5 + rand()%10; // -5 to +5
} // end if random
else
{
clicks=5;
fly_state = STATE_RANDOM;
curr_xv = -5 + rand()%10; // -5 to +5
curr_yv = -5 + rand()%10; // -5 to +5
} // end else
// reset need another state flag
select_state=0;
} // end if we need to change to another state
// make sure fly stays on paper
if (ex>319) ex=0;
if (ex<0) ex=319;
if (ey>199) ey=0;
if (ey<0) ey=199;
// end brain
// draw dots
_setcolor(9);
_setpixel(px,py);
_setcolor(12);
_setpixel(ex,ey);
// wait a bit
Timer(1);
} // end while
_setvideomode(_DEFAULTMODE);
} // end main
_________________________________________________________________________
‡ ЇгбвЁў Їа®Ја ¬¬г, ўл ўҐапЄ ®Ўа вЁвҐ ўЁ¬ ЁҐ Є ¦гйгобп б«®¦®бвм
Ї®ўҐ¤ҐЁп "ЊгеЁ". Ђ ўҐ¤м ¤«п Ї®«г票п в Є®Ј® १г«мв в ЁбЇ®«м§®ў
ўҐбм¬ Їа®бв п б奬 ! ‚®§¬®¦®, Ё ўл § ¬ҐвЁвҐ в®, зв® гўЁ¤Ґ« п - згвм «Ё Ґ
祫®ўҐзҐбЄго бЇ®б®Ў®бвм ¬лб«Ёвм.
“Їа ў«ҐЁҐ ЇаЁ®аЁвҐвл¬ б®бв®пЁҐ¬
------------------------------------------
Њ®¦® ҐйҐ гб®ўҐаиҐбвў®ў вм и ЉЂ, Ґб«Ё ўўҐбвЁ гЇа ў«ҐЁҐ ᬥ®© б®бв®пЁ©
б Ї®¬®ймо ҐЄ®в®але ЇҐаҐ¬Ґле Ё дгЄжЁ©. Ќ Їа ЄвЁЄҐ нв® ®§ з Ґв
ў®§¬®¦®бвм Ё§¬ҐҐЁп ⥪г饣® ०Ё¬ , Ґ ¤®¦Ё¤ пбм Ї®«®Ј® § ўҐа襨п
Їа®Ја ¬¬л, ®вўҐз о饩 § ҐЈ® ўлЇ®«ҐЁҐ.
‚ Ё¬Ёв в®аҐ ¤ўЁ¦ҐЁп "ЊгеЁ" Є ¦¤®Ґ б®бв®пЁҐ ўлЇ®«п«®бм ¤® Ї®«®Ј®
§ ўҐа襨п. Ќ® Ґб«Ё ўЄ«озЁвм ў Їа®Ја ¬¬г Їа®ўҐаЄг ўлЇ®«ҐЁп Ё«Ё
ҐўлЇ®«ҐЁп ҐЄ®в®але гб«®ўЁ©, нв® Ї®§ў®«Ё«® Ўл ЉЂ "ўлЇалЈгвм" Ё§
б®бв®пЁп, Ґ ¤®¦Ё¤ пбм ®Є®з Ёп ҐЈ® "®ва Ў®вЄЁ".
ќвЁ¬ § Є зЁў Ґвбп и а §Ј®ў®а ® Є®Ґзле ўв®¬ в е, Є®в®алҐ ¬®Јгв Ўлвм
ЁбЇ®«м§®ў л ў иЁе ЁЈа е ¤«п ¬®¤Ґ«Ёа®ў Ёп Ї®ўҐ¤ҐЁп бгйҐбвў Ё ЇаЁ¤ Ёп
Ё¬ ўЁ¤Ё¬®бвЁ «ЁзЁп ЁвҐ««ҐЄв . ’ҐЇҐам Є Ё¬Ґо饩бп г б бЁб⥬Ґ
ўлб®Є®га®ўҐў®Ј® гЇа ў«ҐЁп Ґ Ї®¬Ґи Ґв ¤®Ў ўЁвм Ё§Є®га®ўҐў®Ґ
дгЄжЁ®Ёа®ў ЁҐ.
‚Ґа®пв®бвлҐ ўв®¬ вл
-------------------------------
Ќ ўҐа®Ґ, ўл 㦥 Ї®п«Ё, Є Є ўҐа®пв®бвм Ё б«гз ©лҐ зЁб« ¬®Јгв Ўлвм
ЁбЇ®«м§®ў л ¤«п ўлЎ®а Їа ў«ҐЁ© Ё б®бв®пЁ©. Њл гзЁ«Ёбм ЁбЇ®«м§®ў вм
б«гз ©лҐ Ї®«Ґ¤®ў ⥫м®бвЁ ¤«п Є®бвагЁа®ў Ёп "е а ЄвҐа " ЇҐаб® ¦Ґ©. џ
Ё¬Ґо ў ўЁ¤г, зв® "Њге " ў 襬 ЇаҐ¤л¤г饬 ЇаЁ¬ҐаҐ ¬®Ј« б ¬®бв®п⥫м®
ўлЎЁа вм а §«ЁзлҐ б®бв®пЁп, ®б®ўлў пбм ®Єаг¦ о饩 ®Ўбв ®ўЄҐ. …б«Ё
ҐбЄ®«мЄ® Ё§¬ҐЁвм ¬Ґв®¤ ўлЎ®а б®бв®пЁ©, ®б®ў л©
- 531 -
ЈҐҐа жЁЁ б«гз ©ле зЁбҐ« (в® Ґбвм, ᮧ¤ ў вм гб«®ўЁп, ЇаЁ Є®в®але ўе®¤ ў
®ЇаҐ¤Ґ«Ґ®Ґ б®бв®пЁҐ бв « Ўл «ҐЈзҐ Ё«Ё в殮«ҐҐ), в®, ў Є®Ґз®¬ бзҐвҐ,
¬ г¤ «®бм Ўл Ё§¬ҐЁвм "е а ЄвҐа" "ЊгеЁ".
‘Є ¦Ґ¬, ¬ § е®вҐ«®бм Ё¬Ґвм ў ЁЈаҐ ¤ўҐ "¬геЁ". …б«Ё ®¤г Ё вг ¦Ґ Їа®Ја ¬¬г
ЁбЇ®«м§®ў вм ¤«п ᮧ¤ Ёп ва ҐЄв®аЁЁ ¤ўЁ¦ҐЁп Є ¦¤®© "¬геЁ", ®Ё Ўл
¤Ґ©бвў®ў «Ё ®¤Ё Є®ў®. ‚® ¬®ЈЁе б«гз пе Ў®«м襣® Ё Ґ вॡгҐвбп. Ћ¤ Є®
Ј®а §¤® ЁвҐаҐбҐ© Ё¬Ґвм ¬®Ј® "¬ге" б ҐЎ®«миЁ¬Ё а §«ЁзЁп¬Ё ў Ї®ўҐ¤ҐЁЁ.
ќв® ¬®¦® Ўл«® Ўл ॠ«Ё§®ў вм Ё§¬ҐҐЁҐ¬ ¤Ё Ї §® б«гз ©ле зЁбҐ« ў® ўбҐе
бва®Є е Їа®Ја ¬¬л, Ј¤Ґ ўлЎЁа овбп б®бв®пЁп "¬геЁ". Ќ® в Є®© Ї®¤е®¤ Ўг¤Ґв
®зҐм ЈагЎл¬. Њл Ї®©¤Ґ¬ ¤агЈЁ¬ Їг⥬ - Їг⥬ ᮧ¤ Ёп ®ЎйҐЈ® ¬Ґв®¤
гЇа ў«ҐЁп е а ЄвҐа®¬ ЇҐаб® ¦Ґ©, ®б®ў ®Ј® ўҐа®пв®бвЁ.
‚ ЁбЄгбб⢥®¬ ЁвҐ««ҐЄвҐ "Ё¤ЁўЁ¤г «м®бвм" ®§ з Ґв ў®§¬®¦®бвм бгйҐбвў
Ї®-а §®¬г ўлЇ®«пвм ®ЇаҐ¤Ґ«ҐлҐ ¤Ґ©бвўЁп ЇаЁ ®¤Ёе Ё вҐе ¦Ґ
®Ўбв®п⥫мбвў е. Ќ ЇаЁ¬Ґа, г ¬Ґп Ґбвм ҐбЄ®«мЄ® ¤®бв в®з®
¤а㧥©, Є®в®алҐ § е®вҐ«Ё Ўл б«ҐЈЄ Їа®гзЁвм Ї«гв , Ї®Їл⠢襣®бп Ёе ¤гвм.
Ќ® г ¬Ґп в Є¦Ґ Ґбвм ¤аг§мп, Є®в®алҐ Ў®«ҐҐ бЇ®Є®©л Ё ЇаҐ¤Ї®зЁв ов б з «
¤г¬ вм, Ї®в®¬ ¤Ґ©бвў®ў вм. ‘Є®аҐҐ ўбҐЈ®, ¬®иҐЁЄг г¤ «®бм Ўл Є Є-в® б
Ё¬Ё ¤®Ј®ў®аЁвмбп. ’®, зв® ¬л ўЁ¤Ё¬ ¤ ®¬ ЇаЁ¬ҐаҐ, Ё пў«пҐвбп
"Ё¤ЁўЁ¤г «м®бвмо".
Љ ЄЁ¬ Ё¬Ґ® бЇ®б®Ў®¬ нв® Ўг¤Ґв ¤®бвЁЈгв®, Ґ ЇаЁжЁЇЁ «м®, ў ¦Ґ
Є®Ґзл© аҐ§г«мв в.
‚ ўЁ¤Ґ®ЁЈа е ¬л ¬®Ј«Ё Ўл Ё¬Ґвм ҐбЄ®«мЄ® Їа®вЁўЁЄ®ў, Є®в®алҐ Ї®бв®п®
ЇаҐб«Ґ¤гов б, Ї®Є ¤агЈЁҐ ў нв® ўаҐ¬п ҐЇ®¤ўЁ¦л Ё бв५пов. ’аҐвмЁ
вагб«Ёўл Ё ЇаҐ¤Ї®зЁв ов гЎҐЈ вм, Ґ ба ¦ вмбп. Ђ «Ё§Ёагп бЁвг жЁо, ¬л
ўЁ¤Ё¬, зв® Ё¬ҐҐвбп ўбҐ в®в ¦Ґ Ў®а б®бв®пЁ©, ® ўҐа®пв®бвЁ ЇҐаҐе®¤ ў
Ёе а §«Ёзл ¤«п Є ¦¤®Ј® б®бв®пЁп. „«п ¬®¤Ґ«Ёа®ў Ёп нв®Ј® Їа®жҐбб ¬л
¬®Ј«Ё Ўл б®б« вмбп "в Ў«Ёжг ўҐа®пв®б⥩" ў в®© з бвЁ Їа®Ја ¬¬л, Є®в®а п
ўлЎЁа Ґв ®ў®Ґ б®бв®пЁҐ. ќв в Ў«Ёж ¬®Ј« Ўл ᮤҐа¦ вм а §«ЁзлҐ б⥯ҐЁ
ўҐа®пв®бвЁ ЇҐаҐе®¤®ў бгйҐбвў ў в® Ё«Ё Ё®Ґ б®бв®пЁҐ. Љ ЇаЁ¬Ґаг, ў§Ј«пЁвҐ
в Ў«.13.1, ў Є®в®а®© ЇҐаҐзЁб«Ґл б®®в®иҐЁп ўҐа®пв®б⥩ ¤«п ваҐе
а §«Ёзле бгйҐбвў ў ®¤®© ЁЈаҐ.
’ Ў«Ёж 13.1. ђ бЇаҐ¤Ґ«ҐЁҐ ўҐа®пв®б⥩ ¤«п ваҐе бгйҐбвў ў ЁЈаҐ.
-------------------------------------------------------------------------
‘®бв®пЁҐ ‘гйҐбвў®1: ЂЁЈЁ«пв®а
(Ђ)Ђв Є 50%
(Џ)ЏаҐб«Ґ¤®ў ЁҐ 5%
(‘)‘«гз ©®Ґ 10%
(ђ)ђ®ҐЁҐ 20%
() Ў«® 15%
- 532 -
‘®бв®пЁҐ ‘гйҐбвў® 2: “¬ЁЄ
(Ђ)Ђв Є 20%
(Џ)ЏаҐб«Ґ¤®ў ЁҐ 30%
(‘)‘«гз ©®Ґ 20%
(ђ)ђ®ҐЁҐ 20%
() Ў«® 10%
‘®бв®пЁҐ ‘гйҐбвў® 3: •лЄ «Є
(Ђ)Ђв Є 5%
(Џ)ЏаҐб«Ґ¤®ў ЁҐ 60%
(‘)‘«гз ©®Ґ 20%
(ђ)ђ®ҐЁҐ 10%
() Ў«® 5%
________________________________________________________________________
Љ Є ўл ¬®¦ҐвҐ бг¤Ёвм Ї® а бЇаҐ¤Ґ«ҐЁо ўҐа®пв®б⥩, ЂЁЈЁ«пв®а
ЇаҐЁ¬гйҐб⢥® в ЄгҐв, •лЄ «Є ЇаҐ¤Ї®зЁв Ґв ЇаҐб«Ґ¤®ў ЁҐ, “¬ЁЄ -
зв®-в® б।ҐҐ ¬Ґ¦¤г Ё¬Ё. ЏаҐ¦¤Ґ 祬 ЇҐаҐ©вЁ Є а §Ј®ў®аг ® ॠ«Ё§ жЁЁ
ўҐа®пв®б⥩, п е®зг Ї®Ј®ў®аЁвм ҐйҐ ®Ў ®¤®¬ ЇаЁжЁЇҐ Ї®ўҐ¤ҐЁп ЁЈа®ўле
®ЎкҐЄв®ў - ® ஥ЁЁ. ђ®ҐЁҐ ®§ з Ґв, з⮠ᮧ¤ Ёп ў ЁЈаҐ бЎЁў овбп ў ЄгзЁ
Ё Їлв овбп Є Є-в® бЈагЇЇЁа®ў вмбп. ќв® Ї®е®¦Ґ в®, Є Є бв®пйЁҐ б®«¤ вл
Ё«Ё ᥪ®¬лҐ Ё®Ј¤ бв६пвбп б®Ўа вмбп ў¬Ґб⥠Ё ®бв вмбп а冷¬ ¤агЈ б
¤агЈ®¬.
‚ ¤Ґ©б⢨⥫м®бвЁ, нв® Ґ зв® Ё®Ґ, Є Є ўлЎ®а ®ЎйҐ© в®зЄЁ ўбваҐзЁ Ё
楫Ґгбв६«Ґ®Ґ ¤ўЁ¦ҐЁҐ Є Ґ©. Њл ¬®¦Ґ¬ ЁбЇ®«м§®ў вм в Є®© вЁЇ Ї®ўҐ¤ҐЁп
Є Є б®ўҐа襮 ®ў®Ґ б®бв®пЁҐ, ЇаЁ Є®в®а®¬ ᮧ¤ Ёп Є ¦гвбп
ЈагЇЇЁагойЁ¬Ёбп.
Њ®¤Ґ«Ёа®ў ЁҐ нв®Ј® б®бв®пЁп Ґ ®зҐм б«®¦®:
- ‚лЎа вм бгйҐбвў , Є®в®алҐ ўл е®вЁвҐ бЈагЇЇЁа®ў вм ў¬ҐбвҐ;
- ‚лЎа вм б।оо ®в®бЁвҐ«м® ўбҐе ᮧ¤ Ё© Ї®§ЁжЁо. ќв в®зЄ ў
Їа®бва б⢥ пў«пҐвбп жҐв஬ Ё ¬®¦Ґв Ўлвм ЁбЇ®«м§®ў ¤«п ўлзЁб«ҐЁп
ва ҐЄв®аЁ© ¤ўЁ¦ҐЁп ўбҐе ®ЎкҐЄв®ў, Є®в®алҐ б«Ґ¤гов Є Ґ©;
- ‚лзЁб«Ёвм ва ҐЄв®аЁо в Є, зв®Ўл Є ¦¤®Ґ ᮧ¤ ЁҐ б«Ґ¤®ў «® Є жҐваг.
‚ б®бв®пЁҐ ஥Ёп Ё¬ҐҐв б¬лб« ЇҐаҐе®¤Ёвм, Є®Ј¤ б«ЁиЄ®¬ ¬®Ј®
Їа®вЁўЁЄ®ў ў¤агЈ зЁ ов ®¤®ўаҐ¬Ґ® Ё§алЈ вм ®Ј®м, в®аЇҐ¤л Ё Їа®зЁҐ
б।бвў гЁз⮦ҐЁп. Ќ ўҐа®Ґ, «®ЈЁзҐҐ ўбҐЈ® ®ЎкҐ¤Ёпвм бгйҐбвў Ї® вЁЇ ¬.
Џ®б¬®ваЁ¬ аЁб.13.6, Є®в®а®¬ Ї®Є § ® ЈҐ®¬ҐваЁзҐбЄ®Ґ ЇаҐ¤бв ў«ҐЁҐ
஥Ёп.
- 533 -
ђЁб.13.6. ѓҐ®¬ҐваЁзҐбЄ®Ґ ЇаҐ¤бв ў«ҐЁҐ ஥Ёп.
ђЁб.13.7. ќў®«ожЁп 襣® ЁЈа®ў®Ј® ¬®§Ј .
- 534 -
’ҐЇҐам ЇҐаҐ©¤Ґ¬ Є ⮬г, Є Є ¬л ¬®Ј«Ё Ўл б®бв ўЁвм бЇа ў®злҐ в Ў«Ёжл
ўҐа®пв®б⥩. „ ў ©вҐ Ї®б¬®ваЁ¬ и ЁЈа®ў®© "¬®§Ј", Ё§®Ўа ¦Ґл©
аЁб.13.7, б ¤агЈ®© бв®а®л.
“ б Ґбвм ўлб®Є®га®ўҐў®Ґ гЇа ў«ҐЁҐ б®бв®пЁҐ¬, Є®в®а®Ґ ЁЁжЁЁагҐв ®ўлҐ
б®бв®пЁп, ®б®ўлў пбм б®бв®пЁЁ ®Єаг¦ о饩 баҐ¤л Ё ўҐа®пв®бвЁ. ќв®
®ў®Ґ б®бв®пЁҐ пў«пҐвбп "§ ¤Ґ©бвў®ў л¬ ў®ўҐ" б Ї®¬®ймо Ё§Є®га®ўҐў®Ј®
гЇа ў«ҐЁп б®бв®пЁҐ¬, Є®в®а®Ґ, ў Є®Ґз®¬ Ёв®ЈҐ, пў«пҐвбп «®Ј®¬
¬®в®а®© ¤®«Ё 祫®ўҐзҐбЄ®Ј® ¬®§Ј . ’ҐЇҐам ¬л ¤ўЁЈ Ґ¬бп Є ⮬г, зв®Ўл
¤®Ў ўЁвм ҐйҐ ®¤Ё га®ўҐм Є "¬®§Јг". ќв®в ®ўл© га®ўҐм ЇаЁЁ¬ Ґв ў®
ўЁ¬ ЁҐ Ё б®бв®пЁҐ ®Єаг¦ о饩 б।л, Ё а бЇаҐ¤Ґ«ҐЁҐ ўҐа®пв®бвЁ.
Ћв¤Ґ«м®Ґ а бЇаҐ¤Ґ«ҐЁҐ ўҐа®пв®бвЁ ¬®¦Ґв бгйҐбвў®ў вм ¤«п Є ¦¤®Ј®
ᮧ¤ Ёп, в Є зв® ¬л ¬®¦Ґ¬ Ї®«гзЁвм ¬®Ј® а §ле "«Ёз®б⥩" б ®¤®© Ё в®©
¦Ґ ®ЎйҐ© аеЁвҐЄвга®© "¤ўЁЈ ⥫쮣® жҐва ". ‘гйҐбвўгов ¬Ё««Ё а¤л Їг⥩
б®бв ў«ҐЁп бЇа ў®зле в Ў«Ёж ўҐа®пв®бвЁ. ‚ ¬ 㦮 ЇҐаҐзЁб«Ёвм ўбҐ
б®бв®пЁп, Є®в®алҐ Ґбвм ў ЁЈаҐ. Љ ЇаЁ¬Ґаг, Ўг¤Ґ¬ ЁбЇ®«м§®ў вм вҐ, Є®в®алҐ
¬л 㦥 Ё¬ҐҐ¬. ‚®в ®Ё:
- ЏаҐб«Ґ¤®ў ЁҐ;
- “Є«®ҐЁҐ;
- ‘«гз ©®Ґ;
- Ў«®;
- ђ®ҐЁҐ;
- ЌҐЇ®¤ўЁ¦®бвм.
џ ¤®Ў ўЁ« ҐйҐ б®бв®пЁҐ "ҐЇ®¤ўЁ¦®бвЁ", Ї®¤ Є®в®ал¬ Ї®¤а §г¬Ґў о Ї®«®Ґ
ЎҐ§¤Ґ©бвўЁҐ Їа®вЁўЁЄ . ќв® б®бв®пЁҐ ¬®¦Ґв Ї®Є § вмбп Ґ ЁвҐаҐбл¬, ® ў
१г«мв ⥠ўа Ј ўлЈ«п¤Ёв в Є, Ўг¤в® ® ¤г¬ Ґв, Ё«Ё Ї®¤¦Ё¤ Ґв ЁЈа®Є , зв®Ўл
ᤥ« вм ўлЇ ¤. ќв® ᮧ¤ Ґв ў ЁЈаҐ ҐЄ®в®а®Ґ Їа殮ЁҐ Ё ЎҐбЇ®Є®©бвў®.
Ќ ¬ Ґ®Ўе®¤Ё¬® ®ЇаҐ¤Ґ«Ёвм ЇҐаҐ¬ҐлҐ б®бв®пЁп ®Єаг¦ о饩 б।л, Є®в®алҐ
гЇа ў«пов иЁ¬Ё аҐиҐЁп¬Ё. ‘ нв®© 楫мо ¬®¦® § ¤ вм ¤ўҐ ЇҐаҐ¬ҐлҐ:
- „Ёбв жЁп ¤® ЁЈа®Є ;
- ‘®бв®пЁҐ Ё ў®®а㦥ЁҐ ЁЈа®Є : бв५пҐв Ё«Ё Ґв.
’ҐЇҐам ¬®¦® Ї®бва®Ёвм в Ў«Ёжл ўҐа®пв®б⥩. —в®Ўл ᤥ« вм нв®, § Ї®«Ё¬
¬ ббЁўл жЁда ¬Ё ®в 1 ¤® 6, Є®в®алҐ ЇаҐ¤бв ў«пов а §«ЁзлҐ б®бв®пЁп.
“ б Ї®«гзЁвбп в Ў«Ёж Ё§ 20 н«Ґ¬Ґв®ў. „«п ўлЎ®а б®бв®пЁп
Їа®Ё¤ҐЄбЁа㥬 в Ў«Ёжг б«гз ©л¬Ё зЁб« ¬Ё ®в 0 ¤® 19. Љ®Ґз®, Є®Ј¤ ¬л
ўлЎЁа Ґ¬ б«гз ©®Ґ зЁб«® в ЄЁ¬ бЇ®б®Ў®¬, Є Є Ї®Є § ® §¤Ґбм:
sel = rand()%20
зЁб« ®в 0 ¤® 19 Ї®«гз овбп а ў®жҐл¬Ё. ‚®§ЁЄ Ґв ў®Їа®б, Є Є ᤥ« вм
в Є, зв®Ўл ЇҐаҐЄ«о票Ґ ў в® Ё«Ё Ё®Ґ б®бв®пЁҐ Їа®Ёб室Ё«® з йҐ Ё«Ё ०Ґ?
€ зҐ, зв® ў ¬ ¤Ґ« вм, зв®Ўл § Ї®«Ёвм в Ў«Ёжг ⥬ а бЇаҐ¤Ґ«ҐЁҐ¬
ўҐа®пв®б⥩, Є®в®а®Ґ ўл ¦Ґ« ҐвҐ. Љ ЇаЁ¬Ґаг, ҐбвЁ ўл е®вЁвҐ Ї®«гзЁвм 50%
ЇаҐб«Ґ¤®ў Ёп, ў ¬ Ґ®Ўе®¤Ё¬® Ї®¬ҐбвЁвм ў в Ў«Ёжг 10 Ґ¤ЁЁж. …б«Ё ஥ЁҐ
¤®«¦® б®бв ў«пвм 20%, в® ў ¬ Ґ®Ўе®¤Ё¬® § ҐбвЁ ў в Ў«Ёжг зҐвлॠЇпвҐаЄЁ.
Ќ з «® ў 襩 в Ў«Ёжл ўлЈ«п¤Ґ«® Ўл ЇаЁ¬Ґа® в Є:
int table_1 [20] = {1,1,1,1,1,1,1,1,1,1,5,5,5,5,...
®бв «млҐ_б®бв®пЁп}
‘ в®зЄЁ §аҐЁп ¬ ⥬ вЁЄЁ ¬л ЁбЇ®«м§гҐ¬ ЇҐаҐ¬Ґго, Є®в®а п Ё¬ҐҐв а ў®Ґ
а бЇаҐ¤Ґ«ҐЁҐ ўҐа®пв®бвЁ ®в 0 ¤® 19, зв®Ўл ЇҐаҐЁ¤ҐЄбЁа®ў вм в Ў«Ёжг,
Є®в®а п ЇаҐ¤бв ў«пҐв б®Ў®© дгЄжЁо Ї«®в®бвЁ ўҐа®пв®бвЁ, Ј¤Ґ н«Ґ¬Ґв
Ё¤ҐЄбЁагҐв б«Ґ¤го饥 б®бв®пЁҐ.
џ ¤Ґобм, зв® ўл Ї®Ё¬ ҐвҐ, ® 祬 Ё¤Ґв аҐзм, ® ¤ ¦Ґ Ґб«Ё Ґв, в® Ї®ўҐамвҐ
¬Ґ - ўбҐ, ® 祬 ¬л Ј®ў®аЁ¬, ¤®ў®«м® Єагв®! ’ҐЇҐам, Є®Ј¤ ўл ўЁ¤ЁвҐ д®а¬г
бЇа ў®зле в Ў«Ёж, ¬л ¬®¦Ґ¬ Ї®Ј®ў®аЁвм бзҐв ўлЎ®а б®бв®пЁ©. Љ Є ўл
ўЁ¤Ґ«Ё ў Їа®Ја ¬¬Ґ "“¬ п ¬ге " (‹ЁбвЁЈ 13.4), ¤Ёбв жЁп ¤® ЁЈа®Є Ё
б«гз ©лҐ зЁб« Ўл«Ё ЁбЇ®«м§®ў л ¤«п ўлЎ®а б«Ґ¤го饣® б®бв®пЁп. Њл
Ї®¤®и«Ё Є ⮬г, зв®Ўл ᤥ« вм ¤«п нв®Ј® ¦Ґ § зЁвҐ«м® Ў®«миҐ. Њл Ўг¤Ґ¬
гзЁвлў вм Є Є ¤Ёбв жЁо, в Є Ё ў®®а㦥ЁҐ ЁЈа®Є ¤«п ўлЎ®а ®¤®© Ё§ ¤ўге
Ї«®в®б⥩ ўҐа®пв®бвЁ: ® ЁбЇ®«м§гҐвбп, Є®Ј¤ Їа®вЁўЁЄЁ ¤ «ҐЄ®, ¤агЈ п
- Є®Ј¤ ®Ё Ў«Ё§Є®.
ЏаЁ в Є®¬ Ї®¤е®¤Ґ ўбҐ¬Ё ўа Ј ¬Ё ЁбЇ®«м§гҐвбп в®«мЄ® ®¤ ¬®¤Ґ«м
"е а ЄвҐа ", ®, ў®бп а §®®Ўа §ЁҐ ў "Ё¤ЁўЁ¤г «м®бвм" Їа®вЁўЁЄ®ў, ¬л
ЎҐ§ ®б®Ўле ¤®Ї®«ЁвҐ«мле § ва в § ¬Ґв® ®Ў®Ј вЁ¬ ЁЈаг. ’ Є®© «Ј®аЁв¬
Ї®Є § Ё¦Ґ.
Ђ«Ј®аЁв¬ 13.6. €бЇ®«м§®ў ЁҐ Ї«®в®бвЁ ўҐа®пв®б⥩ ў ўлЎ®аҐ б®бв®пЁп.
-------------------------------------------------------------------------
table_1 = {1,1,1,2,2,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6};
table_2 = {1,1,2,2,2,2,3,3,3,3,3,3,4,4,5,5,5,5,5,6};
while (Ё¤Ґв ЁЈа )
{
... Є®¤ Їа®Ја ¬¬л
if (ўлЇ®«повбп Є®¬ ¤л ®¤®Ј® Ё§ б®бв®пЁ©)
{
...Їа®¤®«¦ вм Ёе ўлЇ®«ҐЁҐ
}
else // ‚лЎЁа Ґ¬ ®ў®Ґ б®бв®пЁҐ
{
if (а ббв®пЁҐ ¬Ґ¦¤г ЁЈа®Є®¬ Ё Їа®вЁўЁЄ®¬ > 100)
{
®ў®Ґ б®бв®пЁҐ=table_1[rand()%20];
}
else
{
if (а ббв®пЁҐ < 100 Ё ЁЈа®Є бв५пҐв)
{
®ў®Ґ б®бв®пЁҐ=table_2[rand()%20];
}
else //—Ёбв® б«гз ©л© ўлЎ®а
{
®ў®Ґ б®бв®пЁҐ=rand()%7;
} // Є®Ґж ®ЇҐа в®а else
} // Є®Ґж ўлЎ®а ®ў®Ј® б®бв®пЁп
} // Є®Ґж Ј« ў®Ј® жЁЄ« while
__________________________________________________________________________
- 536 -
‚®§¬®¦®, ҐЄ®в®алҐ ¤Ґ©бвўЁп ў иЁе ᮧ¤ Ё©, ॠ«Ё§гойЁе Ђ«Ј®аЁв¬ 13.6,
Ўг¤г⠢룫拉вм ¦гвЄ®ў в®, ® п Ј а вЁаго, зв® бЄгз® Ґ Ўг¤Ґв.
…б«Ё ўл 㢥«ЁзЁвҐ а §¬Ґал в Ў«Ёж ўҐа®пв®б⥩, в® г ў б Ї®пўЁвбп
ў®§¬®¦®бвм Ї®«гзЁвм ўЇ®«Ґ ЇаЁ«Ёзл© аҐ§г«мв в. „ «ҐҐ, ўл ¬®¦ҐвҐ ¤®Ў ўЁвм
ҐйҐ ҐбЄ®«мЄ® ®ЇҐа в®а®ў IF, гб«®¦Ёвм ®Єаг¦ ойго б।㠨, Є®Ґж,
㢥«ЁзЁвм Є®«ЁзҐбвў® в Ў«Ёж ¤«п ¤®бвЁ¦ҐЁп Ў®«м襣® а §®®Ўа §Ёп ў
е а ЄвҐа е ЇҐаб® ¦Ґ© ў 襩 ЁЈал.
‚® ўбпЄ®¬ б«гз Ґ, Ї®©¤Ґ¬ ¤ «миҐ. ‚ б«Ґ¤гойЁе а §¤Ґ« е ¬л Ўг¤Ґ¬ Ј®ў®аЁвм ®
⮬, зв® пў«пҐвбп з бвмо, Є Є п Ј®ў®ао, "н§®вҐаЁзҐбЄ®© Є®««ҐЄжЁЁ". ќв®
¤®ў®«м® ЁвҐаҐб®, е®вп Ё б®ўҐа襮 Ґ ЁбЇ®«м§говбп ў ЁЈа е ᥣ®¤п襣®
¤п. Ѓлвм ¬®¦Ґв, ЁЈал § ўва 襣® ¤п ®Їпвм ўҐагвбп Є нв®© Є®жҐЇжЁЁ.
ЏЂЊџ’њ € ЋЃ“—…Ќ€…
…б«Ё Ўл ¬Ґ Ўл«® 㦮 ®ЇаҐ¤Ґ«Ёвм вҐа¬Ёл "Ї ¬пвм" Ё "®Ўг票Ґ", п ўҐа®пв®
бЄ § « Ўл, зв® ®Ё пў«повбп бЇ®б®Ў®бвмо ЁбЇ®«м§®ў вм Їа®и«л© ®Їлв ¤«п
аҐиҐЁп ®ўле Їа®Ў«Ґ¬ ў¬Ґб⥠ᮠᯮᮡ®бвмо Є Ї«Ёў вм Ё ЁвҐаЇаҐвЁа®ў вм
®ўго Ёд®а¬ жЁо.
‚Ї®«Ґ ў®§¬®¦® ¤Ґ«Ёвм ᮧ¤ Ёп ў иЁе ЁЈа е бЇ®б®Ў®бвмо "гзЁвмбп" Ё
"§ Ї®¬Ё вм", е®вп Ё ў ¤®бв в®з® ЈагЎ®© д®а¬Ґ. ‚бҐ, зв® ¬ Ґ®Ўе®¤Ё¬®
ᤥ« вм, нв® ўўҐбвЁ ҐбЄ®«мЄ® ЇҐаҐ¬Ґле Ё ЁбЇ®«м§®ў вм Ёе ЇаЁ ўлЎ®аҐ
б®бв®пЁп Ё ў ¬®в®але дгЄжЁпе.
- 537 -
Љ ЇаЁ¬Ґаг, ¬л ¬®Ј«Ё Ўл Ї®§ў®«Ёвм Є ¦¤®¬г бгйҐбвўг ў 襩 ЁЈаҐ Ё¬Ґвм
ўгваҐоо Є авг ЁЈа®ў®Ј® Їа®бва бвў . …б«Ё Ўл бгйҐбвў®, ў®©¤п ў Є®¬ вг,
®Ў аг¦Ё«® в ¬ Єгзг ᬥа⥫мле ўа Ј®ў, в® ў б«Ґ¤гойЁ© а §, Є®Ј¤ ®®
ўе®¤Ёв ў Є®¬ вг, ¬л ¬®Ј«Ё Ўл 㢥«ЁзЁвм ҐЈ® ЈаҐббЁў®бвм. „агЈ®© ЇаЁ¬Ґа:
Ґб«Ё ў® ўаҐ¬п Ў®п ЁЈа®Є ¤ўЁЈ «бп ў«Ґў® Ё Ї®в®¬ бв५п«, ЁЈа®ўлҐ бгйҐбвў
¬®Ј«Ё Ўл § Ї®¬Ёвм нв® Їг⥬ ЁвҐаЇ®«пжЁЁ ва ҐЄв®аЁЁ ЁЈа®Є ў ®ЇаҐ¤Ґ«Ґ®¬
Їа ў«ҐЁЁ. ‹оЎлҐ ¤Ґ©бвўЁп, Є®в®алҐ ЁЈа®Є з йҐ ўбҐЈ® ЇаҐ¤ЇаЁЁ¬ Ґв, ¬®Јгв
Ўлвм ЁбЇ®«м§®ў л Їа®вЁў ҐЈ®, Ґб«Ё ¤Ґ«Ёвм ЁЈа®ўлҐ бгйҐбвў бЇ®б®Ў®бвмо
ЁбЇ®«м§®ў Ёп нв®© Ёд®а¬ жЁЁ ¤«п гб®ўҐаиҐбвў®ў Ёп б®Ўб⢥®© в ЄвЁЄЁ.
ќв® в®«мЄ® ҐбЄ®«мЄ® ЇаЁ¬Ґа®ў, ¤«п 祣® ¬®Јгв Ўлвм ЁбЇ®«м§®ў л Ї ¬пвм Ё
®Ўг票Ґ. ‚®®ЎйҐ, ўЇ®«Ґ ¬®¦® гзЁвм ЁЈаг § Ї®¬Ё вм Ёд®а¬ жЁо ® ў б ў
⮬ ¦Ґ ®ЎкҐ¬Ґ, ў Є®в®а®¬ ўл § Ї®¬Ё ҐвҐ Ёд®а¬ жЁо ®Ў ЁЈаҐ, § ⥬
ЁбЇ®«м§®ў вм Є®Ї«Ґл© ®Їлв Їа®вЁў ЁЈа®Є , е®вп нв® Ё ҐбЄ®«мЄ®
Ї®¬Ё Ґв б ¬®гЎЁ©бвў®.
Ђ‹ѓЋђ€’Њ› ЏЋ€‘ЉЂ. ‚›‘‹…†€‚ЂЌ€… €ѓђЋЉЂ
"Њ®§ЈЁ", Є®в®алҐ ¬л бЄ®бвагЁа®ў «Ё, Ї®«гзЁ«Ёбм ¤®бв в®з® г¬л¬Ё, в Є зв®
бгйҐбвў® ¤ ¦Ґ Ї®«гзЁ«® и б ўл¦Ёвм. € ⥯Ґам п е®зг Ї®Ј®ў®аЁвм ® ¤агЈ®©
¤®ў®«м® Їа®бв®© ўҐйЁ - Є Є ¤®«¦Ґ Ўлвм ®аЈ Ё§®ў Ї®ЁбЄ.
‚бЇ®¬Ё¬ ⥮аЁо ’Ґ§Ґп б ЊЁ®в ўа®¬. †Ё« Є®Ј¤ -в® ¤ ўл¬-¤ ў® ЊЁ®в ўа
(祫®ўҐЄ б Ј®«®ў®© ЎлЄ ), Є®в®ал© ЇаҐб«Ґ¤®ў « ’Ґ§Ґп. ‚ ®ЎйҐ¬, ’Ґ§Ґ© гЄа « г
ЊЁ®в ўа ... Ґ Ї®¬о в®з® - CD-ROM, Ё«Ё зв®-в® в ¬ ҐйҐ ... ’Ґ§Ґ© Ї®Ї « ў
«®ўгиЄг (ў ¤Ґ©б⢨⥫м®бвЁ, Ї®¤ап¤зЁЄ, Ї®бва®ЁўиЁ© ҐҐ, §лў « ҐҐ
« ЎЁаЁв®¬), ® гбЇҐ« ўлЎа вмбп аг¦г ЇаҐ¦¤Ґ, 祬 ЊЁ®в ўа ҐЈ® бвЁЈ.
‚®Їа®б б®бв®Ёв ў ⮬, Є Є 㦮 ¤ўЁЈ вмбп Ї® « ЎЁаЁвг, зв®Ўл ©вЁ Їгвм Є
ўл室㠨«Ё «оЎ®© Їа®Ё§ў®«м®© в®зЄҐ « ЎЁаЁв , Ё ЇаЁ н⮬ Ґ § бвапвм ў Ґ¬
ўбҐЈ¤ ? „ ў ©вҐ ў§Ј«пҐ¬ аЁб.13.8, Ј¤Ґ Ё§®Ўа ¦Ґ ЇаЁ¬Ґа « ЎЁаЁв .
‘гйҐбвўгҐв Їа®бв®© «Ј®аЁв¬, ®Ў®§ зҐл© §¤Ґбм Є Є Ђ«Ј®аЁв¬ 13.7, Є®в®ал©
Ї®¬®¦Ґв ў ¬ ©вЁ ўл室 Ё§ «оЎ®Ј® « ЎЁаЁв . Ѓг¤м⥠ўЁ¬ ⥫мл, ў ®¤Ё
ЇаҐЄа бл© ¬®¬Ґв ® ¬®¦Ґв ў ¬ бЁ«м® ЇаЁЈ®¤Ёвмбп!
Ђ«Ј®аЁв¬ 13.7. Џгвм аг¦г.
------------------------------------------------------------------------
do
{
¤ўЁЈ ©вҐбм ў¤®«м Їа ў®© бвҐл
Ґб«Ё ўбваҐвЁ«бп Їа®е®¤, Ї®ўҐаЁвҐ Їа ў®
Ґб«Ё Ї®Ї «Ё ў вгЇЁЄ, а §ўҐаЁвҐбм 180 Ја ¤гб®ў
} Ї®Є Ґ ўл©¤ҐвҐ Ё§ « ЎЁаЁв
________________________________________________________________________
- 538 -
ђЁб.13.8. ЋЎа §Ґж « ЎЁаЁв .
ќв®в «Ј®аЁв¬ а Ў®в Ґв ЎҐ§гЇаҐз®: Ї®Їа®Ўг©вҐ ҐЈ® г бҐЎп ¤®¬ . ‘в авг©вҐ Ё§
«оЎ®Ј® гЈ« ў 襩 Єў авЁал Ё б«Ґ¤г©вҐ «Ј®аЁв¬г. ‚®§¬®¦®, ЇаЁ Ё§ўҐбвле
®Ўбв®п⥫мбвў е ўл ¤ ¦Ґ ©¤ҐвҐ Їгвм Є Є ¦¤®© ¤ўҐаЁ.
’ Є Є Є б ЁвҐаҐбгов ўЁ¤Ґ®ЁЈал, Ї®Їлв Ґ¬бп ЁбЇ®«м§®ў вм нв®в «Ј®аЁв¬,
зв®Ўл Ї®¬®зм ᮧ¤ Ёп¬ ў ЁЈаҐ ўлб«Ґ¤Ёвм ЁЈа®Є , Ґ влЄ пбм ў бвҐл (Ґб«Ё
¬л, Є®Ґз®, Ґ е®вЁ¬ ®Ў¬ лў вм ЁЈа®Є , Ї®§ў®«Ёў ᮧ¤ Ёп¬
ЎҐбЇаҐЇпвб⢥® Їа®е®¤Ёвм бЄў®§м бвҐл). €бЇ®«м§®ў ЁҐ нв®Ј® «Ј®аЁв¬
¬®¦Ґв ЇаЁўҐбвЁ Є § ва㤥Ёп¬, Ґб«Ё ¤® ®Ўе®¤Ёвм ®ЎкҐЄвл ЄагЈ«®© д®а¬л.
Ћ¤ Є®, ¬л ¬®¦Ґ¬ Ё«Ё Ё§ЎҐЈ вм в Є®© бЁвг жЁЁ, Ё«Ё ¤®Ў ўЁвм ў Їа®Ја ¬¬г
¤®Ї®«ЁвҐ«мл© «Ј®аЁв¬ ¤«п ЇаҐ¤®вўа 饨п 室мЎл Ї® ЄагЈг.
’…Ћђ€џ €ѓђ
‘«Ґ¤гой п ⥬ Ґ б«ЁиЄ®¬ вҐб® бўп§ б ўЁ¤Ґ®ЁЈа ¬Ё, , ᪮॥, ®в®бЁвбп
Є бва ⥣ЁзҐбЄЁ¬ ЁЈа ¬ вЁЇ и е¬ в. ’Ґ¬ Ґ ¬ҐҐҐ, п е®з㠮ᢥвЁвм ҐҐ, зв®Ўл
б®®ЎйЁвм ў ¬ ҐЄ®в®алҐ ЁвҐаҐблҐ Ё¤ҐЁ.
- 539 -
’Ґ®аЁп ЁЈа пў«пҐвбп а §¤Ґ«®¬ ¬ ⥬ вЁЄЁ, б«ЁиЄ®¬ ваг¤л¬ Ё б«ЁиЄ®¬
Ўбва Євл¬, ¤«п в®Ј® зв®Ўл ЇаЁ¬Ґпвм ҐҐ ў ўЁ¤Ґ®ЁЈа е. Ћ ®ЇҐаЁагҐв
Ў®а®¬ Їа ўЁ« ¤«п ўлзЁб«ҐЁп ®ЇвЁ¬ «м®Ј® аҐиҐЁп Ё«Ё «Ј®аЁв¬ ,
Ї®§ў®«по饣® ЁЈа®Єг Ї®ЎҐ¤Ёвм. ЋЎлз® нв® ¤Ґ« Ґвбп б Ї®¬®ймо ¬®¦Ґбвў
¬ ваЁж, ўҐа®пв®б⥩ Ё «ЁҐ©®Ј® Їа®Ја ¬¬Ёа®ў Ёп. ’Ґ¬ Ґ ¬ҐҐҐ, ¬л ¬®¦Ґ¬
Ё§ў«Ґзм Ё§ ⥮ਨ ЁЈа Ґ¬ «® Ї®«Ґ§®Ј®.
Љ Є Їа ўЁ«®, вॡгҐвбп аҐиЁвм Їа®Ў«Ґ¬г Їг⥬ ®жҐЄЁ ⥪г饣® Ї®«®¦ҐЁп Ё«Ё
ЁЈа®ў®© бЁвг жЁЁ, Ї®¤а §г¬Ґў п, зв® ЁЈа®Є в®з® ®жҐЁў Ґв бў®Ё ¤Ґ©бвўЁп ў
¤ ®© в®зЄҐ ў ¤ л© ¬®¬Ґв ўаҐ¬ҐЁ Ё ¤ «ҐҐ бв а Ґвбп г«гзиЁвм бў®о
Ї®§ЁжЁо. —в®Ўл ўлЇ®«Ёвм нв® Є®¬ЇмовҐаҐ, ¬ ¤®:
- ‚®-ЇҐаўле, ¬л ᮧ¤ Ґ¬ ҐбЄ®«мЄ® ўЁ¤®ў 楫Ґўле дгЄжЁ©, Є®в®алҐ ¬®Ј«Ё
Ўл ®жҐЁў вм иг ⥪гйго Ї®§ЁжЁо;
- „ «ҐҐ ¬л Їа®ЎгҐ¬ ЇаЁ¬ҐЁвм ®ўго в ЄвЁЄг Ё«Ё Ё§¬ҐЁвм Ї®§ЁжЁо б ⥬,
зв®Ўл Ї®б¬®ваҐвм, г«гзиЁв «Ё нв® иҐ Ї®«®¦ҐЁҐ;
- …б«Ё нв® ¤®бвЁЈ Ґвбп, ¬л ўлЇ®«пҐ¬ нв® ¤Ґ©бвўЁҐ;
- …б«Ё Ґв, ЁбЇлвлў Ґ¬ б«Ґ¤гойго в ЄвЁЄг.
€¬Ґ® Ї® в Є®© б奬Ґ а Ў®в ов и е¬ влҐ Їа®Ја ¬¬л. Љ®¬ЇмовҐа Ї®бв®п®
ўҐ¤Ґв Ї®¤бзҐв бў®Ёе б®Ўб⢥ле ®зЄ®ў Ё ®зЄ®ў Їа®вЁўЁЄ , § ўЁбпйЁе ®в
⥪г饣® а бЇ®«®¦ҐЁп дЁЈга, Ё Їлв Ґвбп ©вЁ ЁЎ®«ҐҐ ®ЇвЁ¬ «мл© е®¤.
ќв®в "¬л᫨⥫мл© Їа®жҐбб" ¬®¦Ґв ў ¤Ґ©б⢨⥫м®бвЁ Ё¤вЁ ¬®ЈЁе
га®ўпе. Љ®¬ЇмовҐа Ўг¤Ґв Їа®ўҐапвм Є ¦¤го Ё§ ў®§¬®¦®б⥩: Ґб«Ё п б«Ґ« о
в Є, в® ¬®© Їа®вЁўЁЄ ¬®Ј Ўл ЇаҐ¤ЇаЁпвм в®-в®..., Ґб«Ё п Ї®бвгЇ«о н¤ Є,
б®ЇҐаЁЄ ᤥ« Ґв б«Ґ¤го饥... ’ Є ¬®¦Ґв Їа®¤®«¦ вмбп ¤® ЎҐбЄ®Ґз®бвЁ, е®вп
祫®ўҐЄ ¬®¦Ґв Їа®ЁЈа вм ¤ ¦Ґ ў ⮬ б«гз Ґ, Ґб«Ё Є®¬ЇмовҐа Ўг¤Ґв ¤Ґ« вм
в®«мЄ® ¤ў и Ј "Їа®ўҐаЄ -¤Ґ©бвўЁҐ".
‚ ўЁ¤Ґ®ЁЈа е нв в ЄвЁЄ ¬®¦Ґв Ўлвм ЁбЇ®«м§®ў Є Є б ¬®Ґ ўлб®Є®га®ўҐў®Ґ
гЇа ў«ҐЁҐ ўбҐ¬Ё ®бв «мл¬Ё дгЄжЁп¬Ё. Љ ЇаЁ¬Ґаг, Є ¦¤го ¬Ёгвг Ё«Ё ®Є®«®
нв®Ј®, Є®¬ЇмовҐа ¬®Ј Ўл Їа®бзЁвлў вм е®¤л Ё ®жҐЁў вм, Є Є ® ¤Ґ©бвўгҐв.
…б«Ё ўбҐ ҐЈ® 室л г¤ зл, ® ¬®Ј Ўл ¤Ґ©бвў®ў вм в Є Ё ¤ «миҐ. Ћ¤ Є®, Ґб«Ё
Є Є п-в® Ї®ЇлвЄ ®Є § « бм Ґг¤ з®©, § зЁв, ЇаЁи«® ўаҐ¬п ¤«п ЇҐаҐб¬®ва
в ЄвЁЄЁ.
€’Ћѓ
‚ нв®© Ј« ўҐ ¬л § ва®г«Ё ¬ ббг ЁвҐаҐбле ⥬ Ё ¤ ¦Ґ ᮧ¤ «Ё ҐЎ®«ми®©
"¬®§Ј", бЇ®б®Ўл© Ё¬ЁвЁа®ў вм ¬®ЈЁҐ дгЄжЁЁ, ЇаЁбгйЁҐ ¦Ёўл¬ ®ЎкҐЄв ¬.
€бЇ®«м§гп Є®¬ЎЁ жЁЁ а §«Ёзле «Ј®аЁв¬®ў, ®ЇЁб ле ў нв®© Ј« ўҐ, ўл
ᬮ¦ҐвҐ ᮧ¤ вм "ўЁавг «мл© ¬®§Ј" ¤®бв в®з® ¬®йл© ¤«п в®Ј®, зв®Ўл ў иЁ
ᮧ¤ Ёп ᬮЈ«Ё Ў®а®вмбп § ўл¦Ёў ЁҐ. Ћ¤ Є®, п е®зг ў ¬ ¤ вм Ї аг
б®ўҐв®ў:
- 540 -
- ‘в а ©вҐбм Ґ гб«®¦пвм "¬®§Ј" ЎҐ§ Ґ®Ўе®¤Ё¬®бвЁ;
- ЌҐ Їлв ©вҐбм ба §г ᮧ¤ вм бгЇҐаЄ®¬ЇмовҐа. ‚ з «Ґ Їгбвм ў иҐ Їа®б⮥
Їа®Ё§ўҐ¤ҐЁҐ Ўг¤Ґв Ў®«миҐ Ї®е®¦Ґ "„Ґ¤Ё".
Њл ®Ўбг¤Ё«Ё Ў®«миЁбвў® ¬Ґв®¤®ў гЇа ў«ҐЁп Ї®ўҐ¤ҐЁҐ¬, ЇаЁ¬ҐпҐ¬ле ў
ᥣ®¤пиЁе ўЁ¤Ґ®ЁЈа е. …б«Ё ўл ᬮЈ«Ё ў Ёе а §®Ўа вмбп, ўл ᬮ¦ҐвҐ
ᮧ¤ ў вм ЁЈал Ґ е㦥, в® Ё «гзиҐ зҐ¬ вҐ, Є®в®алҐ бгйҐбвўгов ᥣ®¤п.
€¤гбваЁп Є®¬ЇмовҐале ЁЈа ¤ўЁ¦Ґвбп ᥬЁ¬Ё«мл¬Ё и Ј ¬Ё Ї® ЇгвЁ г«гз襨п
Ја дЁзҐбЄЁе Ё §ўгЄ®ўле ў®§¬®¦®б⥩, з бв® § Ўлў п ® в Є®© ¬ «ҐмЄ®© ¤Ґв «Ё
Є Є ЁвҐ««ҐЄв. Љ бз бвмо, ⥯Ґам ўл Ё¬ҐҐвҐ ў®§¬®¦®бвм ЇаЁўҐбвЁ "¬®§ЈЁ" Ё
бва ⥣Ёо ў б«Ґ¤го饥 Ї®Є®«ҐЁҐ Є®¬ЇмовҐале ЁЈа.