рдПрдХ рдПрд╕рдПрдлрдПрдордПрд▓ рдЧреЗрдо рдмрдирд╛рдирд╛

рд╕рднреА igrodelov рдФрд░ рдЙрдирдХреЗ рд╣рдорджрд░реНрджреЛрдВ рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ SFML рдЬреИрд╕реЗ рдПрдХ рдврд╛рдВрдЪреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдЙрд╕ рдкрд░ рдПрдХ рд╕рд░рд▓ рдЦреЗрд▓ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдкреМрд░рд╛рдгрд┐рдХ рдкреЛрдВрдЧ рдХрд╛ рдПрдХ рдХреНрд▓реЛрди рд╣реЛрдЧрд╛)ред

v

рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд▓рд╣рд╛рд▓, рджреЛ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ - 1.6 рдФрд░ 2.0ред рдореИрдВрдиреЗ Visual C ++ 2010 рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг 2.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЖрдк рдЕрдкрдиреЗ OS рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП SFML рд╡рд┐рдХрд▓реНрдк рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред

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

рдиреАрдВрд╡ рдмрдирд╛рдПрдВ


рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ sfml-graphics, sfml-window, sfml-system (рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП sfml-main рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╣рдо рднрд╡рд┐рд╖реНрдп рдХреЗ рдЦреЗрд▓ рдХреЗ рдХрдВрдХрд╛рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

#include <SFML/Graphics.hpp> int main() { //     sf::RenderWindow window(sf::VideoMode(800, 600), "Pong"); //    while(window.isOpen()) { //     sf::Event event; while(window.pollEvent(event)) { //           Escape if(event.type == sf::Event::Closed || (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape)) window.close(); } //  window.clear(); //         //  window.display(); } return 0; } 


рддреЛ рд╣рдордиреЗ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ? рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, Graphics.hpp рд╣реИрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХрдиреЗрдХреНрдЯ рдХреА рдЧрдИ рдереА, рдФрд░ рдлрд┐рд░ рд╣рдордиреЗ "рдкреЛрдВрдЧ" рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп () рдлрд╝рдВрдХреНрд╢рди рдФрд░ 800X600 рдЖрдХрд╛рд░ рдХреА рд╡рд┐рдВрдбреЛ рдмрдирд╛рдИред

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

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

рд░реИрдХреЗрдЯ


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

 //    (   ) sf::Clock clock; float time; //    (  ) window.setVerticalSyncEnabled(true); /*     window.clear().           */ time = clock.getElapsedTime().asMilliseconds(); clock.restart(); 


рдЕрдм рдкреИрдбрд▓ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рдореВрд▓ рд╡рд┐рдзрд┐рдпрд╛рдВ рджреА рд╣реИрдВ, рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдЖрдк рд╕реНрд░реЛрдд рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд┐рдВрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ)ред

 class Paddle { sf::RenderWindow* window; //   ,    sf::RectangleShape rectangle; // ,   int y; //  y  (x    ) int player; //   (1  2) int score; //     public: //  Paddle(sf::RenderWindow* window, int player) { this->score = 0; this->y = 300; this->player = player; this->window = window; //       Vector2f this->rectangle.setSize(sf::Vector2f(10, 100)); //            this->rectangle.setOrigin(5, 50); //       if(this->player == 1) { this->rectangle.setPosition(25, this->y); } else { this->rectangle.setPosition(775, this->y); } } //     void draw() { this->window->draw(this->rectangle); } /*          ,  --  W  S */ void update(float time) { if(this->player == 1) { if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) { //         this->y -= time * 0.3; this->setY(this->y); // setY -    Y } else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down)) { this->y += time * 0.3; this->setY(this->y); } } else { if(sf::Keyboard::isKeyPressed(sf::Keyboard::W)) { this->setY(this->y - time * 0.3); } else if(sf::Keyboard::isKeyPressed(sf::Keyboard::S)) { this->setY(this->y + time * 0.3); } } } 


рд╣рдо рдЖрдХрд╛рд░ 10X100 рдХреА рдЖрдпрдд рдХреЗ рд╕рд╛рде рд░реИрдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╣рдордиреЗ рд╡реЗрдХреНрдЯрд░ 2 рдПрдл рд╡рд░реНрдЧ рдХреА рдорджрдж рд╕реЗ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ - рдпрд╣ рдПрдХ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╡реЗрдХреНрдЯрд░ рд╣реИ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рдЧреЗрдВрдж рдХреА рджрд┐рд╢рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

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

рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ, рдореИрдВ рд╕реЗрдЯреА рд╡рд┐рдзрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ - рдпрд╣ рд░реИрдХреЗрдЯ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред

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

рдирд┐рд╖реНрдХрд░реНрд╖


рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд╣рд╛рдВ рд░реБрдХреЗрдВрдЧреЗ, рдФрд░ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдмреЙрд▓ рдХреНрд▓рд╛рд╕ рдФрд░ рдкреЙрдЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕ рд╕ рд╕ ред

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


All Articles