рд▓рд╛рдЬрд░ - TImageFragment рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рд░рд▓ рдПрдиреАрдореЗрд╢рди

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдЧреНрд░рджреВрдд

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

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

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

рдЗрди рддреИрдпрд╛рд░ рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рд╕реЗ рдХрдИ рд╡реЗрдм рдкрд░ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдЗрд╕ рд╕рд╛рдЗрдЯ рдкрд░ ред

рдЫрд╡рд┐ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ (рдФрд░ рддреИрдпрд╛рд░ рдХрд░реЗрдВ)

рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдЫрд╡рд┐ рдХреЛ рдЪреБрдирд╛:

- рдмрд╣реБрдд рд╣реА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдлреАрдирд┐рдХреНрд╕ рдкрдХреНрд╖реА рдЕрдкрдиреЗ рдкрдВрдЦ рдлрдбрд╝рдлрдбрд╝рд╛рддрд╛ рд╣реИред

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

рдЗрд╕ рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ 384x384 рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХрд╛ рдЖрдХрд╛рд░ 96x96 рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдЫрд╡рд┐ рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдЙрдкрдпреЛрдЧ рд╣рдореЗрдВ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ: рдЫрд╡рд┐ рдХреЗ рдХреБрдЫ рдлрд╝реНрд░реЗрдореЛрдВ рдХреЛ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдирдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЖрд╕рдиреНрди рдлреНрд░реЗрдо рдкрд░ рдкрдбрд╝реЗ, рдФрд░ рдПрдиреАрдореЗрд╢рди рдХреЗ рджреМрд░рд╛рди, рдкреАрд▓реЗ рд╕реНрдЯреНрд░реЛрдХ рд╕реНрдЯреНрд░реЛрдХ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдлреНрд▓реИрд╢ рд╣реЛрддреЗ рд╣реИрдВред

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

рд╕рд╣реА рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:



- рдирдЧреНрди рдЖрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рде, рдЕрдВрддрд░ рдЕрджреГрд╢реНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ

1. "рдПрдкреНрд▓рд┐рдХреЗрд╢рди" рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, IDE "Project1" рдирд╛рдордХ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рддреБрд░рдВрдд "Unit1" рдирд╛рдордХ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рддрд╛ рд╣реИ, "" TForm1 "рдирд╛рдордХ рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдФрд░" Form1 "рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдирдП рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, IDE рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рди рдирд╛рдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдХрд╛ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рд╢реИрд▓реА рдорд╛рдирддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рд░реНрдердХ рдирд╛рдо рдорд┐рд▓реЗ рдЬреЛ рдХрд┐ рд╡рд╕реНрддреБ рдХреА рднреВрдорд┐рдХрд╛ рдпрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред

рддреЛ, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ "рдкреНрд░реЛрдЬреЗрдХреНрдЯ 1" рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди "рдлреАрдирд┐рдХреНрд╕" - рдЪрдпрдирд┐рдд рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЗ рдирд╛рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ред

2. рд╣рдорд╛рд░реЗ рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд╣реЗрдЬреЗрдВред

рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬрдирд╛ рдЙрдЪрд┐рдд рд╣реИ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдмрдЪрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рд╣рдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рд╣рдо рдЗрд╕реЗ рд╡рд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ), рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдоред рдореИрдВрдиреЗ "рдлреАрдирд┐рдХреНрд╕" рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдпрд╛ рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд "рдкреНрд░реЛрдЬреЗрдХреНрдЯ1.рдПрд▓рдкреАрдЖрдИ" (рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд "рдпреВрдирд┐рдЯ 1.рдкрд╛рд╕" рдХреЗ рдмрдЬрд╛рдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЙрдбреНрдпреВрд▓ рдлрд╛рдЗрд▓ ("UnitMain.pas)" рдХреЗ рдмрдЬрд╛рдп "рдлреАрдирд┐рдХреНрд╕ред рдПрд▓рдкреАрдЖрдИ)") рдХреЛ рдмрдЪрд╛рдпрд╛ред

рдЪрд░рд┐рддреНрд░ рдорд╛рдорд▓реЗ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ
рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЬрд░ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЛ рд▓реЛрдЕрд░рдХреЗрд╕ рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ: "Unitmain.pas", рд▓реЗрдХрд┐рди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╛рдо рд╡рд░реНрдгреЛрдВ рдХреЗ рдореВрд▓ рдорд╛рдорд▓реЗ рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрддрд╛ рд╣реИ: "рдпреВрдирд┐рдЯ UnitMain;"ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ; рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд╡рд░реНрдгреЛрдВ рдХреЗ рдореВрд▓ рдорд╛рдорд▓реЗ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрддрд╛ рд╣реИред

3. рдлреЙрд░реНрдо рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ рдФрд░ рдЙрд╕рдХрд╛ рд╢реАрд░реНрд╖рдХ рдмрджрд▓реЗрдВред

"Form1" ( рдирд╛рдо рд╕рдВрдкрддреНрддрд┐) рдирд╛рдордХ рдирд╡ рдирд┐рд░реНрдорд┐рдд рдлреЙрд░реНрдо, "TForm1" рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ "Form1" ( рд╢реАрд░реНрд╖рдХ рд╕рдВрдкрддреНрддрд┐) рд╢реАрд░реНрд╖рдХ рд╢рд╛рдорд┐рд▓ рд╣реИред рдлрд╝реЙрд░реНрдо рдХреА рдирд╛рдо рд╕рдВрдкрддреНрддрд┐ рдХреЛ "рдлреЙрд░реНрдореИрди" рдореЗрдВ рдмрджрд▓реЗрдВ, рдФрд░ рдХреНрд▓рд╛рд╕ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ "TFormMain" рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдХреИрдкреНрд╢рди рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ "рдлреАрдирд┐рдХреНрд╕" рдореЗрдВ рдмрджрд▓реЗрдВ рддрд╛рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╢реАрд░реНрд╖рдХ рд╡рд┐рдВрдбреЛ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛред

4. рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореБрдЭреЗ рдпреВрдирд┐рдЯрдореИрди.рдкрд╛рд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рда рдорд┐рд▓рд╛:

unit UnitMain; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs; type TFormMain = class(TForm) private public end; var FormMain: TFormMain; implementation {$R *.lfm} end. 


5. рд╕рдВрдХрд▓рди рдХрд░реЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛рдПрдБ (рдХреБрдВрдЬреА <F9>):



рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рдлрд╛рд░реНрдо рдкрд░ рд░рдЦреЗрдВ

рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓рд╛рдЬрд░ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд TImageFragment рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ - рд╣рдо рд╕реНрдкреНрд░рд╛рдЗрдЯ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рд▓рд┐рдЦрддреЗ рд╣реИрдВ , рдШрдЯрдХ рдкреИрд▓реЗрдЯ рдкрд░ "рдЧреЗрдо" рдЯреИрдм рдЪреБрдиреЗрдВ рдФрд░ рдлреЙрд░реНрдо рдореЗрдВ "TImageFragment" рдШрдЯрдХ рдЬреЛрдбрд╝реЗрдВред

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

  • рдКрдБрдЪрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдЧреБрдгреЛрдВ рдХреЛ 96 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ
  • рд▓реЗрдлреНрдЯ рдФрд░ рдЯреЙрдк рдЯреВ 0 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ (рдореЗрд░реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ)
  • рдирд╛рдо рд╕рдВрдкрддреНрддрд┐ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ "ImageFragment1" рд╕реЗ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп "рд╕реНрдкреНрд░рд╛рдЗрдЯ" рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ

рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдШрдЯрдХ рдЫрд╡рд┐ рдХрд╛ рдкрд╣рд▓рд╛ рдлреНрд░реЗрдо рджрд┐рдЦрд╛рдПрдЧрд╛:


UnitMain рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкрд╛рда рдореЗрдВ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рдЖрдПрдВрдЧреЗ :
- ImageFragment рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ

 uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ImageFragment; 

- рдХрдХреНрд╖рд╛ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА

  TFormMain = class(TForm) Sprite: TImageFragment; private public end; 


рдПрдиреАрдореЗрд╢рди рдЬреЛрдбрд╝реЗрдВ - рд╡рд┐рдВрдЧ рдлреНрд▓реИрдк

1. рдкреНрд░рдкрддреНрд░ рдореЗрдВ TTimer рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдирдпрд╛ рдШрдЯрдХ рдЬреЛрдбрд╝реЗрдВред

рдпрд╣ рдШрдЯрдХ рдШрдЯрдХ рдкреИрд▓реЗрдЯ рдХреЗ "рд╕рд┐рд╕реНрдЯрдо" рдЯреИрдм рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рдЖрдк рдЗрд╕реЗ рдлреЙрд░реНрдо рдкрд░ рдХрд┐рд╕реА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЬрдЧрд╣ рдкрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд░рдирд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

2. рдЬреЛрдбрд╝реЗ рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред

рдирдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ "рдЯрд╛рдЗрдорд░ 1" рдирд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ "рдЯрд┐рдорд░рд▓рд╛рдЗрд╡" рдХрд░ рджреЗрддреЗ рд╣реИрдВред рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдРрд╕реЗ рдирд╛рдо рджреЗрдирд╛ рдЕрдХреНрд╕рд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ: рдкрд╣рд▓рд╛ рд╡рд╕реНрддреБ рдХреЗ рд╡рд░реНрдЧ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЗрд╕рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

3. рдЗрдВрдЯрд░рд╡рд▓ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ 1000 рд╕реЗ 100 рдореЗрдВ рдмрджрд▓реЗрдВред

рдмрддрд╛ рджреЗрдВ рдХрд┐ рдЗрд╕ рдПрдирд┐рдореЗрд╢рди рдХреЗ рдлреНрд░реЗрдо рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рд╣рд░ 100 рдорд┐рд▓реАрд╕реЗрдХреЗрдВрдб рдпрд╛рдиреА 10 рдмрд╛рд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдмрджрд▓рддреЗ рд╣реИрдВред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрдВрдЦреЛрдВ рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рдпрд╛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ред

4. рдПрдХ OnTimer рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВред

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

5. рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВред

  Sprite.OffsetX := (Sprite.OffsetX + 96) mod 384; 

рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХрдХреНрд╖рд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:

  TFormMain = class(TForm) Sprite: TImageFragment; TimerLive: TTimer; procedure TimerLiveTimer(Sender: TObject); private public end; 

рдФрд░ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ - OnTimer рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 procedure TFormMain.TimerLiveTimer(Sender: TObject); begin Sprite.OffsetX := (Sprite.OffsetX + 96) mod 384; end; 

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

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

рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЖрдВрджреЛрд▓рди рдЬреЛрдбрд╝реЗрдВ

1. рдЙрдкрдпреЛрдЧ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЧрдгрд┐рдд рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝реЗрдВ

 uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, ImageFragment, Math; 

2. рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЪрд░ рдФрд░ рд╕реНрдерд┐рд░ рдЬреЛрдбрд╝реЗрдВред

рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡реЗрдХреНрдЯрд░ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдк TPoint рдХрд╛ рдПрдХ рдЪрд░ рдЬреЛрдбрд╝реЗрдВ

  private FVector: TPoint; 

рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░, рд╣рдо рдЖрдВрджреЛрд▓рди рдХреА рдЧрддрд┐ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░рдВрддрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ

  const Speed = 10; 

3. TTimer рд╡рд░реНрдЧ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдШрдЯрдХ рдХреЛ рдкреНрд░рдкрддреНрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ ред

рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ: рдпрд╣ рдШрдЯрдХ рдШрдЯрдХ рдкреИрд▓реЗрдЯ рдХреЗ "рд╕рд┐рд╕реНрдЯрдо" рдЯреИрдм рдкрд░ рд╕реНрдерд┐рдд рд╣реИред

рдирдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ "Timer1" рдирд╛рдо рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ - рдЗрд╕ рдмрд╛рд░ "TimerMove" рдкрд░ред рджреВрд╕рд░реЗ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдореИрдВрдиреЗ рджреЛрдиреЛрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ (рдПрдиреАрдореЗрд╢рди рдФрд░ рдореВрд╡рдореЗрдВрдЯ) рдХреЛ рдПрдХ рд╣реА рдЯрд╛рдЗрдорд░ рд╕реЗ рдирд╣реАрдВ рдмрд╛рдБрдзрд╛, рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЯрд╛рдЗрдорд░ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдВрджреЛрд▓рди рдХреЛ рдзреАрдорд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд┐рдВрдЧ рд╕реНрд╡рд┐рдВрдЧ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЗрд╕реА рддрд░рд╣ред

4. рдЗрдВрдЯрд░рд╡рд▓ рд╕рдВрдкрддреНрддрд┐ рдХреЛ 1000 рд╕реЗ 100 рдореЗрдВ рдмрджрд▓реЗрдВред

рдмрддрд╛ рджреЗрдВ рдХрд┐ рдЗрд╕ рдЯрд╛рдЗрдорд░ рдореЗрдВ рднреА рд╣рд░ 100 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдпрд╛рдиреА 10 рдмрд╛рд░ рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдВрдб рдлрд╛рдпрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рдпрд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╣рд┐рд▓рдиреЗ рдХреЗ рддрдереНрдп рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

5. рдПрдХ OnTimer рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВред

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

6. рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЛрдб рдХреА рджреЛ рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝реЗрдВред

  Sprite.Left := Max(0, Min(Width - Sprite.Width, Sprite.Left + FVector.x)); Sprite.Top := Max(0, Min(Height - Sprite.Height, Sprite.Top + FVector.y)); 

рдореИрдХреНрд╕ () рдФрд░ рдорд┐рди () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рдлреЙрд░реНрдо (рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ) рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред
рдпрд╣ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЧрдгрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЙрдкрдпреЛрдЧ рдЕрдиреБрднрд╛рдЧ рд╕реЗ рдЬреЛрдбрд╝рд╛ рд╣реИред

7. рдПрдХ OnKeyPress рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВред

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

8. рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВред

  if Key = 'a' then FVector := TPoint.Create(-Speed, 0) else if Key = 'd' then FVector := TPoint.Create(Speed, 0) else if Key = 'w' then FVector := TPoint.Create(0, -Speed) else if Key = 's' then FVector := TPoint.Create(0, Speed) else if Key = ' ' then FVector := TPoint.Create(0, 0); 

рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХрдХреНрд╖рд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:

  TFormMain = class(TForm) Sprite: TImageFragment; TimerMove: TTimer; TimerLive: TTimer; procedure FormKeyPress(Sender: TObject; var Key: char); procedure TimerLiveTimer(Sender: TObject); procedure TimerMoveTimer(Sender: TObject); private FVector: TPoint; const Speed = 10; public end; 

рдФрд░ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ - OnTimer рдФрд░ OnKeyPress рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 procedure TFormMain.TimerMoveTimer(Sender: TObject); begin Sprite.Left := Max(0, Min(Width - Sprite.Width, Sprite.Left + FVector.x)); Sprite.Top := Max(0, Min(Height - Sprite.Height, Sprite.Top + FVector.y)); end; procedure TFormMain.FormKeyPress(Sender: TObject; var Key: char); begin if Key = 'a' then FVector := TPoint.Create(-Speed, 0) else if Key = 'd' then FVector := TPoint.Create(Speed, 0) else if Key = 'w' then FVector := TPoint.Create(0, -Speed) else if Key = 's' then FVector := TPoint.Create(0, Speed) else if Key = ' ' then FVector := TPoint.Create(0, 0); end; 

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

рд╣рдо рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

TFormMain.FormKeyPress рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ

  if FVector.x < 0 then Sprite.OffsetY := 96 else if FVector.x > 0 then Sprite.OffsetY := 192 else if FVector.y < 0 then Sprite.OffsetY := 288 else Sprite.OffsetY := 0; 

рд╡рд┐рд╕реНрдерд╛рдкрди рд╡реЗрдХреНрдЯрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдСрдлрд╕реЗрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдЖрдВрджреЛрд▓рди рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЫрд╡рд┐ рдШреВрдорддреА рд╣реИред

рд╕рднреА UnitMain рдореЙрдбреНрдпреВрд▓ рдкрд╛рда
 unit UnitMain; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, ImageFragment, Math; type { TFormMain } TFormMain = class(TForm) Sprite: TImageFragment; TimerMove: TTimer; TimerLive: TTimer; procedure FormKeyPress(Sender: TObject; var Key: char); procedure TimerLiveTimer(Sender: TObject); procedure TimerMoveTimer(Sender: TObject); private FVector: TPoint; const Speed = 10; public end; var FormMain: TFormMain; implementation {$R *.lfm} { TFormMain } procedure TFormMain.TimerLiveTimer(Sender: TObject); begin Sprite.OffsetX := (Sprite.OffsetX + 96) mod 384; end; procedure TFormMain.TimerMoveTimer(Sender: TObject); begin Sprite.Left := Max(0, Min(Width - Sprite.Width, Sprite.Left + FVector.x)); Sprite.Top := Max(0, Min(Height - Sprite.Height, Sprite.Top + FVector.y)); end; procedure TFormMain.FormKeyPress(Sender: TObject; var Key: char); begin if Key = 'a' then FVector := TPoint.Create(-Speed, 0) else if Key = 'd' then FVector := TPoint.Create(Speed, 0) else if Key = 'w' then FVector := TPoint.Create(0, -Speed) else if Key = 's' then FVector := TPoint.Create(0, Speed) else if Key = ' ' then FVector := TPoint.Create(0, 0); if FVector.x < 0 then Sprite.OffsetY := 96 else if FVector.x > 0 then Sprite.OffsetY := 192 else if FVector.y < 0 then Sprite.OffsetY := 288 else Sprite.OffsetY := 0; end; end. 

рдПрдХ рдЖрдлреНрдЯрд░рд╡рд░реНрдб рдХреЗ рдмрдЬрд╛рдп

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

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


All Articles