рдореИрдВрдиреЗ рдпрд╣ рд▓реЗрдЦ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдЦ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ
"рдореИрдВ рд░реЛрдмреЛрдХреЛрдб рдХрд╛ рдЪреИрдВрдкрд┐рдпрди рдХреИрд╕реЗ рдмрдирд╛" рдФрд░ рдЗрд╕рдореЗрдВ рд░реВрд╕реА-рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рд╢реБрд░реВ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрд╛ред рд░реЛрдмреЛрдХреЛрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЗрдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрд╛рд░реНрдп рдПрдХ рдЯреИрдВрдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИред рдореИрдВ рдмреАрдЬ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреНрд▓рд┐рдк рджреЗ рджреВрдВрдЧрд╛ рдХрд┐ рдмрд╛рддрдЪреАрдд рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧреА:
рдкрд░рд┐рдЪрдп
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкрд╛рдардХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рдпрд╛ рдЙрд╕ рдкрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
Robocode рдореЗрдВ 4 рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЯреВрд░реНрдирд╛рдореЗрдВрдЯ рд╣реИрдВ:
- рджреНрд╡рдВрджреНрд╡, 800 рд╕реЗ 600 рдХреЗ рдмреАрдЪ рдореИрджрд╛рди рдкрд░ 2 рд░реЛрдмреЛрдЯ
- рдлрд╛рдЗрдЯ (рдореЗрд▓реЗ), рдкреНрд░рддрд┐ 1000 рдХреНрд╖реЗрддреНрд░ рдкрд░ 10 рд░реЛрдмреЛрдЯ
- рдЯреАрдореЛрдВ, 1200 рдкрд░ 1200 рдкреНрд░рддрд┐ рдлрд╝реАрд▓реНрдб 5 рд░реЛрдмреЛрдЯ рдХреА 2 рдЯреАрдореЗрдВ
- рдбрдмрд▓ рджреНрд╡рдВрджреНрд╡рдпреБрджреНрдз (рдЯреНрд╡рд┐рдирдбреНрдпреВрд▓), 2 рд░реЛрдмреЛрдЯреЛрдВ рдХреА 2 рдЯреАрдореЗрдВ 800 рд╕реЗ 800 рдХреЗ рдореИрджрд╛рди рдкрд░
рджреНрд╡рдВрджреНрд╡рдпреБрджреНрдз рдореЗрдВ 4 рднрд╛рд░ рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рд╣реИрдВ рдФрд░ рдПрдХ рд▓рдбрд╝рд╛рдИ:
- рдиреИрдиреЛ <= 249 рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдХреЗ рдмрд╛рдЗрдЯреНрд╕
- рдорд╛рдЗрдХреНрд░реЛ <= 749 рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдХреЗ рдмрд╛рдЗрдЯреНрд╕
- рдорд┐рдиреА <= 1499 рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдХреЗ рдмрд╛рдЗрдЯреНрд╕
- рдореЗрдЧрд╛ (рд╕рд╛рдорд╛рдиреНрдп) - рдЕрд╕реАрдорд┐рдд
рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд╡рдЬрди рд╢реНрд░реЗрдгреА рдореЗрдВ рджреНрд╡рдВрджреНрд╡рдпреБрджреНрдз рдХреЗ рд▓рд┐рдП рд░реЛрдмреЛрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рд░реЛрдмреЛрдЯ рдорд╛рдЗрдХреНрд░реЛ рд╢реНрд░реЗрдгреА рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдпреЛрдЯреЗрдХ рдЖрдХрд╛рд░ рдЕрдиреБрдХреВрд▓рди рдПрдХ рд╕рдВрдкреВрд░реНрдг рд╡рд┐рдЬреНрдЮрд╛рди рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЬреНрдЮрд╛рди рд╕рдлрд▓ рдиреИрдиреЛрдмреЛрдЯреНрд╕ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдЬрд┐рд╕рдХрд╛ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЦреБрд▓рд╛рд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЯреНрд░реЗрдирд┐рдВрдЧ
рдЕрдкрдиреЗ рдЪреИрдВрдкрд┐рдпрди рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдЬрд╛рд╡рд╛ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╕рдордп рдЦреЗрд▓ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛ 6 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░реЛрдмреЛрдЯ рдХреЛ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)
- рд░реЛрдмреЛрдХреЛрдб рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (рдлрд┐рд░ рд╕реЗ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдореЗрдВ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд░реЛрдмреЛрдЯ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ)ред
рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ:
- рдХрд┐рд╕реА рднреА рдЖрдзреБрдирд┐рдХ рдЬрд╛рд╡рд╛ рдЖрдИрдбреАрдИ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдХрд┐рд╕реА рдХреЛ рднреА рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдпрджрд┐ рдореЗрд░реЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдкреАрдПрдо рдореЗрдВ)
- рдЪреАрдВрдЯреА рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА
рдЦреЗрд▓ рднреМрддрд┐рдХреА
рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдЦрдВрдб рдХреЗ рд╕рд╛рде, рд▓реЗрдЦ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЦрдВрдб рдХрд╛рдлреА рдЙрдиреНрдирдд рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рдЪрд░рдгреЛрдВ рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкрдврд╝рд╛ рдФрд░ рд╕рдордЭрд╛ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдореЗрдВ рд░рдЦрд╛, рдЬрд┐рд╕реЗ рдореИрдВ рд╢реАрдШреНрд░ рд╣реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ред
UPD: рднреМрддрд┐рдХреА рдкрд░ рдПрдХ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд
http://habrahabr.ru/post/147956/рд░реЛрдмреЛрдЯ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЦреЗрд▓ рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдПрдХ рдкреВрд░реА рдкрджрд╛рдиреБрдХреНрд░рдо рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рд░реЛрдмреЛрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ "рд╕рд░рд▓" рд░реЛрдмреЛрдХреЛрдб рд╣реИред рд░реЛрдмреЛрдЯ рд╡рд░реНрдЧ рдЬреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдпрд╛ рддреЛ рдЪрд▓рддреЗ рд╣реИрдВ, рдпрд╛ рдШреБрдорд╛рддреЗ рд╣реИрдВ, рдпрд╛ рдЧреЛрд▓реА рдорд╛рд░рддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдмреЛрдирд╕ рд╣реИ - рдРрд╕реЗ рд░реЛрдмреЛрдЯ рджреАрд╡рд╛рд░реЛрдВ рд╕реЗ рдЯрдХрд░рд╛рд╡ рд╕реЗ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рддреЗ рд╣реИрдВ)ред рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рд░реЛрдмреЛрдЯ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ рдФрд░ рдореИрдВ рд▓реБрдЯреЗрдХреЛрдб.рдЖрдбрд╡рдВрдЯреЗрдбрд░реЛрдмреЙрдЯ рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдореЗрдВ (рдореИрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реВрдВрдЧрд╛ рдХрд┐ рдЖрдкрдиреЗ рдореЗрд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ) рд╕реЗ рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рднреА рднрд╛рдЧреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред Robocode.TeamRobot рд╡рд░реНрдЧ рднреА рдирд┐рд░реНрдмрд╛рдз рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рд╣реИред
рд░реЛрдмреЛрдЯ рдХреЛ рдХрдИ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬрд╝ рджреВрдВрдЧрд╛:
- рд╕реЗрдЯрдЕрд╣реЗрдб - рдкрд┐рдХреНрд╕рд▓ рдХреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдзрд┐рдХрддрдо рдЧрддрд┐ рдкрд░ (рдФрд░ рдЕрдЧрд░ рд░реЛрдмреЛрдЯ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреАрдЫреЗ рдХреА рдУрд░ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ рддреЛ рдзреАрдорд╛)ред рдпрджрд┐ рддрд░реНрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реИ, рддреЛ рд░реЛрдмреЛрдЯ рд╡рд╛рдкрд╕ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ
- setFire рдФрд░ setFireBullet - рджреА рдЧрдИ рд╢рдХреНрддрд┐ рдХреЗ рд╕рд╛рде рд╢реВрдЯ рдХрд░реЗрдВред
- setTurnRightRadians, setTurnLeftRadians, setTurnGunRightRadians, setTurnGunLeftRadians, setTurnRadarRightRadians, setTurnRadarLeftRadians, рд░реЗрдбрд┐рдпрди рдореЗрдВ рджрд┐рдП рдЧрдП рджрд┐рд╢рд╛-рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдмрдВрдзрд┐рдд рднрд╛рдЧреЛрдВ рдХрд╛ рдШреВрд░реНрдгрди - (рд░реЗрдбрд┐рдпрди рдореЗрдВ рд╡рд╣рд╛рдБ)ред * рд░рд╛рдЗрдЯрд░рд╛рдбрд┐рдпрди - рд╕рдВрдмрдВрдзрд┐рдд рднрд╛рдЧ рдХреЛ рджрдХреНрд╖рд┐рдгрд╛рд╡рд░реНрдд рдШреБрдорд╛рддрд╛ рд╣реИ, * рд╡рд╛рдордорд╛рд░реНрдЧреА, рдХреНрд░рдорд╢рдГ, рд╡рд╛рдорд╛рд╡рд░реНрддред
рдкреНрд░рддреНрдпреЗрдХ рдореЛрдбрд╝ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд░реЛрдмреЛрдЯ рдХреЛ рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░реА рдШрдЯрдирд╛рдПрдБ рд╣реИрдВ рдФрд░ рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬрд╝реЛрдВ рдХреЛ рджреВрдВрдЧрд╛:
- StatusEvent - рд░реЛрдмреЛрдЯ рдХреА рд╕реНрдерд┐рддрд┐ (рд╕реНрдерд┐рддрд┐, рдЧрддрд┐, рднрд╛рдЧреЛрдВ рдХреА рджрд┐рд╢рд╛, рдЖрджрд┐)ред
- рдбреЗрдердЗрд╡реЗрдВрдЯ - рд░реЛрдмреЛрдЯ рдЕрднреА рдирд╖реНрдЯ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред
- BulletHitEvent - рдПрдХ рд░реЛрдмреЛрдЯ рдХреА рдЧреЛрд▓реА рджреВрд╕рд░реЗ рд░реЛрдмреЛрдЯ рдХреЛ рд▓рдЧреАред
- HitByBulletEvent - рдПрдХ рджреБрд╢реНрдорди рдХреА рдЧреЛрд▓реА рд░реЛрдмреЛрдЯ рдХреЛ рдорд╛рд░рд╛ред
- HitRobotEvent - рджреБрд╢реНрдорди рдХреЗ рд╕рд╛рде рдПрдХ рдЯрдХреНрдХрд░ рд╣реБрдИред
- HitWallEvent - рдПрдХ рджреАрд╡рд╛рд░ рдХреА рдЯрдХреНрдХрд░ рд╣реБрдИред
- рд╕реНрдХреИрдирд░реЛрдмреЛрдЯреЗрд╡реЗрдВрдЯ - рдЕрдВрддрд┐рдо рдЪрд╛рд▓ рджреБрд╢реНрдорди рджреНрд╡рд╛рд░рд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдШрдЯрдирд╛ рдореЗрдВ рджреБрд╢реНрдорди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ (рд╡рд╣ рд╕рдм рдЬреЛ рдЙрд╕рдХреА рд╕реНрдерд┐рддрд┐, рдЙрд╕рдХреА рдКрд░реНрдЬрд╛, рдЙрд╕рдХреЗ рдЖрдВрджреЛрд▓рди рдХреА рджрд┐рд╢рд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рддреИрдпрд╛рд░реА
рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдк рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдЪреАрдВрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдпрд╣рд╛рдВ рд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
https://github.com/aleksey-zhidkov/HabrahabrTutorial , рдпрд╛ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдирд┐рдореНрди рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдПрдВ:
/ рд╣реИрдмреНрд░рд╣реНрд░рд╛рдЯреНрдпреВрдЯрд░реНрд╕
+ - / src
- build.properties
- build.xml
Build.properties рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рд╣реИ:
bin.dir = рдмрд┐рди
buildds.dir = рдмрдирд╛рддрд╛ рд╣реИ
robocode.dir =; Robocode рд╣реЛрдо рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдХрд╛ рдкрде, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ C: \\ Robocode (рдореИрдВ рдЬрд╛рд╡рд╛ рдЧреБрдг рдкреНрд░рд╛рд░реВрдк рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╕реНрд▓реИрд╢ рдмрдЪ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)
robocode.jar = $ {robocode.dir} \\ libs \\ robocode.jar
рдмрд┐рд▓реНрдб.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рд╣реИ:
<?xml version="1.0" encoding="UTF-8"?> <project name="HabrahabrTutorial" basedir="." default="release"> <property file="build.properties"/> <property name="robot.version" value="0.1"/> <property name="robot.package" value="ru.jdev.habrahabr"/> <property name="robot.path" value="ru/jdev/habrahabr"/> <property name="robot.name" value="HabrahabrTutorial"/> <path id="src.files"> <pathelement location="src"/> </path> <target name="init"> <mkdir dir="${bin.dir}"/> </target> <target name="compile" depends="init" description="Compiles source files"> <javac destdir="${bin.dir}" debug="on" debuglevel="lines,vars,source" optimize="yes" target="1.6"> <src refid="src.files"/> <classpath> <pathelement location="${robocode.jar}"/> </classpath> </javac> </target> <target name="clean" description="Deletes all previous build artifacts"> <delete dir="${bin.dir}"/> </target> <target name="release" depends="clean, compile"> <copy todir="${bin.dir}"> <fileset dir="src"/> </copy> <echo file="${bin.dir}/${robot.path}/${robot.name}.properties">robocode.version=1.7.3 robot.java.source.included=true robot.version=${robot.version} robot.author.name=Alexey jdev Zhidkov robot.classname=${robot.package}.${robot.name} robot.name=${robot.name} robot.description=Tutorial robot for habrahabr.ru </echo> <jar destfile="${builds.dir}\${robot.package}.${robot.name}_${robot.version}.jar" compress="true"> <fileset dir="${bin.dir}"/> </jar> <copy todir="${robocode.dir}\robots\"> <fileset file="${builds.dir}\${robot.package}.${robot.name}_${robot.version}.jar"/> </copy> <delete includeEmptyDirs="true"> <fileset dir="${bin.dir}" includes="**/*"/> </delete> </target> </project>
рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдореЗрдВ рдЪреАрдВрдЯреА рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ HabrahabrTutorial \ buildds \ ru.jdev.habrahabr.HabrahabrTutorial_0.1.jar рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓ ru \ jdev \ habrahabr \ HabrahabrTutorial.properties рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред (рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЬрд╛рд╡рд╛ рд╕реЗ рджреВрд░ рд╣реИрдВ, рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд╛рд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
рдПрдХ рд░реЛрдмреЛрдЯ рдмрдирд╛рдирд╛
рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ $ {robocode_home} /libs/robocode.jar рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдлрд┐рд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдпрд╛ рддреЛ рдХреЛрдб рдХреЛ рд░реЛрдмреЛрдЯ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрд╡рдпрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗ, рдпрд╛ рдпрд╣ рдХрд┐ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдирд┐рдореНрди рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ ru.jdev.habrahabr.HabrahabrTutorial рдмрдирд╛рдПрдВ:
package ru.jdev.habrahabr; import robocode.AdvancedRobot; public class HabrahabrTutorial extends AdvancedRobot { @Override public void run() { while (true) { execute(); } } }
рдЧреЗрдо рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рдмреИрдЯрд▓ рдХреЛ рдЪреБрдиреЗрдВ -> рдирдпрд╛ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ ru.jdev.habrahabr.HabrahabrTutorial рд░реЛрдмреЛрдЯ рдХреА рд╕реВрдЪреА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
рдЪрд░рдг рдПрдХ: рдореГрддреНрдпреБ рдХреЗ рдмрд╛рдж рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ, рджреБрд╢реНрдорди рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ, рд░рдбрд╛рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВ рдФрд░ рдбреНрд░рд╛ рдХрд░реЗрдВред
рд╣рдо рдХреЛрдб рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ (рдпрд╣рд╛рдВ рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╕реАрдзреЗ рдХреЛрдб рдореЗрдВ рджреА рдЧрдИ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд╛рдж рдореЗрдВ, рдЬреЛрдбрд╝рд╛ рд▓рд╛рдЗрдиреЛрдВ рдпрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ / * + * /, рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдпрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ / * ~ * /):
package ru.jdev.habrahabr; import robocode.AdvancedRobot; import robocode.DeathEvent; import robocode.ScannedRobotEvent; import robocode.util.Utils; import java.awt.*; import java.awt.geom.Point2D; import static java.lang.Math.signum; import static java.lang.Math.toRadians; public class HabrahabrTutorial extends AdvancedRobot { private static final double RADIANS_5 = toRadians(5); private boolean isAlive = true; private double enemyX = -1; private double enemyY = -1; @Override public void run() { setTurnRadarRightRadians(Double.POSITIVE_INFINITY);
рдЪрд░рдг рджреЛ: рд╢реБрд░реВ рдХрд░рдирд╛
рд╣рдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХрдХреНрд╖реАрдп рдЖрдВрджреЛрд▓рди рдХреА рдЕрд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдХрдХреНрд╖реАрдп рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рджреБрд╢реНрдорди рдЕрднреА рднреА рдЦрдбрд╝рд╛ рд╣реИ, рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд▓рдЧрд╛рддрд╛рд░ рдПрдХ рджрд┐рд╢рд╛ рджреЗрдЧрд╛, рддреЛ рд╣рдорд╛рд░рд╛ рдЯреИрдВрдХ рджреБрд╢реНрдорди рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╕рд░реНрдХрд▓ рдмрдирд╛ рджреЗрдЧрд╛ред рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдШрдЯрдХ рд╣рдорд╛рд░реЗ рдЯреИрдВрдХ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдХрдард┐рди рд▓рдХреНрд╖реНрдп рдмрдирд╛ рджреЗрдЧрд╛ред рдЖрдВрджреЛрд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ рддрд░реАрдХреЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
private double getDistance() {
рдФрд░ рдЗрд╕ рд╢рд░реНрдд рдХреЗ рдЕрдВрджрд░ рдХрд┐ рдореБрдЦреНрдп рд▓реВрдк рдореЗрдВ рджреБрд╢реНрдорди рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:
setTurnRadarRightRadians(radarTurn); final double bodyTurn = getBodyTurn(); setTurnRightRadians(bodyTurn); if (getDistanceRemaining() == 0) { final double distance = getDistance(); setAhead(distance); } }
рддреАрди рдЪрд░рдг: рдЖрдЧ!
рд╣рдо рд╕рд░рд▓рддрдо рд▓рдХреНрд╖реНрдпреАрдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рджреБрд╢реНрдорди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкрд░ рд╢реВрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реЛрдмреЛрдЯ рд╣рдореЗрд╢рд╛ рджреБрд╢реНрдорди рдХреЛ рдмрдВрджреВрдХ рдХреА рдиреЛрдХ рдкрд░ рд░рдЦреЗрдЧрд╛ рдФрд░ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдЧреЛрд▓реА рдорд╛рд░ рджреЗрдЧрд╛ред рдХрд╛рд░реНрдп рдПрдХ рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
private double getGunTurn() {
рдФрд░ рдореБрдЦреНрдп рд▓реВрдк рдореЗрдВ рддреАрди рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝рдХрд░:
setAhead(distance); } final double gunTurn = getGunTurn(); setTurnGunRightRadians(gunTurn); setFire(2); }
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ
рдФрд░ рдлрд┐рд░ рд░реЛрдмреЛрдЯ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ рдХрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдЦреЗрд▓ рдХреА рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рддрдХрдиреАрдХреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдЕрдВрдд рддрдХ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХреАред
PS рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА