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

рднрд▓реЗ рд╣реА рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░, рдЗрд╕ рд╕рдордп, рдХреНрдпреВрдЯреА рдХреНрд╡рд┐рдХ рдЯреНрд░реИрдХ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рдЧреЗрдо рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рддрдХрдиреАрдХ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдХреЗрд╡рд▓ рд╣рд░ рджрд┐рди рдмрдврд╝рддрд╛ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рддреЛ, рджреНрд╡рд┐-рдЖрдпрд╛рдореА рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рднреМрддрд┐рдХреА рдХрд╛ рдЕрдиреБрдХрд░рдг рдЗрд╕рдХреЗ рдиреАрдЪреЗ рдЖрдпрд╛ред рдпрд╛ рдмрд▓реНрдХрд┐, QML рдкреНрд▓рдЧрдЗрди рдХреЗ рдЖрдЧрдорди рд╕реЗ рдкрд╣рд▓реЗред рдЬреЛ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ Box2D рднреМрддрд┐рдХреА рдЗрдВрдЬрди рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреНрдпреВрдЯреА рддреНрд╡рд░рд┐рдд рдЖрд╕рд╛рдиреА рдХреЗ рд╕рд╛рде рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдо рдЖрдЬ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдЕрд░реНрдХрд╛рдиреЙрдЗрдб рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдЖрдк рдХрд┐рддрдиреА рдЬрд▓реНрджреА рдПрдХ рд╕рд░рд▓ рдЧреЗрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХрднреА рднреА рднреМрддрд┐рдХ рдЗрдВрдЬрди рдФрд░ рд▓рдЧрднрдЧ рдмреЗрдХрд╛рд░ рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдмрд╛рдЗрдВрдб QML рдФрд░ Box2d
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд┐рдВрдХ
gitorious.org/qml-box2d/qml-box2d/trees/master рдкрд░
рдЬрд╛рдПрдВ рдФрд░ рдмрдЯрди "Download master as tar.gz" рдкрд░ рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдПрдХ рддрд░рдл рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдХреНрдпреВрдЯреА рдирд┐рд░реНрдорд╛рддрд╛ рдкрд░ рдЬрд╛рдПрдВред
рдпрд╣рд╛рдВ, рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдЬреИрд╕реЗ рдХрд┐ "рдХреНрдпреВрдЯреА рдХреНрдпреВрд╕рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди"ред рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд╛рдо, рд╕реНрдерд╛рди рджрд░реНрдЬ рдХрд░реЗрдВ, Qt рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЪреБрдиреЗрдВ, рдлрд┐рд░ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВред
рдФрд░ рдЕрдм рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣реИред рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХреЛ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрдирдкреИрдХ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ qml-box2d-qml-box2d рдХреЛ qml-box2d рдирд╛рдо рджреЗрдВред B рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА .pro рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ:
include(qml-box2d/box2d-static.pri)
рдФрд░ рд╣рдо рдЗрд╕ рдлреЙрд░реНрдо рдореЗрдВ main.cpp рд▓рд╛рдПрдВрдЧреЗ:
#include <QtGui/QApplication> #include "qmlapplicationviewer.h" #include "box2dplugin.h" Q_DECL_EXPORT int main(int argc, char *argv[]) { QScopedPointer<QApplication> app(createApplication(argc, argv)); Box2DPlugin plugin; plugin.registerTypes("Box2D"); QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create()); viewer->setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); viewer->setMainQmlFile(QLatin1String("qml/Quickanoid/main.qml")); viewer->showExpanded(); return app->exec(); }
рдпрд╣рд╛рдБ рд▓рд╛рдЗрди #include "box2dplugin.h" рдореЗрдВ рдкреНрд▓рдЧрдЗрди рд╣реЗрдбрд░ рдФрд░ рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
Box2DPlugin plugin; plugin.registerTypes("Box2D");
рд╣рдо рдЖрд╡реЗрджрди рдореЗрдВ Qt / Box2D рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ QML рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдВрдЧреЗред
рд╡рд╣ рд╕рдм рд╣реИред рдпрд╣ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕реНрдЯреИрдЯрд┐рдХрд▓реА рд▓рд┐рдВрдХреНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдмреЗрд╢рдХ, рдкреНрд▓рдЧрдЗрди рдХреЛ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рднреА рдХреНрдпреВрдПрдордПрд▓ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИред рдкрд░рд┐рдгрд╛рдореА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд▓рдЧрднрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдпрджрд┐ рд╣рдо рдЕрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдорд╛рдирдХ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рджреЗрдЦреЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ рдХреНрдпреВрдЯреА рдХреНрд╡рд┐рдХ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рд╣рдо рднреМрддрд┐рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
рд╣рдо рдЦреЗрд▓ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджреЗрддреЗ рд╣реИрдВ
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдо рдЕрд░реНрдХрд╛рдиреЙрдЗрдб рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗред рд╣рдо рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рдЦрд┐рд▓реМрдиреЗ рдореЗрдВ рд╣рдореЗрдВ рдЬреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ:
- рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдВрдбреЛ 360x640 рд╣реИ - рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдПред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рд▓реИрдВрдбрд╕реНрдХреЗрдк рдореЛрдб рдореЗрдВ рдареАрдХ рдХрд░рдирд╛ред
- рдЖрд╡реЗрджрди рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рддрд╕реНрд╡реАрд░ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдЦреЗрд▓рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред
- рдЦрд┐рдбрд╝рдХреА рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рд╣рдорд╛рд░реА рджреБрдирд┐рдпрд╛ рдХреА рд╕реАрдорд╛ 4 рджреАрд╡рд╛рд░реЗрдВред
- рджреБрдирд┐рдпрд╛ рдХреЗ рднреАрддрд░ рдЙрдбрд╝рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдЧреЗрдВрджред
- рдЧреЗрдВрдж рдХреА рдкрд┐рдЯрд╛рдИ рдХреЗ рд▓рд┐рдП, рдЦрд┐рдбрд╝рдХреА рдХреЗ рдиреАрдЪреЗ рдордВрдЪред
- рдЦрд┐рдбрд╝рдХреА рдХреЗ рдКрдкрд░реА рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдХреБрдЫ рдИрдВрдЯреЗрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдорд╛рд░реА рдЧреЗрдВрдж рдХреЗ рд╕рд╛рде рдЦрдЯрдЦрдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ред
- рд╕реНрдХреНрд░реАрди рдкрд░ рдЯрд╛рдЗрдо рдХрд╛рдЙрдВрдЯрд░ред
- рдЧреЗрдо рдХреА рд╕реНрдХреНрд░реАрди рдХреЛ рд╢реБрд░реВ рдФрд░ рдЦрддреНрдо рдХрд░реЗрдВред
рд╣рдореЗрдВ рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реИ
рдпрд╣рд╛рдБ рдЗрд╕ рд╕рд░рд▓ рдЯреАрдХреЗ рдкрд░ рдФрд░ рд╣рдо рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, main.cpp рдореЗрдВ, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рджреГрд╢реНрдп рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЛ рдмрддрд╛рдпрд╛ рдерд╛ред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ C ++ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдб рдирд╣реАрдВ рд╣реИред Main.qml рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдлрд╝реЙрд░реНрдо рдореЗрдВ рд▓рд╛рдПрдБ:
import QtQuick 1.0 import Box2D 1.0 Image { id: screen; source: "images/bg.jpeg" width: 640 height: 360 World { id: world width: screen.width height: screen.height gravity.x: 0 gravity.y: 0 } }
рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ? рд╣рдордиреЗ 640x360 рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд┐рдбрд╝рдХреА рдмрдирд╛рдИ, рдЗрд╕рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдФрд░ рд╡рд┐рд╢реНрд╡ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдмрдЪреНрдЪреЗ рдХреЛ рдЬреЛрдбрд╝рд╛, рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рднреА рднреМрддрд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреВрд░реНрд╡рдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╢реНрд╡ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреВрд░реЗ рдЦреЗрд▓ рдХреА рджреБрдирд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдореВрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН:
- рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг - X рдФрд░ Y рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдгред рд╣рдорд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
- рдФрд░ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рд╣реА рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ: рдЯрд╛рдЗрдорд╕реНрдЯреЗрдк, рд╡реЗрдЧ, рд╕реНрдерд┐рддрд┐, рд╕реНрдерд┐рддрд┐, рдлреНрд░реЗрдордЯрд╛рдЗрдо
рдЙрдирдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ box2dworld.h рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рддреАрди рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рд╢рд╛рдВрдд рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕реНрдереИрддрд┐рдХ рдХреЗ рд╕рд╛рде рдкрддрд▓рд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╛ рджреАрд╡рд╛рд░реЗрдВ, рдЬреЛ рднреА рдЖрдкрдХреЛ рдкрд╕рдВрдж рд╣реИрдВред рдПрдХ рдирдИ QML рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ, рдЗрд╕реЗ Wall.qml рдХрд╣реЗрдВред рдЖрд╡реЗрджрди рдХреЗ рдЖрдЧреЗ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рд╕реЗ рднрд░реЗрдВ:
import QtQuick 1.0 import Box2D 1.0 Body { property alias image: image.source bodyType: Body.Static fixtures: Box { anchors.fill: parent friction: 1.0 } Rectangle { anchors.fill: parent color: "brown" } Image { id: image anchors.fill: parent source: "images/wall.jpg" fillMode: Image.Tile } }
рдереНрдпреЛрд░реА рдмреНрд░реЗрдХ
рджреАрд╡рд╛рд░, рджреГрд╢реНрдп рдХреА рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреА рддрд░рд╣ (рдФрд░ рд╡реЛрд▓реНрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рджреГрд╢реНрдп рд╣реИ), рдЯрд╛рдЗрдк рдмреЙрдбреА рдХреА рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╢рд╛рд░реАрд░рд┐рдХ рд╕рднреА рднреМрддрд┐рдХ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╣реИред рдЗрд╕рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реИрдВ:
- рд╕рдХреНрд░рд┐рдп - рдПрдХ рддрддреНрд╡ рдкрд░ рднреМрддрд┐рдХреА рдХреЛ рд╕рдХреНрд╖рдо / рдЕрдХреНрд╖рдо рдХрд░рдирд╛
- рд░реИрдЦрд┐рдХ рддреНрд╡рд░рдг - рд░реИрдЦрд┐рдХ рддреНрд╡рд░рдг
- рдЬреБрдбрд╝рдирд╛рд░ - рд╢рд░реАрд░ рдХреА рд╕реАрдорд╛рдПрдВ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЯрдХрд░рд╛рд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
- bodyType - рдмреЙрдбреА рдЯрд╛рдЗрдк, рд╕реНрдЯреИрдЯрд┐рдХ, рдбрд╛рдпрдирд╛рдорд┐рдХ рдпрд╛ рдХрд┐рдиреЗрдореЗрдЯрд┐рдХ
- рдирд┐рдпрддрдХрд░рдг - рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░реЛрдЯреЗрд╢рди
- SleepAllowed - рднреМрддрд┐рдХреА рдХреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ
- рд▓реАрдирд┐рдпрд░рдбреИрдореНрдкрд┐рдВрдЧ, рдПрдВрдЧреБрд▓рд░рдбрдореНрдкрд┐рдВрдЧ, рдмреБрд▓реЗрдЯ - рдкрд╣рд▓реА рдирдЬрд░ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ
рд╢рд░реАрд░, рдЬреИрд╕реЗ, рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рд╡ рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИред рд╢рд░реАрд░ рдХреЛ рдпрд╣ рд╕рд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬреБрдбрд╝рдирд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рд╕рд░реНрдХрд▓, рдмреЙрдХреНрд╕ рдФрд░ рдмрд╣реБрднреБрдЬ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рд╕рднреА рдлрд╝рд┐рдХреНрдЪрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд╡рдВрд╢рдЬ рд╣реИрдВ, рдЬреЛ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЕрдкрдиреЗ рджрдо рдкрд░, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреНрдпреВрдПрдордПрд▓ рд╕реЗ рджреБрд░реНрдЧрдо рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рддреАрди рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдкрд▓рдмреНрдз рдЧреБрдгреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред
рд╕реНрдерд┐рд░рддрд╛ рд╡рд░реНрдЧ:
- рдШрдирддреНрд╡ - рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреБрд░реБрддреНрд╡
- рдШрд░реНрд╖рдг - рдШрд░реНрд╖рдг рдмрд▓
- рдкреБрдирд░реНрд╕реНрдерд╛рдкрди - рд▓рдЪреАрд▓рд╛рдкрди / рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐
- groupIndex - рд╕рдореВрд╣ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ (рд╕рдВрднрд╡рддрдГ рд╕рдореВрд╣ рдПрдХ рд╢рд░реАрд░ рд╡рд╕реНрддреБ рд╣реИ)
- collidesWith - рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреАред рдЬреЛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд╕реНрддреБ рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рд╣реИ
- рд╕реЗрдВрд╕рд░, рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ - рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░
рдкреНрд░рддреНрдпреЗрдХ рд╡рдВрд╢рдЬ рдЕрдкрдиреЗ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдереЛрдбрд╝рд╛ рдмрдврд╝рд╛рддрд╛ рд╣реИ:
- рдмреЙрдХреНрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдирдП рдЧреБрдг рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдпрдд рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
- рд╕рд░реНрдХрд┐рд▓ рд╡рд░реНрдЧ рдПрдХ рддреНрд░рд┐рдЬреНрдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╡рд┐рдЪрд┐рддреНрд░ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдПрдХ рдЧреЛрд▓ рд╡рд╕реНрддреБ рдХрд╛ рддреНрд░рд┐рдЬреНрдпрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдкрд╣рд┐рдпрд╛ред
- рдмрд╣реБрднреБрдЬ рд╡рд░реНрдЧ рдПрдХ рд╡рд░реНрдЯрд┐рдХрд▓ рдЧреБрдг рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рднреМрддрд┐рдХ рд╕рд┐рдореБрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреЛрдиреЗ рдХреА рд╕реВрдЪреА рд╣реЛрддреА рд╣реИред
рд╡рд╛рдкрд╕ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рджреАрд╡рд╛рд░ рдПрдХ рднреМрддрд┐рдХ рд╢рд░реАрд░ (рдмреЙрдбреА) рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдЖрдпрдд (рдмреЙрдХреНрд╕) рдФрд░ рдЪрд┐рддреНрд░ рдореЗрдВ рдЪрд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рднрд░рдг рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЕрдм, рдПрдХ рджреАрд╡рд╛рд░ рд╣реЛрдиреЗ рдкрд░, рд╣рдо рдЬрд┐рддрдиреА рдЪрд╛рд╣реЗрдВ рдЙрддрдиреА рджреАрд╡рд╛рд░реЗрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ 4. рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХреЗ рдмрд╛рдж main.qml рдФрд░ рд╡рд┐рд╢реНрд╡ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рдЦреЛрд▓реЗрдВред рд╣рдорд╛рд░реА рджреАрд╡рд╛рд░ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝реЗрдВ:
Wall { id: wallLeft width: 10 anchors { bottom: parent.bottom left: parent.left top: parent.top } } Wall { id: wallRight width: 10 anchors { bottom: parent.bottom right: parent.right top: parent.top } } Wall { id: wallTop height: 10 anchors { left: parent.left right: parent.right top: parent.top } } Wall { id: wallBottom height: 10 anchors { left: parent.left right: parent.right bottom: parent.bottom } }
рд╣рдо рд╕рдм рдХреБрдЫ рдмрдЪрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░реАрди рдкрд░ рд╣рдо рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ рдФрд░ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рджреБрдирд┐рдпрд╛ рдХреЛ рдлреНрд░реЗрдо рдХрд░рддреЗ рд╣реБрдП 4 рджреАрд╡рд╛рд░реЗрдВ рджреЗрдЦреЗрдВрдЧреЗред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЧреЗрдВрдж рд╣реИ рдЬреЛ рд╣рдорд╛рд░реА рджреБрдирд┐рдпрд╛ рдФрд░ рд╣рд┐рдЯ рдХреА рджреАрд╡рд╛рд░реЛрдВ рдХреЗ рднреАрддрд░ рдЙрдбрд╝ рд╕рдХрддреА рд╣реИред рдЧреЗрдВрдж рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Ball.qml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕реЗ рдирд┐рдореНрди рдкреНрд░рдХреГрддрд┐ рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рднрд░реЗрдВ:
import QtQuick 1.0 import Box2D 1.0 Body { id: ball fixedRotation: false sleepingAllowed: false fixtures: Circle { id: circle radius: 12 anchors.fill: parent density: 0; friction: 10; restitution: 1.05; } Image { id: circleRect anchors.centerIn: parent width: circle.radius * 2 height: width smooth: true source: "images/ball.png" } }
рджреАрд╡рд╛рд░ рдХреЗ рд╕рд╛рде рднреА, рдХреЗрд╡рд▓ рдмреЙрдХреНрд╕ рдХреЗ рдмрдЬрд╛рдп рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд░реНрдХрд▓ рд╣реИред рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЕрдкрдиреА рдЧреЗрдВрдж рдХреЛ рдЬреЛрдбрд╝реЗрдВ, рд╡рд┐рд╢реНрд╡ рд╡рд╕реНрддреБ рдореЗрдВ рдЕрдВрддрд┐рдо рджреАрд╡рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЧреЗрдВрдж рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝реЗрдВ:
Ball { id: ball x: parent.width/2 y: parent.height/2 }
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╕реНрдХреНрд░реАрди рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рдПрдХ рдЧреЗрдВрдж рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдФрд░ рд░реИрдЦрд┐рдХ рддреНрд╡рд░рдг рдХреА рдХрдореА рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдЪрд▓рддреА рд╣реИред рдХреНрдпрд╛ рдПрдХ рдЪрд╛рд▓рд╛рдХ ...
рдЕрдЧрд▓рд╛ рдЪрд░рдг рдПрдХ рдРрд╕рд╛ рдордВрдЪ рд╣реИ рдЬреЛ рдПрдХрдорд╛рддреНрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЧреЗрдВрдж рдХреЛ рдорд╛рд░реЗрдВрдЧреЗред рдкрд┐рдЫрд▓реА рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдирдпрд╛ Platform.qml рдлрд╝рд╛рдЗрд▓, рдЗрд╕рдореЗрдВ:
import QtQuick 1.0 import Box2D 1.0 Body { id: platform width: platformBg.width height: platformBg.height x: parent.width/2 - width/2 y: parent.height - platformBg.height - 5 bodyType: Body.Static fixtures: Box { id: platformBox anchors.fill: parent friction: 10 density: 300; } Image { id: platformBg smooth: true source: "images/platform.png" } MouseArea { anchors.fill: parent drag.target: platform drag.axis: Drag.XAxis drag.minimumX: 0 drag.maximumX: screen.width - platform.width } }
рдпрд╣ рднреМрддрд┐рдХ рд╡рд╕реНрддреБ рджреВрд╕рд░реЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реИ рдХрд┐ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рджрд┐рд╢рд╛ рдореЗрдВ рдорд╛рдЙрд╕ / рдлрд┐рдВрдЧрд░ рдХрд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рд╡рд┐рд╡рд░рдг рдореЗрдВ, рдмреЙрд▓ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рдж, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝реЗрдВ:
Platform { id: platform }
рдлрд┐рд▓рд╣рд╛рд▓, рдореИрдВ рдЖрдкрдХреЛ рд╣рдорд╛рд░реА рджреАрд╡рд╛рд░реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдмреБрд▓рд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЕрдЪреНрдЫреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдо рд╕реНрдХреНрд░реАрди рдХреЗ рдЖрдХрд╛рд░ рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдкрдиреА рджреАрд╡рд╛рд░реЛрдВ рдХреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдмрд╛рд╣рд░ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рддреЛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ callus рдЖрдБрдЦреЗрдВ рдФрд░ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрджрд▓реЗ рдореЗрдВ, рджреБрдирд┐рдпрд╛ рдХреЗ рдЕрдВрджрд░ рдХреА рдкреНрд░рддреНрдпреЗрдХ рджреАрд╡рд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ, рдЧреБрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЬреЛрдбрд╝реЗрдВ: рдмрд╛рдИрдВ рдУрд░ рдмрд╛рдИрдВ рдУрд░рдореИрд░реНрдЬрд┐рди: -рдЪрдо рджрд╛рдИрдВ рдУрд░ рджрд╛рдИрдВ рдУрд░, рдорд╛рд░реНрдЬрд┐рди:-рдЖрдВрджреЛрд▓рдиреЛрдВ, рдКрдкрд░ рдХреЗ рдЯреЙрдкрдореИрд░рд┐рди: -рд╣рд╛рдИрдЯ рдФрд░ рдиреАрдЪреЗ рдмреЙрдЯрдордорд╛рд░реНрдЬрд┐рди рдХреЗ рд▓рд┐рдП: -рд╣рд╛рдИрдЯред рдЙрд╕рдХреЗ рдмрд╛рдж, рдлрд┐рд░ рд╕реЗ рджреМрдбрд╝реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ:

рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рдкрд░ рдЕрдЧрд▓рд╛ рдЖрдЗрдЯрдоред рдПрдХ рдЧреЗрдВрдж рдХреЗ рд╕рд╛рде рдИрдВрдЯреЛрдВ рдХреЛ рдЦрдЯрдЦрдЯрд╛рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди! рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЦреЗрд▓ рдХреЗ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдЕрд░реНрдерд╛рддреН, рд╕реНрдХреНрд░реАрди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХрдИ рд╣рд░реА рдИрдВрдЯреЗрдВ рд╣реЛрдВрдЧреА, рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдПрдХ рдЧреЗрдВрдж рдХреЗ рд╕рд╛рде рдЫреАрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рди рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рд▓ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВред рдпрджрд┐ рдИрдВрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ - рд╣рд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЗрдХрд╛рд░ рд╣реИред рдФрд░ рдЦреЗрд▓ рдореЗрдВ рд╣рдо рдПрдХ рдЯрд╛рдЗрдорд░ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕ рд╕рдордп рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдЧрд┐рдирддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕рднреА рдИрдВрдЯреЗрдВ рд▓рд╛рд▓ рди рд╣реЛ рдЬрд╛рдПрдВред рд╣рд░реЗ рд╕реЗ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдПрдиреАрдореЗрд╢рди рд╕рдорд╛рди рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 20 рд╕реЗрдХрдВрдбред рдИрдВрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рд▓ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдИрдВрдЯ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ 20 рд╕реЗрдХрдВрдб рдХрд╛ рдЯрд╛рдЗрдорд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдИрдВрдЯ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдЪрд▓реЛ рдИрдВрдЯ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ Brick.qml рдлрд╝рд╛рдЗрд▓:
import QtQuick 1.0 import Box2D 1.0 Body { id: brick width: parent.width/5 - 5 height: 15 anchors { top: parent.top topMargin: -height/2 } signal disappear() property bool contacted : false bodyType: Body.Static fixtures: Box { anchors.fill: parent friction: 1.0 onBeginContact: { contacted = true } onEndContact: { contacted = false } } Timer { id: timer interval: 20000; running: true; repeat: false onTriggered: { brick.visible = false; brick.active = false; disappear(); } } Rectangle { id: brickRect anchors.fill: parent radius: 6 state: "green" states: [ State { name: "green" when: brick.contacted PropertyChanges { target: brickRect color: "#7FFF00" } PropertyChanges { target: timer running: false } }, State { name: "red" when: !brick.contacted PropertyChanges { target: brickRect color: "red" } PropertyChanges { target: timer running: true } } ] transitions: [ Transition { from: "green" to: "red" ColorAnimation { from: "#7FFF00"; to: "red"; duration: 20000; } } ] } function show() { brick.visible = true; brick.active = true; state = "green" } function hide() { brick.visible = false; brick.active = false; } }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ: рд╢рд░реАрд░ рдХрд╛ рд╡рд┐рд╡рд░рдг, рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд░реНрдгрди, рдЙрдирдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг рдХреЗ рдЪрд┐рдХрдиреА рдПрдиреАрдореЗрд╢рди рдХреЗ рд╕рд╛рде рджреЛ рд░рд╛рдЬреНрдп, рдПрдХ рдЯрд╛рдЗрдорд░ 20 рд╕реЗрдХрдВрдб рдХреА рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдЧреЗрдВрдж рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдЯрдХреНрдХрд░ рдХреЗ рдмрд╛рдж рдкреБрдирд░рд╛рд░рдВрдн рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рд╢реЛ ()ред рдореБрдЦреНрдп .qml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реА рдИрдВрдЯреЛрдВ рдХреА рдШреЛрд╖рдгрд╛рдПрдБ рдЬреЛрдбрд╝реЗрдВ:
Brick { id: brick1 x: 3; onDisappear: bricksCount-- } Brick { id: brick2 anchors { left:brick1.right leftMargin: 5 } onDisappear: bricksCount-- } Brick { id: brick3 anchors { left:brick2.right leftMargin: 5 } onDisappear: bricksCount-- } Brick { id: brick4 anchors { left:brick3.right leftMargin: 5 } onDisappear: bricksCount-- } Brick { id: brick5 anchors { left:brick4.right leftMargin: 5 } onDisappear: bricksCount-- }
рд╡реИрд╕реЗ, рдореБрдЭрд╕реЗ рдпрд╣ рди рдкреВрдЫреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдкрдВрдХреНрддрд┐ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ - рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдХрд╛рдп рдкреНрд░рдХрд╛рд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдКрдБрдЪрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдирдП рдЪрд░ рдХреА рдШреЛрд╖рдгрд╛ рдЬреЛрдбрд╝реЗрдВ:
property int bricksCount: 5
рдЗрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо рд╢реЗрд╖ рдИрдВрдЯреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬрдм рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИ - рд╣рдо рдЦреЗрд▓ рдЦрддреНрдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЦреЗрд▓ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛ рддрд░реНрдХ рд╕рд░рд▓ рд╣реЛрдЧрд╛ - рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рдХрдо рд╕реЗ рдХрдо рддреАрди рдИрдВрдЯреЗрдВ рдпрдерд╛рд╕рдВрднрд╡ рд░рд╣реЗрдВред рдЖрдЗрдП рд╡рд┐рд╢реНрд╡ рд╡рд╕реНрддреБ рдХреЗ рдмрд╣реБрдд рдиреАрдЪреЗ рд╕реНрдерд┐рдд рд╕реЗрдХрдВрдб рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ:
Text { id: secondsPerGame anchors { bottom: parent.bottom left: parent.left } color: "white" font.pixelSize: 36 text: "0" Timer { interval: 1000; running: true; repeat: true onTriggered: secondsPerGame.text = parseInt(secondsPerGame.text) + 1 } }
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рдмрдЪрд╛ рд╣реИ? рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯ рдФрд░ рдлрд┐рдирд┐рд╢ рд╕реНрдХреНрд░реАрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЧреЗрдо рдХреЗ рддрд░реНрдХ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред рджрд░рдЕрд╕рд▓, рдпреЗ рдЯреНрд░рд╛рдЗрдлрд▓реНрд╕ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЗрдЦ рдореЗрдВ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЕрдВрдд рдореЗрдВ рдХреЗрд╡рд▓ main.qml рдлрд╝рд╛рдЗрд▓ рдХреА рдкреВрд░реА рдЕрдВрддрд┐рдо рд╕реВрдЪреА рджреВрдВрдЧрд╛:
import QtQuick 1.0 import Box2D 1.0 Image { id: screen; source: "images/bg.jpeg" width: 640 height: 360 property int bricksCount: 5 World { id: world width: screen.width height: screen.height visible: false gravity.x: 0 gravity.y: 0 Wall { id: wallLeft width: 10 anchors { bottom: parent.bottom left: parent.left leftMargin: -width top: parent.top } } Wall { id: wallRight width: 10 anchors { bottom: parent.bottom right: parent.right rightMargin: -width top: parent.top } } Wall { id: wallTop height: 10 anchors { left: parent.left right: parent.right topMargin: -height top: parent.top } } Wall { id: wallBottom height: 10 anchors { left: parent.left right: parent.right bottom: parent.bottom bottomMargin: -height } onBeginContact: { console.log(other) finishGame() } } Ball { id: ball x: parent.width/2 y: parent.height/2 } Platform { id: platform } Brick { id: brick1 x: 3; onDisappear: bricksCount-- } Brick { id: brick2 anchors { left:brick1.right leftMargin: 5 } onDisappear: bricksCount-- } Brick { id: brick3 anchors { left:brick2.right leftMargin: 5 } onDisappear: bricksCount-- } Brick { id: brick4 anchors { left:brick3.right leftMargin: 5 } onDisappear: bricksCount-- } Brick { id: brick5 anchors { left:brick4.right leftMargin: 5 } onDisappear: bricksCount-- } Text { id: secondsPerGame anchors { bottom: parent.bottom left: parent.left } color: "white" font.pixelSize: 36 text: "0" Timer { id: scoreTimer interval: 1000; running: true; repeat: true onTriggered: secondsPerGame.text = parseInt(secondsPerGame.text) + 1 } } } Item { id:screenStart anchors.fill: parent visible: false Text { id: startGame anchors.centerIn: parent color: "white" font.pixelSize: 36 text: "Start Game!" MouseArea { anchors.fill: parent onClicked: { screen.startGame() } } } } Item { id:screenFinish anchors.fill: parent visible: false Text { id: score anchors.centerIn: parent color: "white" font.pixelSize: 36 text: "Game over! Your score is: " + secondsPerGame.text } Text { id: restartGame anchors { top: score.bottom horizontalCenter: parent.horizontalCenter } color: "white" font.pixelSize: 36 text: "Restart Game!" MouseArea { anchors.fill: parent onClicked: { screen.startGame() } } } } function startGame() { screen.state = "InGame"; bricksCount = 5 brick1.show() brick2.show() brick3.show() brick4.show() brick5.show() secondsPerGame.text = "0" platform.x = screen.width/2 - platform.width/2 ball.linearVelocity.x = 0 ball.linearVelocity.y = 0 ball.active = true; ball.x = platform.x + platform.width/2 ball.y = platform.y - ball.height ball.x = screen.width/2 ball.y = screen.height/2 ball.applyLinearImpulse(Qt.point(50, 300), Qt.point(ball.x, ball.y)) scoreTimer.running = true } function finishGame(){ screen.state = "FinishScreen"; brick1.hide() brick2.hide() brick3.hide() brick4.hide() brick5.hide() ball.active = false; ball.applyLinearImpulse(Qt.point(0,0), Qt.point(ball.x, ball.y)) scoreTimer.running = false } onBricksCountChanged: { console.log(bricksCount) if (bricksCount <=2){ finishGame() } } Component.onCompleted: { startGame() } states: [ State { name: "StartScreen" PropertyChanges { target: screenStart visible: true } }, State { name: "InGame" PropertyChanges { target: world visible: true } }, State { name: "FinishScreen" PropertyChanges { target: screenFinish visible: true } } ] state: "StartScreen" }
рдХреБрд▓ рдореЗрдВ
рдпрд╣рд╛рдБ рдПрдХ рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред рдЕрдм рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ, рдФрд░ рдлрд┐рд░ рдХреБрдЫ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝реЗрдВ рдФрд░ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдкрдиреЗ рдЫрд╛рдкреЛрдВ рдХреЛ рд▓рд┐рдЦреЗрдВред рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рд╛ред рддрдереНрдп рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрд╡реЗрджрди рдХреЛ рд╕реНрд╡рдпрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рджреЛ рд╢рд╛рдо (рдХрд▓ рдФрд░ рдЖрдЬ) рд▓рд┐рдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ QML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рджрдЧреА рдФрд░ рдмрд╣реБрдд рдХрдо рд╕реАрдорд╛ рдХреА рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдмрд╛рд░-рдмрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЛрдиреЛрдВ рдХреНрдпреВрдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдЦреБрдж рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред
рдкреНрд▓рд╕ред рдмреЗрд╢рдХ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ Box2D рд╕реНрд╡рдпрдВ рдХрд┐рд╕реА рднреА рдУрдПрд╕ рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╕реНрдХрдЯреЙрдк рдФрд░ рдореЛрдмрд╛рдЗрд▓ рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╡реИрд╕реЗ, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рднреА, рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдиреАрдЪреЗ рд╕реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рдиреАрдЪреЗ рд╕реЗ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдмреЗрд╢рдХред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╕рднреА рдмреЙрдХреНрд╕ 2 рдбреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛ рдХрд┐ рдХреНрдпреВрдПрдордПрд▓ рдкрд░ рд░рдЦреА рдЧрдИ рдереА, рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХрдо рд╕реЗ рдХрдо рдЬреЛрдбрд╝реЛрдВ рдореЗрдВ рдмрдиреЗ рд░рд╣реЗред рджреВрд╕рд░реА рдУрд░, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА QML / Box2D рдХреЗ рдПрдХ рдЭреБрдВрдб рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рд╣реИ, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рднреМрддрд┐рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦрд┐рд▓реМрдиреЗ рдХреАрд▓рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдлреЛрди рдХреЗ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рдФрд░ рдЧрд┐рд░рддреЗ рдХреНрдпреВрдмреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЗрдмрд┐рд░рд┐рдВрде рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рджреВрд░ рдЙрдбрд╝рдиреЗ рдореЗрдВ рдордЬрд╝рд╛ рдФрд░ рдПрдХреНрд╕-рдореЛрдЯреЛ рдЬреИрд╕реА рдХрд╛рд░реЛрдВ рдФрд░ рдореЛрдЯрд░рд╕рд╛рдЗрдХрд┐рд▓реЛрдВ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдордд рднреВрд▓рдирд╛ред рд╡рд╣ рдХреНрдпреВрдПрдордПрд▓ рд╕реА ++ рдХреНрд▓рд╛рд╕реЗрдЬ рдкрд░ рд╕рд┐рд░реНрдл рдПрдХ рд░реИрдкрд░ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рдпрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реА ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╕реЛрд░реНрд╕ рдХреЛрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ рдкрд░
рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
code.google.com/p/quickanoid/downloads/listрдЖрдкрдХреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред