рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдпрд╛ рдкрд╣реЗрд▓реА рдХреНрд░рд╛рдЗрд╕-рдХреНрд░реЙрд╕ рдХреЗ рд▓рд┐рдП рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ


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

рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдПрдХ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред рд╣рдо рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦреЗрдВрдЧреЗ, рд╣рдо рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдФрд░ рдЬреАрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ + рд╣рдо рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕реА рдХреЗ рд╕рд╛рде рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реЗ рдЬреЛ рд╕рд┐рд░реНрдл рдЬрд╛рд╡рд╛ рд╕реАрдЦ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдЦ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдХрд┐рд╕реА рдХреА рджрд┐рд▓рдЪрд╕реНрдкреА - рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рдпрд╣рд╛рдВ рдореИрдВ "рдЕрдзреНрдпрдпрди" рд╕реЗ рдПрдХ рдЕрдВрд╢ рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ рдкрд╛рдардХ рдХреЛ рдЕрджреНрдпрддрд┐рдд рдХрд░реЗрдЧрд╛ред
рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд░реНрдЧ рдкрд╣реЗрд▓реА рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╢рдмреНрдж рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкрддреНрд░ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рд╣реИред рдРрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░рд▓ рдкрд╣реЗрд▓реА рд╣реИ - рдХреНрд░рд┐рд╕-рдХреНрд░реЙрд╕ред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд░рд╛рдЗрд╕-рдХреНрд░реЙрд╕ рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рд▓рдВрдмрд╛рдИ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдХреЗ рднреАрддрд░ рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЙрд╕ рдпреЛрдЬрдирд╛ рд╕реЗ рдЬрд┐рд╕рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдпреЛрдЬрдирд╛ рдЙрд╕реА рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдХреНрд░реЙрд╕рд╡рд░реНрдб рдкрд╣реЗрд▓реА рдореЗрдВ - рдЪреМрд░рд╛рд╣реЗ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╢рдмреНрджреЛрдВ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрдХреНрд╖рд░ рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рдВрдЦреНрдпрд╛рдПрдБ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╢рдмреНрдж рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЖрдк рдЖрдХреГрддрд┐ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдкрд╣реЗрд▓реА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкрддреНрд░ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрд╕ рдПрдХ рддреИрдпрд╛рд░-рдкреВрд░реНрдг, рдкреВрд░реНрдг рдпреЛрдЬрдирд╛ + рдПрдХ рдЫреЛрдЯрд╛ рдмреЛрдирд╕ рджреЗрдЧрд╛ред рд╣рдо рдПрдХ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╢рдмреНрджреЛрдВ рдХреА рд╕реВрдЪреА рдкрдврд╝реЗрдВрдЧреЗред рдпрджрд┐ рдХрдИ рдРрд╕реЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдкрд╣реЗрд▓реА рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЦрд╝реБрд╢реА рд╕реЗ рдЗрд╕ рдЕрд╡рд╕рд░ рдХреЛ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред
Nus, рд╢рдмреНрджреЛрдВ рд╕реЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рддрдХ - рдПрдХ рдХрд╛рд░реНрдп рд╣реИ, рдПрдХ рдЗрдЪреНрдЫрд╛ рд╣реИ, рдЪрд▓реЛ рдЪрд▓реЗрдВ!

рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░


рдареАрдХ рд╣реИ, рдпрд╛ рд╣рдо рдХреИрд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рдм рдХреБрдЫ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ ред
рдореЗрд░реЗ рдкрд╛рд╕ рдХрдИ рд╡рд┐рдХрд▓реНрдк рдереЗ, рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдореИрдВрдиреЗ рдХрдИ рдмрд╛рд░ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╕рдм рдХреБрдЫ рдорд┐рдЯрд╛ рджрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рд▓реЛрдЧ рд╣реЛрдВрдЧреЗ рдЬреЛ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рддрд░реАрдХреЗ рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдзреНрд╡рдирд┐ рдЖрд▓реЛрдЪрдирд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдЪрд╛рд░ "рдкрддреНрд░" рд╡рд░реНрдЧ рдФрд░ рдЗрди "рд╢рдмреНрдж" рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдкреНрд░рддреНрдпреЗрдХ "рд╕реЗрд▓ рд╡рд┐рдж рдП рд▓реЗрдЯрд░" рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рддреАрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рджреЛ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдЗрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╕реЗрд▓ рдХреЗ рдЖрдХрд╛рд░ (рд╕реНрдерд┐рд░) рд╕реЗ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реЗрд▓ рдФрд░ рдкреНрд░рддреАрдХ рдХрд╣рд╛рдБ рдЦреАрдВрдЪреЗ рдЧрдП рд╣реИрдВред рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдореБрдЦреНрдп рдХрдард┐рдирд╛рдИ рдпрд╣ рдереА рдХрд┐ рд╕рднреА рд╢рдмреНрджреЛрдВ рдХреЛ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ред рддрджрдиреБрд╕рд╛рд░, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ рд╕рднреА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдг рднреА рд╣реЛрдВрдЧреЗред рдореИрдВ рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдЪрд╛рд░: рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдореЗрдВ рдХреНрд╖реИрддрд┐рдЬ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рднреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдордиреНрд╡рд┐рдд рдЖрдо рд╣реИ, рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдПрдХреНрд╕ рдореЗрдВред рдЖрдЗрдП рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рд╢рдмреНрдж рдХрд╛ рд╕рдордиреНрд╡рдп" рд╣реЛрдЧрд╛, рдЗрд╕ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░рдВрддрд░ рдореВрд▓реНрдп рдФрд░ рдмрджрд▓реЗ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рдордиреНрд╡рдп рд╣реЛрддрд╛ рд╣реИред , рд╢рдмреНрдж рдореЗрдВ рд╕рднреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧред рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, "рдлрд╝реБрд╣реБрд╣реБрд╣, рдХрд┐рд╕реА рддрд░рд╣ рднреНрд░рд╛рдордХ рд╣реИ," рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛, рд╢рд╛рдпрдж рдХреЛрдб рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрдПрдЧрд╛ред рд╡реИрд╕реЗ, рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ, GitHub рдкрд░ рдПрдХ рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВ, рдЖрдк рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ "рдкрддреНрд░ рдкрд┐рдВрдЬрд░реЗ"

public class CharCell { private char value; private int variableCoord; public final static int CELL_SIZE = 30; public CharCell( char value, int variableCoord ) { this.value = value; this.variableCoord = variableCoord; } ... } 

рд╣рдорд╛рд░рд╛ "рд╢рдмреНрдж"

рдЪрд╛рд░рд╕реЗрд▓ рдПрд░реЗ рдХреЛ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдорд╛рд░реЗ рд╢рдмреНрдж рдХреЗ рд╕рднреА рдЕрдХреНрд╖рд░, рдЗрд╕ рд╢рдмреНрдж рдХрд╛ рд╕рдордиреНрд╡рдп рдФрд░ рдЗрдВрдЯреЗрдВрд╕ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдлреАрд▓реНрдб, рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рджреЛ рдЕрд░реНрде рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
 public class Orientation { public final static int HORIZ = 0; public final static int VERTIC = 1; } 

рд╕реНрдерд╛рдирд╛рдВрддрд░рдгреЛрдВ рдХрд╛ рдЗрддрдирд╛ рд╕рд░рд▓ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд┐рд╡рд╛рд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
 public class Word { private CharCell [] cells; private int orientation; private int wordCoord; private int length; public Word( String word, int orientation, int wordCoord, int initialVariableCoord ) { this.orientation = orientation; this.wordCoord = wordCoord; this.length = word.length(); cells = new CharCell[length]; for ( int i = 0 ; i < length ; i++ ) { cells[i] = new CharCell( word.charAt(i), initialVariableCoord + i ) ; } } ... } 

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

рдбреНрд░рд╛рдЗрдВрдЧ

рдбреНрд░рд╛рдЗрдВрдЧ рдХреЛрдб рдЪрд╛рд░рд╕реЗрд▓ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдФрд░ рд╢реЛрдЪрд░реНрд╕реЗрд▓ рд╡рд┐рдзрд┐ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИ, рдпрд╣ рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рд╣рдо рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдбреНрд░рд╛рдЗрдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ JComponent рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ PaintComponent () рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдРрд╕рд╛ рд╡рд░реНрдЧ рд╡рд░реНрдбрдЖрдпрд░ рд╡рд░реНрдЧ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред рдпрд╣ рдЗрд╕ рд╡рд░реНрдЧ рд╕реЗ рд╣реИ рдХрд┐ showCharCell рдлрд╝рдВрдХреНрд╢рди Graphics2D рдФрд░ рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдкреЗрдВрдЯрдХрдореНрдкреЛрдиреЗрдВрдЯ () рдкрджреНрдзрддрд┐ рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдбреНрд░рд╛рдЗрдВрдЧ рд╡рд┐рдзрд┐рдпрд╛рдВ рдФрд░ рдЪрд┐рддреНрд░, рдЖрдХрд╛рд░ рдФрд░ рдкрд╛рда рдХреА рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рд╣рд░ рдмрд╛рд░ рдПрдХ рдЦрд┐рдбрд╝рдХреА рдЦреАрдВрдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕рдХреЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЗ рдкреЗрдВрдЯрдХрдВрдкреЛрдиреЗрдВрдЯ () рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ "рд╕реЗрд▓ рдПрдХ рдкрддреНрд░ рдХреЗ рд╕рд╛рде" рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛
 public void showCharCell ( Graphics2D g2D, Font font, FontRenderContext context, int orient, int constCoord ) { int coordX; int coordY; if ( orient == Orientation.HORIZ ) { coordX = variableCoord * CELL_SIZE; coordY = constCoord * CELL_SIZE; } else { coordX = constCoord * CELL_SIZE; coordY = variableCoord * CELL_SIZE; } String s = String.valueOf(value); Rectangle2D bounds = font.getStringBounds( s, context ); LineMetrics metrics = font.getLineMetrics( s, context ); float descent = metrics.getDescent(); float leading = metrics.getLeading(); Rectangle2D.Double rect = new Rectangle2D.Double( coordX, coordY, CELL_SIZE, CELL_SIZE ); double x = rect.getX() + (rect.getWidth() - bounds.getWidth())/2; double y = rect.getY() + rect.getHeight() - descent - leading; g2D.draw( rect ); g2D.drawString( s, (int)x, (int)y ); } 

GetStringBounds () рд╡рд┐рдзрд┐ рдЙрд╕ рдЖрдпрдд рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИ рдЬрд┐рд╕ рд░реЗрдЦрд╛ рдХреЛ рд╣рдо рдЦреАрдВрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдорд╛рд░рд╛ рдкрддреНрд░ рдЦреАрдВрдЪреЗ рдЧрдП рд╡рд░реНрдЧ рдХреЗ рдмреАрдЪ рдореЗрдВ рд╣реЛред рдЪреМрдбрд╝рд╛рдИ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЙрд╕ рд╡рд░реНрдЧ рдХреА рдЪреМрдбрд╝рд╛рдИ рдорд┐рд▓рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рдкрддреНрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рдЪреМрдбрд╝рд╛рдИ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рддрд░рдл рдЦрд╛рд▓реА рдЬрдЧрд╣ рдХрд╛ рдЖрдХрд╛рд░ рд╡рд░реНрдЧ рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдЪрд░рд┐рддреНрд░ рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдКрдВрдЪрд╛рдИ рдореЗрдВ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рд╡рд░реНрдЧ рдХреЗ рдиреАрдЪреЗ рд╕реЗ рдкреНрд░рддреАрдХреЛрдВ рдХреА рд▓реИрдВрдбрд┐рдВрдЧ рдХреА рдЧрд╣рд░рд╛рдИ рдФрд░ рдЕрдЧреНрд░рдгреА ( рд╡рдВрд╢ рдФрд░ рдЕрдЧреНрд░рдгреА ) рдХреЛ рдШрдЯрд╛рдПрдВред рдЕрдм рд╣рдорд╛рд░реЗ рд╕рднреА рдЕрдХреНрд╖рд░ рдзреНрдпрд╛рди рд╕реЗ рдЙрдирдХреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдЖ рдЧрдП рд╣реИрдВред
рд╡рд░реНрдб рдХреНрд▓рд╛рд╕ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛ рдХрд┐рд╕реА рд╢рдмреНрдж рдХреЛ рдкреНрд░рд╛рдердорд┐рдХ рдмрдирд╛рддреА рд╣реИ:
 public void showWord( Graphics2D g2D, Font font, FontRenderContext context ) { for ( int i = 0 ; i < length ; i++ ) { cells[i].showCharCell ( g2D, font, context, orientation, wordCoord ); } } 

рдпрд╣ рд╣рдорд╛рд░реЗ рдЕрдзреНрдпрдпрди рдХреЗ рд╕рдмрд╕реЗ рдХрдард┐рди рд╡рд░реНрдЧ - рд╡рд░реНрдбрдЖрдпрд░ рдкрд░ рдЫреВрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдПрдХ JComponent рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд ArrayList <Word> mainWordArea рд╢рд╛рдорд┐рд▓ рд╣реИ ред рдпрд╣ рд╣рдорд╛рд░реА рд╢рдмреНрдж рдпреЛрдЬрдирд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдПрдХ рдирдпрд╛ рд╢рдмреНрдж рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╣реИ mainWordArea.add (рдирдпрд╛ рд╢рдмреНрдж ("рд╢рдмреНрдж", рдУрд░рд┐рдПрдВрдЯреЗрд╢рди .ORIZ, x, y)) , рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рднреА рд╕рдВрднрд╡ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдХреЗ рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдЦреИрд░, рдпрд╣рд╛рдБ paintComponent () рд╣реИ
 @Override public void paintComponent ( Graphics g ) { Graphics2D g2D = ( Graphics2D ) g; g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON ); context = g2D.getFontRenderContext(); g2D.setFont( font ); Iterator<Word> wordAreaIter = mainWordArea.iterator(); while ( wordAreaIter.hasNext() ) wordAreaIter.next().showWord( g2D, font, context ); } 

рд╣рдо рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдореБрдЦреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рднреА рд╢рдмреНрджреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкрд╛рдардХ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рддрд░реНрдХ рд╕реЗ рдЕрд╡рдЧрдд рдХрд░рд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдФрд░ рд╣рдо рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╕рднреА рддреИрдпрд╛рд░рд┐рдпрд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реА рдкрд╣реЗрд▓реА рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ!

рд╡рд╛рдкрд╕реА рдХреЗ рд╕рд╛рде рдмрд╕реНрдЯ


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

рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА! - рдпрд╣ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреА рдХреБрдВрдЬреА рд╣реИред рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреА рдЧрдгрдирд╛ рдЗрд╕ рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдкрдиреЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЪреМрд░рд╛рд╣реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрдкрд╛рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛рдПрдЧреАред рдЙрд╕реА рд╕рдордп, рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рддреБрд░рдВрдд рд╕рдВрднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдЗрд╖реНрдЯрддрдо (рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдЬреБрдбрд╝реЗ рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рдзрд╛рди) рдХреЛ рддреНрдпрд╛рдЧ рджреЗрдВрдЧреЗред
рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдореИрдВ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрдгрдирд╛ рдкрджреНрдзрддрд┐ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ - рд╢рдмреНрджрдмреИрдХрдЯреНрд░реИрдХрд┐рдВрдЧ ()
рдпрд╣ рдХрдИ рдЕрдиреНрдп рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдмреБрд▓рд╛рдПрдЧрд╛ред рдЧреИрд░-рдЗрд╖реНрдЯрддрдо рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрд╡реАрдХрд╛рд░ () рд╡рд┐рдзрд┐ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧреАред рд╢рд╛рдпрдж рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрд╛рд░рдг, рд╢рдмреНрджреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо рдХрд┐рд╕реА рд╕рдорд╛рдзрд╛рди рддрдХ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ, рд╕реНрд╡реАрдХрд╛рд░ () рд╡рд┐рдзрд┐ рд╣реЛрдЧреАред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд╕рднреА рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЬреЛ рд▓реЛрдЧ рд╕реНрд░реЛрдд рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЦреИрд░, рдореИрдВ рдореБрдЦреНрдп рдЧреБрдЪреНрдЫрд╛ рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛ред
рд╢рдмреНрджрдмреИрдХреИрдХрд┐рдВрдЧ ()
 /** *      (Backtracking) *   - */ private void wordsBackTracking ( ArrayWord<Word> wordArea, List<String> words ) { if ( accept( wordArea ) ) { ArrayWord<Word> tempWordArea = new ArrayWord<Word>( wordArea ); copyArrayWord( tempWordArea, wordArea ); allWordArea.add( tempWordArea ); mainWordArea = tempWordArea; return; } if ( reject( wordArea, words ) ) return; for ( int i = 0 ; i < words.size() ; i++ ) { List<String> tempWords = new LinkedList<String>( words ); String newWord = tempWords.get(i); tempWords.remove(i); addNewWord( wordArea, tempWords, newWord ); } } /** *   ,    */ private void addNewWord ( ArrayWord<Word> wordArea, List<String> words, String newWord ) { Word existentWord; for ( int k = 0 ; k < wordArea.size() ; k++ ) { existentWord = wordArea.get(k); ///        for ( int i = 0 ; i < existentWord.length() ; i++ ) { for ( int j = 0 ; j < newWord.length() ; j++ ) { if ( existentWord.get(i).value() == newWord.charAt(j) ) { int newOrient = invert( existentWord.orientation() ); int newWordCoord = existentWord.get(i).coord(); int initialVariableCoord = existentWord.coord() - j; Word word = new Word (newWord,newOrient,newWordCoord,initialVariableCoord); ///  ""  -   int interCount = wordArea.intersectCount(); if ( check ( wordArea, word, existentWord.coord() ) ) { wordArea.add ( word ); ///   (0,0)   int minX = wordArea.minX(); int minY = wordArea.minY(); if ( existentWord.orientation() == Orientation.HORIZ ) wordArea.setMinY( initialVariableCoord ); else wordArea.setMinX( initialVariableCoord ); ///   wordsBackTracking ( wordArea, words ); ///    wordArea.remove( wordArea.size()-1 ); wordArea.reset(); wordArea.setMinX( minX ); wordArea.setMinY( minY ); wordArea.setInterCount( interCount ); } } } } } } 


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

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


рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдХреЗ рд░реВрдк рдореЗрдВ github рдкрд░ рд▓рд┐рдВрдХ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛
рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рдХрд░реЗрдВ
рд▓реАрдЬрд┐рдП: javac CrissCrossFrame.java
рд░рди: рдЬрд╛рд╡рд╛ CrissCrossFrame
рдЗрд╕ рдкрд░, рдкреНрд░рд┐рдп рдкрд╛рдардХ, рдореБрдЭреЗ рдЕрдкрдиреА рдЫреБрдЯреНрдЯреА рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/In166471/


All Articles