рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╢рд╛рдВрдд рд╣реИ

рдпрд╣ рдкреЛрд╕реНрдЯ " рд╕реНрдорд╛рд░реНрдЯ рдлреЛрди рдлреЙрд░ рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯ " рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд░рд╣реА рд╣реИред

рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЛрдмрд╛рдЗрд▓ рдЧреЗрдореНрд╕ рдЖрдЬ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВред рд╣рд░ рдбреЗрд╡рд▓рдкрд░, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рднреА рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рдЧреЗрдо рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рддрд╛ рд╣реИред рдЕрдХреНрд╕рд░ рдордВрдЪ рдХреА рдкрд╕рдВрдж рдХреЗ рд╕рд╛рде рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЦреЗрд▓ рддреБрд░рдВрдд рд╣рд░ рдЬрдЧрд╣ рд╣реЛ: iOS рдФрд░ Android рдкрд░, WP7 рдФрд░ MeeGo рдкрд░, рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВред рдФрд░ рддрд╛рдХрд┐ рдпрд╣ рд╕рдм рдореБрдлреНрдд рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред



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

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдЦреЗрд▓ рдХрд╛ рд▓рдХреНрд╖реНрдп рдПрдХ рд╕реЗрдм рдХреЛ рдкрдХрдбрд╝рдирд╛ рд╣реИ, рдЬрдмрдХрд┐ рдпрд╣ рдиреАрдЪреЗ рдЙрдбрд╝рддрд╛ рд╣реИред рд╕рдордп рдХреЗ рд╕рд╛рде, рд╕реЗрдм рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рдирд╣реАрдВ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╕реЗрдм рдПрдХ рдордирдорд╛рдиреЗ рдХреЛрдг рдкрд░ рдЧрд┐рд░рддрд╛ рд╣реИ, рдШреВрд░реНрдгрди рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдмреЙрдХреНрд╕ 2 рдбреА рднреМрддрд┐рдХреА рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рд╕реАрдорд╛рдУрдВ рд╕реЗ рджреВрд░ рдЙрдЫрд▓рддрд╛ рд╣реИ ред рдЧреЗрдо рдПрдВрдбреНрд░реЙрдЗрдб, рдХреНрдпреВрдЯреА рд╕рдкреЛрд░реНрдЯ (рд╕рд┐рдореНрдмрд┐рдпрди, рдореИрдореЛ, рдореАрдЧреЛ, рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕, рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕) рдФрд░ Google рдХреНрд░реЛрдо рдмреНрд░рд╛рдЙрдЬрд░ рдХреЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдЪрд▓реЗрдЧрд╛ред

рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЪрдпрди



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


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


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


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЧреЗрдо рдХреЛ Google Chrome рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП HTML5, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ Google рдиреЗрдЯрд┐рд╡ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдХреИрдирд╡рд╕ рдФрд░ рдСрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рдФрд░ рд╕рд░рд▓ рд╣реИред


рддрд░реНрдХ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ (рдХреЛрдИ рднреА рдХреЛрдб рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ )ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЧреЗрдо рдХреЛ рд╕рднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдкрд░рдо рдордВрдЪ рд╕реЗ рд╕рд╛рд░


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

рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЗрдВрдЬрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛:
class Application { public: Application(); ~Application(); void render(); void touch(int x, int y); //... }; 

рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдбреНрд░рд╛рдЗрдВрдЧ рдФрд░ рдЗрдирдкреБрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Qt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
 void QtPlatrom::paintEvent(QPaintEvent *) { QPainter painter(this); m_painter = &painter; m_app->render(); } void QtPlatrom::mousePressEvent(QMouseEvent *e) { QWidget::mousePressEvent(e); m_app->touch(e->x(), height() - e->y()); } 

рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ C ++ рд╕реЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 private native void renderNative(); private native void touchNative(int x, int y); static { System.loadLibrary("fruitclick"); } public void render() { renderNative(); } public boolean touchDown(int x, int y, int pointer, int button) { touchNative(x, Gdx.graphics.getHeight() - y); return false; } 

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ C ++ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
 void Java_com_fruitclick_Application_renderNative(JNIEnv* env, jobject thiz) { g_app->render(); } void Java_com_fruitclick_Application_touchNative(JNIEnv* env, jobject thiz, jint x, jint y) { g_app->touch(x, y); } 

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХрд┐рд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдиреЗрдЯрд┐рд╡ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рд╕реАрдзреЗ C ++ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрдиреЗрдВ:
 function onTouch(e) { var coords = getCursorPosition(e); var x = coords[0]; var y = canvas.height - coords[1]; var message = "touch " + x.toString() + " " + y.toString(); FruitclickModule.postMessage(message); } function simulate() { FruitclickModule.postMessage('render'); setTimeout("simulate()", 16); } 

C ++ рдореЗрдВ, рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╡рд┐рдзрд┐ рдпрд╛ рджреВрд╕рд░реЗ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
 void NaclPlatform::HandleMessage(const pp::Var& var) { if (!var.is_string()) return; std::stringstream stream(var.AsString()); std::string type; stream >> type; if (type == "render") { m_app.render(); } else if (type == "touch") { int x; int y; stream >> x >> y; m_app.touch(x, y); } } 

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

рдЙрд▓рдЯрд╛ рд╕рдВрд╡рд╛рдж


рджреВрд╕рд░рд╛ рдХрд╛рд░реНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд╕рд╛рде рдЗрдВрдЬрди рдХрд╛ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╣реИ:

рд╕реНрдХреНрд░реАрди рдкрд░ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдкрд╛рда рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ, рдзреНрд╡рдирд┐ рдЪрд▓рд╛рдиреЗ, рдХрдВрдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬрди рдХреЗ рдЖрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:
 class Platform { public: enum Texture { APPLE = 0, BACKGROUND }; static void draw(Texture id, float x, float y, float angle = 0); static void drawText(const char* text, float x, float y); enum Sound { CRUNCH = 0, CRASH }; static void playSound(Sound id); static void vibrate(); //... }; 

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

 Platform::draw(Platform::BACKGROUND, screenWidth/2, screenHeight/2); Platform::playSound(Platform::CRASH); 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рдЗрдВрдЬрди рдХрд╛ рд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдЖрд░реЗрдЦ рджреЗрддрд╛ рд╣реВрдВ:

рдХреНрдпрд╛ рдпрд╣ рд╕рдм рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ? рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдирд╣реАрдВред рд╕рдордп, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЦрд░реНрдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрд╡реЗрджрди рддрд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕реЗ рдЙрдкреЗрдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрд╡рд╢реНрдпрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб, рдХреНрдпреВрдЯреА рдФрд░ рдиреЗрдЯрд┐рд╡ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдХреЛрдб рджреВрдВрдЧрд╛:
рдЪрд┐рддреНрд░ рдмрдирд╛рдирд╛, Android (libgdx):
 public void draw(int id, float x, float y, float angle) { TextureRegion region = null; switch (id) { case BACKGROUND: region = background; break; case APPLE: region = apple; break; default: break; } float w = region.getRegionWidth(); float h = region.getRegionHeight(); batch.draw(region, x - w/2, y - h/2, w/2, h/2, w, h, 1, 1, angle); } 

рдЪрд┐рддреНрд░ рдмрдирд╛рдирд╛, Qt:
 void QtPlatrom::drawImpl(Texture id, float x, float y, float angle) { QPixmap* pixmap = NULL; switch(id) { case FruitClick::Platform::APPLE: pixmap = &m_apple; break; case FruitClick::Platform::BACKGROUND: pixmap = &m_background; break; default: break; } y = height() - y; m_painter->translate(x, y); m_painter->rotate(-angle); int w = pixmap->width(); int h = pixmap->height(); m_painter->drawPixmap(-w/2, -h/2, w, h, *pixmap); m_painter->rotate(angle); m_painter->translate(-x, -y); } 

рдЪрд┐рддреНрд░ рдмрдирд╛рдирд╛, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдХреИрдирд╡рд╕):
 function draw(id, x, y, angle) { y = canvas.height - y; var image = null; switch(id) { case 0: image = apple; break; case 1: image = background; break; } context.translate(x, y); context.rotate(-angle); context.drawImage(image, -image.width/2, -image.height/2); context.rotate(angle); context.translate(-x, -y); } 

рдбреНрд░рд╛рдЗрдВрдЧ рдкрд╛рда, Android (libgdx):
 public void drawText(String text, float x, float y) { font.draw(batch, text, x, y); } 

рдбреНрд░рд╛рдЗрдВрдЧ рдкрд╛рда, Qt:
 void QtPlatrom::drawTextImpl(const char *text, float x, float y) { y = height() - y; m_painter->drawText(x, y, text); } 

рдбреНрд░рд╛рдЗрдВрдЧ рдЯреЗрдХреНрд╕реНрдЯ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдХреИрдирд╡рд╕):
 function drawText(text, x, y) { y = canvas.height - y; context.fillText(text, x, y); } 

рд╕рд╛рдЙрдВрдб рдкреНрд▓реЗ, Android (libgdx):
 public void playSound(int id) { switch (id) { case CRUNCH: crunch.play(); break; case CRASH: crash.play(); break; } } 

рдзреНрд╡рдирд┐ рдкреНрд▓реЗрдмреИрдХ, Qt:
 void QtPlatrom::playSoundImpl(Sound id) { switch (id) { case FruitClick::Platform::CRUNCH: m_crunch.play(); break; case FruitClick::Platform::CRASH: m_crash.play(); break; default: break; } } 

рдзреНрд╡рдирд┐ рдЪрд▓рд╛рдпреЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (HTML5 рдСрдбрд┐рдпреЛ):
 function playSound(id) { var sound = null; switch(id) { case 0: sound = crunch; break; case 1: sound = crash; break; } sound.currentTime = 0; sound.play(); } 

рдХрдВрдкрди, Android (libgdx):
 void vibrate() { Gdx.input.vibrate(100); } 

рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ C ++ рд╕реЗ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЯрд┐рдВрдХрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рдПрдХ рдмрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рд╡рд╛ рддрд░реАрдХреЛрдВ рдХреА рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
 void setupEnv(JNIEnv* env, jobject thiz) { g_env = env; g_activity = thiz; g_activityClass = env->GetObjectClass(thiz); drawID = env->GetMethodID(g_activityClass, "draw", "(IFFF)V"); drawTextID = env->GetMethodID(g_activityClass, "drawText", "(Ljava/lang/String;FF)V"); playSoundID = env->GetMethodID(g_activityClass, "playSound", "(I)V"); } 

рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдлреЛрди рдХрд░реЗрдВ:
 void AndroidPlatform::drawImpl(FruitClick::Platform::Texture id, float x, float y, float angle) { g_env->CallVoidMethod(g_activity, drawID, id, x, y, angle); } void AndroidPlatform::drawTextImpl(const char* text, float x, float y) { jstring javaString = g_env->NewStringUTF(text); g_env->CallVoidMethod(g_activity, drawTextID, javaString, x, y); } void AndroidPlatform::playSoundImpl(FruitClick::Platform::Sound id) { g_env->CallVoidMethod(g_activity, playSoundID, id); } 

рдореВрд▓ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рд╛рде рдПрдХ nontrivial рд╕реНрдерд┐рддрд┐ рд╣реИ - рдЖрдкрдХреЛ C ++ рдХреЛрдб рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 const char* sep = "|"; void NaclPlatform::drawImpl(FruitClick::Platform::Texture id, float x, float y, float angle) { std::stringstream stream; stream << "draw" << sep << id << sep << x << sep << y << sep << angle; PostMessage(pp::Var(stream.str())); } void NaclPlatform::drawTextImpl(const char* text, float x, float y) { std::stringstream stream; stream << "drawText" << sep << text << sep << x << sep << y; PostMessage(pp::Var(stream.str())); } void NaclPlatform::playSoundImpl(FruitClick::Platform::Sound id) { std::stringstream stream; stream << "playSound" << sep << id; PostMessage(pp::Var(stream.str())); } 

рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдЗрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 function handleMessage(message_event) { params = message_event.data.split("|"); if (params[0] == "draw") { draw(parseInt(params[1]), parseInt(params[2]), parseInt(params[3]), parseFloat(params[4])); } else if (params[0] == "drawText") { drawText(params[1], parseInt(params[2]), parseInt(params[3])); } else if (params[0] == "playSound") { playSound(parseInt(params[1])); } } 


рдкрд░рд┐рдгрд╛рдо


рдЗрд╕ рд╕рд╛рдзрд╛рд░рдг рдЦреЗрд▓ рдХреЛ рдХреИрдЪ рдж рдмреБрд▓рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд░реБрдХрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЛ, рдкрд╣рд▓реЗ рддреЛ рдореИрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ:
- рдореВрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдВрд╕реНрдХрд░рдг (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ Google Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдФрд░ рдореВрд▓ рдЧреНрд░рд╛рд╣рдХ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдлрд╝реНрд▓реИрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ)ред Nexe рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ 32-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП 4.2 рдПрдордмреА рдФрд░ 64-рдмрд┐рдЯ рд╡рд╛рд▓реЗ рдХреЗ рд▓рд┐рдП 4.9 рдПрдордмреА рд╣реИ; рдЖрдкрдХреЛ рдзреАрд░реЗ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп рдереЛрдбрд╝рд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛;
- рд╡рд┐рдВрдбреЛрдЬ рд╕рдВрд╕реНрдХрд░рдг - рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ Google рдХреНрд░реЛрдо рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рд╡реАрдбрд┐рдпреЛ:

рдЧреЗрдо рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдФрд░ рдореЗрд░реЗ рдПрд▓рдЬреА рдСрдкреНрдЯрд┐рдорд╕ рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдЪрд▓рддрд╛ рд╣реИред рдХреНрдпреВрдЯреА рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рд╕реНрдерд┐рддрд┐ (рд╡рд┐рд╖рдп рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдиреЛрдХрд┐рдпрд╛ рдПрди 9 рд╕реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ)ред

рдХреЛрдб

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

рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ?


рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рд▓реЛрдЧ рд╕реЛрдЪреЗрдВрдЧреЗ, рдмрд╛рдЗрдХ рдХреНрдпреЛрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдореБрд░рдмреНрдмрд╛ рдпрд╛ рдПрдХрддрд╛ рд╣реИ ред рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдкреИрд╕реЗ рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг 2 рдбреА рдЦрд┐рд▓реМрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рднрд╛рд░реАрдкрди рдХреНрдпреЛрдВ? рдХреБрдЫ рдХрд╛ рдпрд╣ рднреА рдХрд╣рдирд╛ рд╣реИ рдХрд┐ Qt рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ iOS рдкрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рд╕рд╛рдЙрдВрдб рдФрд░ рдУрдкрдирдЬреАрдПрд▓ рдХреЗ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ iOS рдкрд░, рдХреЗрд╡рд▓ YouTube рдкрд░ рд╡реАрдбрд┐рдпреЛред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпреВрдЯреА рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЙрддрдирд╛ рдЖрд╕рд╛рди рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рд╡реЗ рдЕрдм рдореАрдЧреЛ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдЗрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рд▓рд╛рдн

рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВ, рдЖрдк рдЕрдкрдиреЗ рдЗрдЪреНрдЫрд┐рдд рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ - Qt рдпрд╛ GTK, Android рдкрд░ - libgdx рдпрд╛ AndEngine, iOS рдкрд░ - cocos2d, рдЪреБрдирд╛рд╡ рдЖрдкрдХрд╛ рд╣реИред рдЖрдк рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдИ рдЧрдИ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЬрдиреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреНрдпрд╛рдЧ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдЖрдк рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ IDE рдореЗрдВ рдорд╣рд╛рди рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА C ++ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦ рдФрд░ рдбрд┐рдмрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХрдорд┐рдпреЛрдВ

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

рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдП?


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

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


All Articles