рдЦрд░реЛрдВрдЪ рд╕реЗ рдПрдХрддрд╛ рдореЗрдВ рд░реЙрдЧреБрд▓рд╛рдЗрдХ рдмрдирд╛рдирд╛: рдХрд╛рд▓рдХреЛрдард░реА рдЬрдирд░реЗрдЯрд░

рдЫрд╡рд┐

рдЗрд╕ рдмрд╛рд░ рд╣рдо рдХрд╛рд▓рдХреЛрдард░реА рдЬрдирд░реЗрдЯрд░ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдбреБрдмрдХреА рд▓рдЧрд╛рдПрдВрдЧреЗред рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ, рд╣рдо рдкрд╣рд▓реЗ рдХрдХреНрд╖ рдмрдирд╛рдпрд╛, рдФрд░ рдЕрдм рд╣рдо рддрд╣рдЦрд╛рдиреЗ рд╕реНрддрд░ рдХреЗ рдмрд╛рдХреА рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред

рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╢реБрд░реВ рдХрд░реЗрдВ, рдореИрдВ рдПрдХ рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рд╕реЗ рдПрдХ рдЧрд▓рддреА рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рд╛рд▓ рдХреЗ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдореИрдВрдиреЗ рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрд╛ рд╣реИ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдкреБрд░рд╛рдирд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╕реНрдерд┐рддрд┐ рд╡рд░реНрдЧ рдпрд╛рдж рд░рдЦреЗрдВ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХрддрд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде - рдпрд╣ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рд╡реЗрдХреНрдЯрд░ 2 рдЖрдИрдВрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо MapManager.cs рд╕реЗ рд╕реНрдерд┐рддрд┐ рд╡рд░реНрдЧ рдХреЛ рдирд┐рдХрд╛рд▓ рджреЗрдВрдЧреЗ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд┐рддрд┐ рдЪрд░ рдХреЛ рд╡реЗрдХреНрдЯрд░ 2 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрдВрдЧреЗред


рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЛ рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдбрдВрдЧрдСрдирдЧреЗрдВрдЯрд░реЗрдЯрд░.рдХреНрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдм рдмрд╛рдХреА рдЕрд▓реНрдЧреЛрд░рд┐рджреНрдо рдкрд░ рдЖрддреЗ рд╣реИрдВред

рд╕реНрдЯреЗрдЬ 7 - рдХрдорд░рд╛ / рд╣реЙрд▓ рдкреАрдврд╝реА


рд╣рдо рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдмрдирд╛рдП рдЧрдП рдлрд╝рд░реНрд╕реНрдЯ рдлрд╝рд╛рд░реНрдо () рдореЗрдВ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВрдЧреЗред рдирдХреНрд╢реЗ рдХреЗ рдЕрдиреНрдп рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдФрд░ рдХреЛрдб рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдмрд╕ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд GenerateFeature () рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, FirstRoom рд╕реЗ GenerateFeature рдореЗрдВ рдирд╛рдо рдмрджрд▓реЗрдВред

рдЕрдм рд╣рдореЗрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдХрд╛рд░реНрдп рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ - рдПрдХ рдХрдорд░рд╛ рдпрд╛ рдЧрд▓рд┐рдпрд╛рд░рд╛ред рд╣рдо рдмрд╕ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рддрддреНрд╡ рдХреЗ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рдХрд┐рд╕ рджреАрд╡рд╛рд░ рд╕реЗ рдЖрддреА рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рдкреБрд░рд╛рдиреЗ рддрддреНрд╡ рдХреА рджреАрд╡рд╛рд░ рд╕реЗ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдмрдирд╛рддреЗ рд╣реИрдВ), рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╡реЙрд▓ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЧреБрдЬрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЕрдВрдд рдореЗрдВ, рдмрдирд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рдХрдорд░реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмреВрд▓ рдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрдЯрдо рдкрд╣рд▓рд╛ рдХрдорд░рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдЧрд▓рдд рд╣реИ: рдмреВрд▓ рдлрд╝рд░реНрд╕реНрдЯ = рдЧрд▓рдд рд╣реИред рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╢реАрд░реНрд╖рдХ рдЗрд╕рд╕реЗ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛:


рдЗрд╕ рдкрд░:


рдареАрдХред рдЕрдЧрд▓рд╛ рдХрджрдо рддрддреНрд╡ рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓рдирд╛ рд╣реИред рдЬрдм рд╣рдо рдЙрдирдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдорд░реЛрдВ рдХреА рдКрдВрдЪрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ - рдпрд╣ рдХрдорд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд╣реИ, рд▓реЗрдХрд┐рди рдЧрд▓рд┐рдпрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЕрдм рддрдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ:


рд▓реЗрдХрд┐рди рдЧрд▓рд┐рдпрд╛рд░реЛрдВ рдореЗрдВ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪреМрдбрд╝рд╛рдИ рдпрд╛ рдКрдВрдЪрд╛рдИ рдореЗрдВ 3 рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░ рдЖрдХрд╛рд░ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рддрддреНрд╡ рдХреНрдпрд╛ рд╣реИ - рдПрдХ рдХрдорд░рд╛ рдпрд╛ рдЧрд▓рд┐рдпрд╛рд░рд╛, рдФрд░ рдлрд┐рд░ рдЙрдкрдпреБрдХреНрдд рдЧрдгрдирд╛ рдХрд░реЗрдВред


рдЗрд╕рд▓рд┐рдПред рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдЗрдЯрдо рдПрдХ рдХрдорд░рд╛ рд╣реИред рдпрджрд┐ рд╣рд╛рдБ, рддреЛ рд╣рдо рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╣реА рдХрд░рддреЗ рд╣реИрдВ
- рд╣рдореЗрдВ рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдКрдВрдЪрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдорд┐рд▓рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдореЗрдВ рдХреА рдХрд┐рд╕реА рдФрд░ рд╣реА рдЖрдк рдХреБрдЫ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред рд╣рдореЗрдВ рдЧрд▓рд┐рдпрд╛рд░реЗ рдХреЗ рдЙрдиреНрдореБрдЦреАрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рджреАрд╡рд╛рд░ рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрд▓рд┐рдпрд╛рд░реЗ рдХреЗ рдЙрдиреНрдореБрдЦреАрдХрд░рдг рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред


рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдЕрднреА рддрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдорд╛рдЗрдиреЙрд░рд┐рдбреЛрд░ рд▓реИрдВрде рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдЪрд░ рдШреЛрд╖рдгрд╛рдУрдВ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдореИрдХреНрд╕рдХреЛрд░рд┐рдбреНрд░рд╛рдиреЗрд▓рд┐рдЯреА рдХреЗ рдареАрдХ рдКрдкрд░ рд╣реИред


рдЕрдм рд╣рдорд╛рд░реЗ рд╕рд╢рд░реНрдд рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рд╣рдо рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рд╣рдореЗрдВ рджреАрд╡рд╛рд░ рдХреА рджрд┐рд╢рд╛ рдХрд╛ рдореВрд▓реНрдп рдорд┐рд▓рддрд╛ рд╣реИ , рдЕрд░реНрдерд╛рдд рдЬрд╣рд╛рдВ рджреАрд╡рд╛рд░ рджрд┐рдЦ рд░рд╣реА рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗ рдЧрд▓рд┐рдпрд╛рд░рд╛ рдЬрд╛рдПрдЧрд╛ред рджрд┐рд╢рд╛ рдХреЗ рдХреЗрд╡рд▓ рдЪрд╛рд░ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: рджрдХреНрд╖рд┐рдг, рдЙрддреНрддрд░, рдкрд╢реНрдЪрд┐рдо рдФрд░ рдкреВрд░реНрд╡ред рджрдХреНрд╖рд┐рдг рдФрд░ рдЙрддреНрддрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧрд▓рд┐рдпрд╛рд░реЗ рдХреА рдЪреМрдбрд╝рд╛рдИ 3 (рджреЛ рджреАрд╡рд╛рд░реЗрдВ рдФрд░ рдмреАрдЪ рдореЗрдВ рдПрдХ рдордВрдЬрд┐рд▓) рдФрд░ рдПрдХ рдЪрд░ рдКрдВрдЪрд╛рдИ (рд▓рдВрдмрд╛рдИ) рд╣реЛрдЧреАред рдкрд╢реНрдЪрд┐рдо рдФрд░ рдкреВрд░реНрд╡ рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рд╣реЛрдЧрд╛: рдКрдВрдЪрд╛рдИ рд▓рдЧрд╛рддрд╛рд░ 3 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧреА, рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдореЗрдВ рдПрдХ рдЪрд░ рд▓рдВрдмрд╛рдИ рд╣реЛрдЧреАред рддреЛ рдпреЗ рдХрд░рддреЗ рд╣реИред


рд╡рд╛рд╣ред рдФрд░ рд╡рд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╣рдо рдирдП рдЖрдЗрдЯрдо рдХреЛ рдЖрдХрд╛рд░ рджреЗрдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдПред рдЕрдм рдЖрдкрдХреЛ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдПред рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрдорд░реЗ рдХреЛ рдирдХреНрд╢реЗ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрд╛ред


рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЙрдиреНрд╣реЗрдВ рдЙрд╕ рджреАрд╡рд╛рд░ рдкрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд┐рдВрджреБ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рд╕реЗ рддрддреНрд╡ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рддреЛ рдЪрд▓рд┐рдП рдХреЛрдб рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рддрддреНрд╡ рдкрд╣рд▓рд╛ рдХрдорд░рд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдкрд╣рд▓рд╛ рдХрдорд░рд╛ рд╣реИ, рддреЛ рд╣рдо рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ - рдирдХреНрд╢реЗ рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдХрд╛ рдЖрдзрд╛ред


рдореЗрдВ рдХреБрдЫ рдФрд░, рдЕрдЧрд░ рддрддреНрд╡ рдкрд╣рд▓рд╛ рдХрдорд░рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рджреАрд╡рд╛рд░ рдЬрд╣рд╛рдБ рд╕реЗ рддрддреНрд╡ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдкрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд┐рдВрджреБ рдорд┐рд▓рддрд╛ рд╣реИред рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рджреАрд╡рд╛рд░ рдХрд╛ рдЖрдХрд╛рд░ 3 рд╣реИ (рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдЧрд▓рд┐рдпрд╛рд░реЗ рдХрд╛ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рд╣реИ), рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдордзреНрдп рдмрд┐рдВрджреБ рд╣рдореЗрд╢рд╛ рдЪреБрдирд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рдд, рджреАрд╡рд╛рд░ рд╕рд░рдгреА рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ 1 (3 рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде, рд╕рд░рдгреА) рд╕реВрдЪрдХрд╛рдВрдХ 0, 1, 2)ред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдХрд╛рд░ 3 рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ (рджреАрд╡рд╛рд░ рдЧрд▓рд┐рдпрд╛рд░реЗ рдХрд╛ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдирд╣реАрдВ рд╣реИ), рддреЛ рд╣рдо рдмрд┐рдВрджреБ 1 рдФрд░ рджреАрд╡рд╛рд░ рдХреЗ рдорд╛рдЗрдирд╕ 2 рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд┐рдВрджреБ рд▓реЗрддреЗ рд╣реИрдВред рдпрд╣ рдХреЛрдиреЗ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдорд╛рд░реНрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣реА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 6 рдХреА рд▓рдВрдмрд╛рдИ рд╡рд╛рд▓реА рджреАрд╡рд╛рд░ рдкрд░, рд╣рдо рдЕрдиреБрдХреНрд░рдорд┐рдд 0 рдФрд░ 5 (рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрддрд┐рдо) рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрдХ 1, 2, 3 рдФрд░ 4 рдХреЗ рдмреАрдЪ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд┐рдВрджреБ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред


рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреАрд╡рд╛рд░ рдкрд░ рдЙрд╕ рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рд╡рд╣рд╛рдВ рд╕реЗ рдПрдХ рддрддреНрд╡ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рдЦреА рдЧрдИ рджреАрд╡рд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рднреА рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рддрддреНрд╡ рдЕрдкрдиреЗ рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдВ рдХреЛрдиреЗ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рджрд╛рд╣рд┐рдиреА рдФрд░ рдКрдкрд░ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕ рджрд┐рд╢рд╛ рдореЗрдВ рджреАрд╡рд╛рд░ рджрд┐рдЦ рд░рд╣реА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╣рд▓реА рдХреЙрд▓рдо x рдФрд░ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ y рджреАрд╡рд╛рд░реЗрдВ рд╣реЛрдВрдЧреА, рдФрд░ рдЕрдЧрд░ рд╣рдо рджреАрд╡рд╛рд░ рдкрд░ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рдареАрдХ рдмрдЧрд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХрдорд░реЗ рдХреЗ рдПрдХ рдХреЛрдиреЗ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЧрд▓рд┐рдпрд╛рд░реЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рди рдХрд┐ рджреАрд╡рд╛рд░ рдкрд░ рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рди рдкрд░ред

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рджреАрд╡рд╛рд░ рдХреЛ рдЙрддреНрддрд░ рдХреА рдУрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рддрддреНрд╡ y рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдЙрддреНрддрд░ рдХреА рдУрд░ рдПрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди x рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдкрд╢реНрдЪрд┐рдо рдХреА рдУрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ, рдХрдХреНрд╖ -2 рдХреА рдЪреМрдбрд╝рд╛рдИ рд╕реЗ 1 рддрдХ рдХреА рд╕реАрдорд╛ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рджрдХреНрд╖рд┐рдг рджрд┐рд╢рд╛ рдореЗрдВ, x рдЕрдХреНрд╖ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди y рдЕрдХреНрд╖ рдкрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рджреАрд╡рд╛рд░ рдХреЗ рдмрд┐рдВрджреБ рд╕реЗ рдХрдорд░реЗ рдХреА рдКрдВрдЪрд╛рдИ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рдкрд╢реНрдЪрд┐рдореА рдФрд░ рдкреВрд░реНрд╡реА рджреАрд╡рд╛рд░реЗрдВ рдПрдХ рд╣реА рддрд░реНрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреА рд╣реИрдВ, рдХреЗрд╡рд▓ рдЙрд▓реНрдЯреЗ рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред

рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рд╡реЗрдХреНрдЯрд░ 2 рдЖрдИ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рджреАрд╡рд╛рд░ рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХреЗрдВред


рдорд╣рд╛рдиред рдЪрд▓реЛ рдХрд░рддреЗ рд╣реИрдВред


рддреЛ, рд╣рдордиреЗ рдЖрдХрд╛рд░ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рддрддреНрд╡ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛, рдФрд░ рдЕрдЧрд▓рд╛ рдХрджрдо рддрддреНрд╡ рдХреЛ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд░рдЦрдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдирдХреНрд╢реЗ рдкрд░ рдЬрдЧрд╣ рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рд┐рд░реНрдл CheckIfHasSpace () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реЗ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЕрднреА рддрдХ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЬрдирд░реЗрдЯрдлрд╛рдЗрдЯ () рдлрдВрдХреНрд╢рди рдореЗрдВ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕реЗ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдо рдпрд╣ рдЕрдзрд┐рдХрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, рд▓рд╛рд▓ рд░реЗрдЦрд╛рдВрдХрди рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдФрд░ рдЬрд╛рд░реА рд░рдЦреЗрдВред


рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рджреАрд╡рд╛рд░реЗрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВред рдЬрдм рддрдХ рд╣рдо рдЗрд╕реЗ рдирд╣реАрдВ рдЫреВрддреЗ рд╣реИрдВ, рддрдм рддрдХ рд▓реВрдк рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ ред


рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпреЗ рдЕрдЧрд░-рдФрд░ рдирд┐рд░реНрдорд╛рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдирдореЗрдВ рдХреБрдЫ рджреАрд╡рд╛рд░реЗрдВ 1. рдХреА рд▓рдВрдмрд╛рдИ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреАред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рд╕реНрдерд┐рддрд┐ рдХреЛ рдЙрддреНрддрд░реА рджреАрд╡рд╛рд░ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рд╡рд╣ рдкреВрд░реНрд╡ рдХреА рджреАрд╡рд╛рд░ рдХреЗ рд╕рд╛рде рдХреЛрдиреЗ рдореЗрдВ рдереА, рддреЛ рдЙрд╕реЗ рдкреВрд░реНрд╡ рдХреА рджреАрд╡рд╛рд░ рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЙрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкреАрдврд╝реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдХрд╖реНрдЯрдкреНрд░рдж рдХреАрдбрд╝реЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ред рдЪрд▓реЛ рдЙрдиреНрд╣реЗрдВ рдЦрддреНрдо рдХрд░рддреЗ рд╣реИрдВред

рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рд╕рдм рдХреБрдЫ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ рдХреБрдЫ рддреЛ рд╕реНрдерд┐рддрд┐ рд╕рднреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдирд┐рд░реНрдорд╛рдгреЛрдВ , рдФрд░ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдмрдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рд╡рд╛рдкрд╕ рдЖ рд╕рдЪ ред рдлрд┐рд░ рдЕрдВрддрд┐рдо рджреВрд╕рд░рд╛ (рд╡рд╣ рдЬреЛ рдЕрдиреНрдп рдирд╣реАрдВ рд╣реИ ) рдпрджрд┐ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдП, рдЬреЛ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдлрд╝реНрд▓реЛрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред


рдХрдорд╛рд▓ рд╣реИ, рд╣рдо рд▓рдЧрднрдЧ рдпрд╣рд╛рдБ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рддрддреНрд╡ рд╣реИ, рдЬреЛ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рдкрд╣рд▓реЗ рдХрдорд░реЗ рдХреЗ рд╕рдорд╛рди рд╣реИ: рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреАрд╡рд╛рд░реЛрдВ рд╕реЗ рдШрд┐рд░рд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдЗрд╕ рдирдИ рдЬрдЧрд╣ рдкрд░ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдкрд╛рдПрдЧрд╛ред рдпрд╣реА рд╣реИ, рд╣рдореЗрдВ рджреАрд╡рд╛рд░ рдкрд░ рдПрдХ рдмрд┐рдВрджреБ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЬреЛ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдХреЛ рд╡реЗрдХреНрдЯрд░ рд╡реЗрдХреНрдЯрд░ II рдХреЗ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рддрд▓ рдореЗрдВ рдПрдХ рдирдП рддрддреНрд╡ рдХреА рджреАрд╡рд╛рд░ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдмрд┐рдВрджреБред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЬрдм рддрддреНрд╡ рдкрд╣рд▓рд╛ рдХрдорд░рд╛ рдирд╣реАрдВ рд╣реИред


рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдирдпрд╛ рдЖрдЗрдЯрдо рдкрд╣рд▓рд╛ рдХрдорд░рд╛ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдпрд╣ рджреАрд╡рд╛рд░ рдХреА рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдХреЛ рдордВрдЬрд┐рд▓ рддрдХ рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рджреАрд╡рд╛рд░ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рджреАрд╡рд╛рд░ рдХрд┐рд╕ рдирдП рддрддреНрд╡ рдХреЗ рдлрд░реНрд╢ рдореЗрдВ рдмрджрд▓рдиреА рдЪрд╛рд╣рд┐рдПред

рд╣рдо GenerateFeature () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдП рд╣реИрдВред рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ рдЬреЛ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реИред


рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдХреБрдЫ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рддрддреНрд╡ рдкреНрд░рдХрд╛рд░ рд╣рдореЗрд╢рд╛ рдХрдорд░реЗ рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЖрд╡рд╢реНрдпрдХ рдЪрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдкреНрд░рдХрд╛рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧред рддреЛ рдЪрд▓реЛ рдмрд╕ "рдХрдХреНрд╖" рдХреЛ рдпрд╣рд╛рдВ рдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВред


рдЕрдЪреНрдЫрд╛ред рдЕрдм, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЧреЗрдо рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣рд╛рдВ рдирдпрд╛ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдПрдХ рдРрд╕рд╛ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдмрдирд╛рдП рдЧрдП рдЖрдЗрдЯрдореЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдмрдирд╛рдИ рдЧрдИ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЙрд╕ рдЬрдЧрд╣ рддрдХ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдо рд╕рднреА рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдирд╛рдо рдХрд╛рдЙрдВрдЯрдлрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдВрдЯреНрд░реА рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдСрд▓рдЖрдЙрдЯреНрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА рднреА рдмрдирд╛рддреЗ рд╣реИрдВред рд╕рднреА рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрдВрдЯ рдХрд╛рдЙрдВрдЯрд░ рдирд┐рдЬреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдЕрдм GenerateFeature () рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рдЕрдВрдд рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ: countFeatures рдЪрд░ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реБрдП рдФрд░ allFeatures рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред


рддреЛ, рд╣рдорд╛рд░рд╛ GenerateFeature () рд▓рдЧрднрдЧ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдмрд╛рдж рдореЗрдВ рд╣рдореЗрдВ рдЦрд╛рд▓реА CheckIfHasSpace рдлрд╝рдВрдХреНрд╢рди рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдм рд╣рдо рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ

рдЪрд░рдг 8 - рдЕрдЧрд░ рдХреЛрдИ рдЬрдЧрд╣ рд╣реИ рддреЛ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ


рдЕрдм GenerateFeature () рдлрд╝рдВрдХреНрд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдареАрдХ рдмрд╛рдж рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВред рдЙрд╕реЗ рджреЛ рддрд░реНрдХ рдЪрд╛рд╣рд┐рдП: рд╡рд╣ рд╕реНрдерд┐рддрд┐ рдЬрд┐рд╕ рдкрд░ рддрддреНрд╡ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рд╕реНрдерд┐рддрд┐ рдЬрд┐рд╕ рдкрд░ рд╡рд╣ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдЖрдк рдЙрдирдХреЗ рд░реВрдк рдореЗрдВ рджреЛ рд╡реЗрдХреНрдЯрд░ 2Int рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдорд╛рд░реЛрд╣ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдПрдХ bool рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдЪрд╛рд╣рд┐рдП рдЕрдЧрд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред


рдЗрд╕реЗ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрднреА рддрдХ рдпрд╣ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИред рдЬрд▓реНрдж рд╣реА рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рддрддреНрд╡ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреЗ рдмреАрдЪ рд╕рднреА рдкрджреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдпрд╣ рдЬрд╛рдВрдЪреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ MapManager.map рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╢реВрдиреНрдп рд╣реИ рдпрд╛ рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдХреБрдЫ рд╣реИ, рддреЛ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рд░реЛрдХрддреЗ рд╣реИрдВ рдФрд░ рдЭреВрдареЗ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЬрд╛рд░реА рд░рдЦреЗрдВред рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рднрд░реЗ рд╣реБрдП рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд▓реВрдк рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рддреЛ рд╕рд╣реА рд▓реМрдЯреЗрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрд╢рдХреНрдд рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдВрдХреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рднреАрддрд░ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛, рд╣рдо рдПрдХ рд╕рд░рдгреА рд╕реВрдЪрдХрд╛рдВрдХ рддреНрд░реБрдЯрд┐ рдФрд░ рдПрдХ рдЦреЗрд▓ рджреБрд░реНрдШрдЯрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред


рдареАрдХред рдЕрдм рдЙрд╕ рдЬрдЧрд╣ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдЬрд╣рд╛рдВ рд╣рдо GenerateFeature () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдЗрд╕ рдХреЙрд▓ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рд╣рдо рдПрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ , рддреЛ рдмрдпрд╛рди рд╣реИ рддреЛ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдерд╛рди рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗред рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо рдЧрд▓рдд рд╣реИ, рддреЛ рд╣рдо MapManager.map рдореЗрдВ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред


рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рджреЛ рд╡реЗрдХреНрдЯрд░ 2Int рдЪрд░ред рдкрд╣рд▓реЗ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдпрд╣ рддрддреНрд╡ рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдмрд┐рдВрджреБ рдХреЗ x рдФрд░ y рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рд╣реИред


рджреВрд╕рд░рд╛ рдХрдард┐рди рд╣реИ, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВред рдпрд╣ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП 1 рд╕реЗ рдШрдЯрд╛рдХрд░, x рдХреЗ рд▓рд┐рдП y рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдкреНрд▓рд╕ рдКрдВрдЪрд╛рдИ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╢реБрд░реБрдЖрдд рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ)ред


рдЕрдм рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ - GenerateFeature () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрдирд╛рддреЗ рд╣реИрдВред

рдЪрд░рдг 9 - рдЙрддреНрдкрдиреНрди рддрддреНрд╡реЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ


рд▓реЗрдЦ рдХреЗ рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд GenerateDungeon () рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рдЕрдм рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:


FirstRoom () рдХреЛ рдХреЙрд▓ рдХреЛ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рддреЛ рдЪрд▓реЛ рдмрд╕ рдкрд╣рд▓реА рдХрдорд░реЗ рдХреА рдкреАрдврд╝реА рдХреЛ рдмреБрд▓рд╛рдУред


рд╣рдордиреЗ рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдП: "рдХрдорд░рд╛" рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓рд╛ рдХрдорд░рд╛ рд╣рдореЗрд╢рд╛ рдХрдХреНрд╖, рдирдИ рджреАрд╡рд╛рд░ () рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓рд╛ рдХрдорд░рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдмрд╕ рд╢реВрдиреНрдп рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдирдИ рджреАрд╡рд╛рд░ () рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЕрд╢рдХреНрдд рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдЕрдВрддрд┐рдо рддрд░реНрдХ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдирдпрд╛ рддрддреНрд╡ рдкрд╣рд▓рд╛ рдХрдорд░рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рд╕рд╣реА рд╣реИрдВ ред

рдЕрдм рд╣рдо рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдкрд░ рдЖрддреЗ рд╣реИрдВред рд╣рдо рдПрдХ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ 500 рдмрд╛рд░ рдЪрд▓реЗрдЧрд╛ - рд╣рд╛рдБ, рд╣рдо 500 рдмрд╛рд░ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдпрджрд┐ рдмрдирд╛рдП рдЧрдП рддрддреНрд╡реЛрдВ (рдХрд╛рдЙрдВрдЯ рдлреАрдЪрд░реНрд╕ рд╡реЗрд░рд┐рдПрдмрд▓) рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХрддрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрддреНрд╡реЛрдВ (рдореИрдХреНрд╕рдлреНрд░реАрдЪрд░ рд╡реЗрд░рд┐рдПрдмрд▓) рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рдЪрдХреНрд░ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рдЗрд╕ рд▓реВрдк рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдо рдЙрд╕ рддрддреНрд╡ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдирдпрд╛ рддрддреНрд╡ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рд╣рдордиреЗ рдХреЗрд╡рд▓ рдПрдХ рддрддреНрд╡ (рдкрд╣рд▓рд╛ рдХрдорд░рд╛) рдмрдирд╛рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдореВрд▓ рдПрдХ рд╣реЛрдЧрд╛ред рдЕрдиреНрдпрдерд╛, рд╣рдо рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред


рдЕрдм рд╣рдо рдЪреБрдиреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕ рддрддреНрд╡ рдХреА рдХрд┐рд╕ рджреАрд╡рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирдП рддрддреНрд╡ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ ChoseWall () рдлрд╝рдВрдХреНрд╢рди рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИред рдЪрд▓реЛ рдЬрд▓реНрджреА рд╕реЗ рд▓рд┐рдЦреЛред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рддрдХ рдиреАрдЪреЗ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдПрдВред рдЗрд╕реЗ рдПрдХ рджреАрд╡рд╛рд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ рддрддреНрд╡ рдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рддрддреНрд╡ рдХреА рджреАрд╡рд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХреЗред


рдореИрдВрдиреЗ рдЗрд╕реЗ CheckIfHasSpace () рдФрд░ DrawMap () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмреАрдЪ рдмрдирд╛рдпрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдпреВрдирд┐рдЯреА рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдХрд╛рд░реНрдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдврд╣рд╛рдиреЗ / рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдИрдВ рдУрд░ - / + рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣рдо рдЙрд╕ рджреАрд╡рд╛рд░ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рд╕реЗ рддрддреНрд╡ рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрднреА-рдХрднреА рд╣рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рджреАрд╡рд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рддрддреНрд╡ рдорд┐рд▓реЗрдВрдЧреЗ рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдиреНрдп рддрддреНрд╡ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрд▓рдЧреНрди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рднреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рджреАрд╡рд╛рд░ рдореБрдлреНрдд рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджрд╕ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдП рдЧрдП рд▓реВрдк рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдпрджрд┐ рдЗрди рджрд╕ рдмрд╛рд░ рдХреЗ рдмрд╛рдж рдПрдХ рдореБрдлреНрдд рджреАрд╡рд╛рд░ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред


рдЕрдм GenerateDungeon () рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ ChoseWall () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдореВрд▓ рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред


рд▓рд╛рдЗрди рдХрд╛ if (wall == null) continue;рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рджреАрд╡рд╛рд░ рдЦреЛрдЬ рдлрд╝рдВрдХреНрд╢рди рдЧрд▓рдд рд╣реИ, рддреЛ рдореВрд▓ рддрддреНрд╡ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдЪрдХреНрд░ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ , рдЕрд░реНрдерд╛рдд рдпрд╣ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЪрдХреНрд░ рдХреЗ рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред

рдЕрдм рд╣рдореЗрдВ рдЕрдЧрд▓реЗ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рд╕реНрд░реЛрдд рддрддреНрд╡ рдПрдХ рдХрдорд░рд╛ рд╣реИ, рддреЛ рдЕрдЧрд▓рд╛ рдПрдХ рдЧрд▓рд┐рдпрд╛рд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХрдорд░рд╛ рд╕реАрдзреЗ рдЙрдирдХреЗ рдмреАрдЪ рдПрдХ рдЧрд▓рд┐рдпрд╛рд░реЗ рдХреЗ рдмрд┐рдирд╛ рджреВрд╕рд░реЗ рдХрдорд░реЗ рдореЗрдВ рд▓реЗ рдЬрд╛рдП)ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдПрдХ рдЧрд▓рд┐рдпрд╛рд░рд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╕рдВрднрд╛рд╡рдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдПрдХ рдФрд░ рдЧрд▓рд┐рдпрд╛рд░рд╛ рдпрд╛ рдХрдорд░рд╛ рдЖрдЧреЗ рд╣реЛрдЧрд╛ред


рдареАрдХред рдЕрдм рд╣рдореЗрдВ рдХреЗрд╡рд▓ GenerateFeature () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рджреАрд╡рд╛рд░ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВред


рдЕрдВрдд рдореЗрдВ, рдПрдХрддрд╛ рдирд┐рд░реАрдХреНрд╖рдХ рдкрд░ рдЬрд╛рдПрдВ, GameManager рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рдмрджрд▓реЗрдВ:


рдпрджрд┐ рдЖрдк рдЕрдм рдкреНрд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВрдЧреЗ!


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рд▓рдХреЛрдард░реА рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореГрддрдХ рдЫреЛрд░ рдорд┐рд▓реЗред рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИ, рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХрдорд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдЖрдкрдиреЗ рдЗрд╕рдХрд╛ рдЖрдирдВрдж рд▓рд┐рдпрд╛! рдЕрдЧрд▓реЗ рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╣рдо рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдХрд╛рд▓рдХреЛрдард░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реЗрдЧрд╛, рдФрд░ рдлрд┐рд░ рд╣рдо рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ рд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗред

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Post3 : MonoBehaviour {
    public int mapWidth;
    public int mapHeight;

    public int widthMinRoom;
    public int widthMaxRoom;
    public int heightMinRoom;
    public int heightMaxRoom;

    public int minCorridorLength;
    public int maxCorridorLength;
    public int maxFeatures;
    int countFeatures;

    public bool isASCII;

    public List<Feature> allFeatures;

    public void InitializeDungeon() {
        MapManager.map = new Tile[mapWidth, mapHeight];
    }

    public void GenerateDungeon() {
        GenerateFeature("Room", new Wall(), true);

        for (int i = 0; i < 500; i++) {
            Feature originFeature;

            if (allFeatures.Count == 1) {
                originFeature = allFeatures[0];
            }
            else {
                originFeature = allFeatures[Random.Range(0, allFeatures.Count - 1)];
            }

            Wall wall = ChoseWall(originFeature);
            if (wall == null) continue;

            string type;

            if (originFeature.type == "Room") {
                type = "Corridor";
            }
            else {
                if (Random.Range(0, 100) < 90) {
                    type = "Room";
                }
                else {
                    type = "Corridor";
                }
            }

            GenerateFeature(type, wall);

            if (countFeatures >= maxFeatures) break;
        }

        DrawMap(isASCII);
    }

    void GenerateFeature(string type, Wall wall, bool isFirst = false) {
        Feature room = new Feature();
        room.positions = new List<Vector2Int>();

        int roomWidth = 0;
        int roomHeight = 0;

        if (type == "Room") {
            roomWidth = Random.Range(widthMinRoom, widthMaxRoom);
            roomHeight = Random.Range(heightMinRoom, heightMaxRoom);
        }
        else {
            switch (wall.direction) {
                case "South":
                    roomWidth = 3;
                    roomHeight = Random.Range(minCorridorLength, maxCorridorLength);
                    break;
                case "North":
                    roomWidth = 3;
                    roomHeight = Random.Range(minCorridorLength, maxCorridorLength);
                    break;
                case "West":
                    roomWidth = Random.Range(minCorridorLength, maxCorridorLength);
                    roomHeight = 3;
                    break;
                case "East":
                    roomWidth = Random.Range(minCorridorLength, maxCorridorLength);
                    roomHeight = 3;
                    break;

            }
        }

        int xStartingPoint;
        int yStartingPoint;

        if (isFirst) {
            xStartingPoint = mapWidth / 2;
            yStartingPoint = mapHeight / 2;
        }
        else {
            int id;
            if (wall.positions.Count == 3) id = 1;
            else id = Random.Range(1, wall.positions.Count - 2);

            xStartingPoint = wall.positions[id].x;
            yStartingPoint = wall.positions[id].y;
        }

        Vector2Int lastWallPosition = new Vector2Int(xStartingPoint, yStartingPoint);

        if (isFirst) {
            xStartingPoint -= Random.Range(1, roomWidth);
            yStartingPoint -= Random.Range(1, roomHeight);
        }
        else {
            switch (wall.direction) {
                case "South":
                    if (type == "Room") xStartingPoint -= Random.Range(1, roomWidth - 2);
                    else xStartingPoint--;
                    yStartingPoint -= Random.Range(1, roomHeight - 2);
                    break;
                case "North":
                    if (type == "Room") xStartingPoint -= Random.Range(1, roomWidth - 2);
                    else xStartingPoint--;
                    yStartingPoint ++;
                    break;
                case "West":
                    xStartingPoint -= roomWidth;
                    if (type == "Room") yStartingPoint -= Random.Range(1, roomHeight - 2);
                    else yStartingPoint--;
                    break;
                case "East":
                    xStartingPoint++;
                    if (type == "Room") yStartingPoint -= Random.Range(1, roomHeight - 2);
                    else yStartingPoint--;
                    break;
            }
        }

         if (!CheckIfHasSpace(new Vector2Int(xStartingPoint, yStartingPoint), new Vector2Int(xStartingPoint + roomWidth - 1, yStartingPoint + roomHeight - 1))) {
            return;
        }

        room.walls = new Wall[4];

        for (int i = 0; i < room.walls.Length; i++) {
            room.walls[i] = new Wall();
            room.walls[i].positions = new List<Vector2Int>();
            room.walls[i].length = 0;

            switch (i) {
                case 0:
                    room.walls[i].direction = "South";
                    break;
                case 1:
                    room.walls[i].direction = "North";
                    break;
                case 2:
                    room.walls[i].direction = "West";
                    break;
                case 3:
                    room.walls[i].direction = "East";
                    break;
            }
        }

        for (int y = 0; y < roomHeight; y++) {
            for (int x = 0; x < roomWidth; x++) {
                Vector2Int position = new Vector2Int();
                position.x = xStartingPoint + x;
                position.y = yStartingPoint + y;

                room.positions.Add(position);

                MapManager.map[position.x, position.y] = new Tile();
                MapManager.map[position.x, position.y].xPosition = position.x;
                MapManager.map[position.x, position.y].yPosition = position.y;

                if (y == 0) {
                    room.walls[0].positions.Add(position);
                    room.walls[0].length++;
                    MapManager.map[position.x, position.y].type = "Wall";
                }
                if (y == (roomHeight - 1)) {
                    room.walls[1].positions.Add(position);
                    room.walls[1].length++;
                    MapManager.map[position.x, position.y].type = "Wall";
                }
                if (x == 0) {
                    room.walls[2].positions.Add(position);
                    room.walls[2].length++;
                    MapManager.map[position.x, position.y].type = "Wall";
                }
                if (x == (roomWidth - 1)) {
                    room.walls[3].positions.Add(position);
                    room.walls[3].length++;
                    MapManager.map[position.x, position.y].type = "Wall";
                }
                if (MapManager.map[position.x, position.y].type != "Wall") {
                    MapManager.map[position.x, position.y].type = "Floor";
                }
            }
        }

        if (!isFirst) {
            MapManager.map[lastWallPosition.x, lastWallPosition.y].type = "Floor";
            switch (wall.direction) {
                case "South":
                    MapManager.map[lastWallPosition.x, lastWallPosition.y - 1].type = "Floor";
                    break;
                case "North":
                    MapManager.map[lastWallPosition.x, lastWallPosition.y + 1].type = "Floor";
                    break;
                case "West":
                    MapManager.map[lastWallPosition.x - 1, lastWallPosition.y].type = "Floor";
                    break;
                case "East":
                    MapManager.map[lastWallPosition.x + 1, lastWallPosition.y].type = "Floor";
                    break;
            }
        }

        room.width = roomWidth;
        room.height = roomHeight;
        room.type = type;
        allFeatures.Add(room);
        countFeatures++;
    }

    bool CheckIfHasSpace(Vector2Int start, Vector2Int end) {
        for (int y = start.y; y <= end.y; y++) {
            for (int x = start.x; x <= end.x; x++) {
                if (x < 0 || y < 0 || x >= mapWidth || y >= mapHeight) return false;
                if (MapManager.map != null) return false;
            }
        }

        return true;
    }

    Wall ChoseWall(Feature feature) {
        for (int i = 0; i < 10; i++) {
            int id = Random.Range(0, 100) / 25;
            if (!feature.walls[id].hasFeature) {
                return feature.walls[id];
            }
        }
        return null;
    }

    void DrawMap(bool isASCII) {
        if (isASCII) {
            Text screen = GameObject.Find("ASCIITest").GetComponent<Text>();

            string asciiMap = "";

            for (int y = (mapHeight - 1); y >= 0; y--) {
                for (int x = 0; x < mapWidth; x++) {
                    if (MapManager.map[x, y] != null) {
                        switch (MapManager.map[x, y].type) {
                            case "Wall":
                                asciiMap += "#";
                                break;
                            case "Floor":
                                asciiMap += ".";
                                break;
                        }
                    }
                    else {
                        asciiMap += " ";
                    }

                    if (x == (mapWidth - 1)) {
                        asciiMap += "\n";
                    }
                }
            }

            screen.text = asciiMap;
        }
    }
}

All Articles