<snapdata remixID="12744793"><project name="Ping Pong Project" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Ping Pong Project"><notes></notes><hidden></hidden><headers></headers><code></code><blocks></blocks><stage name="Stage" width="480" height="360" costume="1" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="5"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list id="6"><item><ref mediaID="Stage_cst_Untitled"></ref></item></list></costumes><sounds><list struct="atomic" id="7"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="5"><sprite name="Winner Popup" idx="4" x="7" y="80" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="1" color="118.42200000000005,0,137.70000000000002,1" pen="tip" id="12"><costumes><list id="13"><item><ref mediaID="Winner Popup_cst_Untitled"></ref></item><item><ref mediaID="Winner Popup_cst_Untitled(2)"></ref></item></list></costumes><sounds><list struct="atomic" id="14"></list></sounds><blocks></blocks><variables></variables><scripts><script x="43" y="26.333333333333343"><block s="receiveGo"></block><block s="hide"></block></script><script x="219" y="110.33333333333337"><block s="receiveMessage"><l>Player One Wins</l><list></list></block><block s="doSwitchToCostume"><l>Untitled</l></block><block s="show"></block></script><script x="476" y="172.33333333333337"><block s="receiveMessage"><l>PLayer Two Wins</l><list></list></block><block s="doSwitchToCostume"><l>Untitled(2)</l></block><block s="show"></block></script></scripts></sprite><sprite name="New Game" idx="5" x="9" y="-104" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="1" color="112.70999999999997,0,165.75,1" pen="tip" id="34"><costumes><list id="35"><item><ref mediaID="New Game_cst_Untitled"></ref></item></list></costumes><sounds><list struct="atomic" id="36"></list></sounds><blocks></blocks><variables></variables><scripts><script x="36" y="29.333333333333343"><block s="receiveGo"></block><block s="hide"></block></script><script x="360" y="70.33333333333337"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doBroadcast"><l>New Game</l><list></list></block></script><script x="84" y="139.33333333333337"><block s="receiveMessage"><l>Player One Wins</l><list></list></block><block s="doBroadcast"><l>New Game</l><list></list></block><block s="doSwitchToCostume"><l>Untitled</l></block><block s="show"></block></script><script x="394" y="196.33333333333337"><block s="receiveMessage"><l>PLayer Two Wins</l><list></list></block><block s="doBroadcast"><l>New Game</l><list></list></block><block s="doSwitchToCostume"><l>Untitled</l></block><block s="show"></block></script></scripts></sprite><sprite name="Blue Wall" idx="6" x="407" y="2" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="46.817999999999984,0,68.85000000000001,1" pen="tip" id="70"><costumes><list id="71"><item><ref mediaID="Blue Wall_cst_Untitled"></ref></item></list></costumes><sounds><list struct="atomic" id="72"></list></sounds><blocks></blocks><variables></variables><scripts></scripts></sprite><sprite name="Red Wall" idx="7" x="-238" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="0,127.041,135.15,1" pen="tip" id="76"><costumes><list id="77"><item><ref mediaID="Red Wall_cst_Untitled"></ref></item></list></costumes><sounds><list struct="atomic" id="78"></list></sounds><blocks></blocks><variables></variables><scripts></scripts></sprite><sprite name="Player 1" idx="1" x="-201" y="2" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="80,80,80,1" pen="tip" id="82"><costumes><list id="83"><item><ref mediaID="Player 1_cst_Untitled"></ref></item><item><ref mediaID="Player 1_cst_Untitled(2)"></ref></item></list></costumes><sounds><list struct="atomic" id="84"></list></sounds><blocks></blocks><variables></variables><scripts><script x="47" y="32.33333333333334"><block s="receiveGo"></block><block s="doForever"><script><block s="doIf"><block s="reportKeyPressed"><l><option>up arrow</option></l></block><script><block s="changeYPosition"><l>5</l></block></script><list></list></block><block s="doIf"><block s="reportKeyPressed"><l><option>down arrow</option></l></block><script><block s="changeYPosition"><l>-5</l></block></script><list></list></block></script></block></script></scripts></sprite><sprite name="Player 2" idx="2" x="199.5" y="-2" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="80,80,80,1" pen="tip" id="112"><costumes><list id="113"><item><ref mediaID="Player 2_cst_Untitled"></ref></item><item><ref mediaID="Player 2_cst_Untitled(2)"></ref></item></list></costumes><sounds><list struct="atomic" id="114"></list></sounds><blocks></blocks><variables></variables><scripts><script x="42" y="19.333333333333343"><block s="receiveGo"></block><block s="doForever"><script><block s="doIf"><block s="reportKeyPressed"><l><option>w</option></l></block><script><block s="changeYPosition"><l>5</l></block></script><list></list></block><block s="doIf"><block s="reportKeyPressed"><l><option>s</option></l></block><script><block s="changeYPosition"><l>-5</l></block></script><list></list></block></script></block></script></scripts></sprite><watcher var="speed" style="normal" x="10" y="10" color="243,118,29" hidden="true"/><watcher var="Starting direction" style="normal" x="10" y="73.000006" color="243,118,29" hidden="true"/><watcher var="button" style="normal" x="18" y="19.00000800000001" color="243,118,29" hidden="true"/><watcher var="Score One" style="normal" x="19" y="5.000001999999995" color="243,118,29"/><watcher var="Score Two" style="normal" x="352" y="5.00000399999999" color="243,118,29"/><watcher scope="Player 2" s="xPosition" style="normal" x="10" y="94.00000800000001" color="74,108,212" hidden="true"/><watcher scope="Player 2" s="yPosition" style="normal" x="10" y="115.00001" color="74,108,212" hidden="true"/><watcher scope="Player 1" s="xPosition" style="normal" x="10" y="136.000012" color="74,108,212" hidden="true"/><watcher scope="Player 1" s="yPosition" style="normal" x="10" y="157.000014" color="74,108,212" hidden="true"/><sprite name="Ball" idx="3" x="-13.02458269749468" y="-4.151816715526678" heading="293" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="0,127.90799999999999,145.35,1" pen="tip" id="151"><costumes><list id="152"><item><ref mediaID="Ball_cst_ball a"></ref></item></list></costumes><sounds><list struct="atomic" id="153"></list></sounds><blocks></blocks><variables></variables><scripts><script x="25" y="10"><block s="receiveMessage"><l>reset</l><list></list></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doSetVar"><l>Starting direction</l><block s="reportRandom"><l>1</l><l>2</l></block></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="Starting direction"/><l>1</l></list></block><script><block s="setHeading"><block s="reportRandom"><l>240</l><l>300</l></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="Starting direction"/><l>2</l></list></block><script><block s="setHeading"><block s="reportRandom"><l>60</l><l>210</l></block></block></script><list></list></block><block s="doSetVar"><l>speed</l><l>3</l></block><block s="doForever"><script><block s="forward"><block var="speed"/></block><block s="bounceOffEdge"></block><block s="doIf"><block s="reportVariadicOr"><list><block s="reportTouchingObject"><l>Player 1</l></block><block s="reportTouchingObject"><l>Player 2</l></block></list></block><script><block s="setHeading"><block s="reportDifference"><l>360</l><block s="direction"></block></block></block><block s="doSetVar"><l>speed</l><block s="reportVariadicSum"><list><block var="speed"/><l>.25</l></list></block></block></script><list></list></block><block s="doIf"><block s="reportTouchingObject"><l>Blue Wall</l></block><script><block s="doSetVar"><l>Score One</l><block s="reportVariadicSum"><list><block var="Score One"/><l>1</l></list></block></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="Score One"/><l>5</l></list></block><script><block s="doBroadcast"><l>Player One Wins</l><list></list></block></script><list></list></block><block s="doBroadcast"><l>reset</l><list></list></block></script><list></list></block><block s="doIf"><block s="reportTouchingObject"><l>Red Wall</l></block><script><block s="doSetVar"><l>Score Two</l><block s="reportVariadicSum"><list><block var="Score Two"/><l>1</l></list></block></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="Score Two"/><l>5</l></list></block><script><block s="doBroadcast"><l>PLayer Two Wins</l><list></list></block></script><list></list></block><block s="doBroadcast"><l>reset</l><list></list></block></script><list></list></block></script></block></script><script x="466" y="27.333333333333314"><block s="receiveGo"></block><block s="doSetVar"><l>Score One</l><l>0</l></block><block s="doSetVar"><l>Score Two</l><l>0</l></block><block s="doBroadcast"><l>reset</l><list></list></block></script></scripts></sprite></sprites></stage><variables><variable name="speed"><l>3.25</l></variable><variable name="Score One"><l>1</l></variable><variable name="Score Two"><l>1</l></variable><variable name="Starting direction"><l>2</l></variable><variable name="button"><l>&#xD;  &lt;?xml version="1.0" encoding="UTF-8"?&gt;&#xD;&lt;html lang="en"&gt;&#xD;&lt;head&gt;&#xD;  &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;&#xD;  &lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;&#xD;  &lt;title&gt;Qt Quick Demo - Maroon in Trouble | Qt 5.15&lt;/title&gt;&#xD;  &lt;link rel="stylesheet" type="text/css" href="/style/online2.css" /&gt;&#xD;  &lt;link rel="stylesheet" href="https://www.qt.io/hubfs/qt-design-system/qt-design-system-1.1.0.css" /&gt;&#xD;  &lt;link rel="stylesheet" type="text/css" href="/style/font-awesome.min.css" /&gt;&#xD;  &lt;link rel="shortcut icon" href="//d33sqmjvzgs8hq.cloudfront.net/wp-content/themes/oneqt/assets/images/favicon.ico.gzip" /&gt;&#xD;  &lt;link rel="icon" type="image/png" href="//d33sqmjvzgs8hq.cloudfront.net/wp-content/themes/oneqt/assets/images/favicon-32x32.png" /&gt;&#xD;  &lt;link rel="icon" type="image/png" href="//d33sqmjvzgs8hq.cloudfront.net/wp-content/themes/oneqt/assets/images/favicon-16x16.png" /&gt;&#xD;  &lt;script type="text/javascript" src="//d33sqmjvzgs8hq.cloudfront.net/wp-includes/js/jquery/jquery.js.gzip"&gt;&lt;/script&gt;&#xD;  &lt;script type="text/javascript" src="//d33sqmjvzgs8hq.cloudfront.net/wp-includes/js/jquery/jquery-migrate.min.js.gzip"&gt;&lt;/script&gt;&#xD;  &lt;script type="text/javascript" src="//d33sqmjvzgs8hq.cloudfront.net/wp-content/themes/oneqt/js/combo.js.gzip"&gt;&lt;/script&gt;&#xD;  &lt;script src="https://unpkg.com/@popperjs/core@2"&gt;&lt;/script&gt;&#xD;  &lt;script src="https://unpkg.com/tippy.js@6"&gt;&lt;/script&gt;&#xD;  &lt;script type="text/javascript" src="/scripts/qtds-extras.js"&gt;&lt;/script&gt;&#xD;  &lt;script type="text/javascript"&gt; wpThemeFolder = &apos;https://qt.io/wp-content/themes/oneqt&apos;; &lt;/script&gt;&#xD;  &lt;script type="text/javascript"&gt;&#xD;    $(function () {&#xD;      if (document.documentElement.getAttribute(&apos;data-theme&apos;) === &apos;dark&apos;)&#xD;        $(&apos;input#th-toggle&apos;).prop(&apos;checked&apos;, true);&#xD;      $(&apos;input#th-toggle&apos;).change(function() {&#xD;        var theme = this.checked ? &apos;dark&apos; : &apos;light&apos;;&#xD;        localStorage.setItem(&apos;theme&apos;, theme);&#xD;        document.documentElement.setAttribute(&apos;data-theme&apos;, theme);&#xD;      });&#xD;    });&#xD;  &lt;/script&gt;&#xD;  &lt;!-- Google Tag Manager --&gt;&#xD;    &lt;script&gt;(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({&apos;gtm.start&apos;:&#xD;    new Date().getTime(),event:&apos;gtm.js&apos;});var f=d.getElementsByTagName(s)[0],&#xD;    j=d.createElement(s),dl=l!=&apos;dataLayer&apos;?&apos;&amp;l=&apos;+l:&apos;&apos;;j.async=true;j.src=&#xD;    &apos;https://www.googletagmanager.com/gtm.js?id=&apos;+i+dl;f.parentNode.insertBefore(j,f);&#xD;    })(window,document,&apos;script&apos;,&apos;dataLayer&apos;,&apos;GTM-5QQXBTC&apos;);&lt;/script&gt;&#xD;  &lt;!-- End Google Tag Manager --&gt;&#xD;  &lt;script type="text/javascript" src="/scripts/qt-design-system-1.1.0-doc.js"&gt;&lt;/script&gt;&#xD;  &lt;script src="/scripts/prettify.js" type="text/javascript"&gt;&lt;/script&gt;&#xD;&lt;/head&gt;&#xD;&lt;body class="qt-design-system" style="background:var(--content-bg-color)" onload="prettyPrint()"&gt;&#xD;&lt;div class="header" id="header"&gt;&#xD;&lt;header class="b-header" data-float="true"&gt;&#xD;    &lt;div class="b-header__container"&gt;&#xD;&#xD;        &lt;div class="b-header__secondary-level"&gt;&#xD;            &lt;div class="b-header__secondary-level__back"&gt;&#xD;                &lt;a class="c-link c-link--left" href="https://www.qt.io/"&gt;Back to Qt.io&lt;/a&gt;&#xD;            &lt;/div&gt;&#xD;            &lt;div class="b-header__secondary-level__right"&gt;&#xD;                &lt;a href="https://www.qt.io/contact-us/" target="_blank"&gt;Contact Us&lt;/a&gt;&#xD;                &lt;a href="https://blog.qt.io/" target="_blank"&gt;Blog&lt;/a&gt;&#xD;                &lt;a href="https://www.qt.io/download/" target="_blank" class="c-button c-button--small"&gt;Download Q&amp;#116;&lt;/a&gt;&#xD;            &lt;/div&gt;&#xD;        &lt;/div&gt;&#xD;&#xD;        &lt;div class="b-header__primary-level"&gt;&#xD;            &lt;div class="b-header__primary-level__left"&gt;&#xD;                &lt;a class="b-header__logo" href="/"&gt;&#xD;                    &lt;img src="/style/qt-logo-documentation.svg" alt="Qt documentation"&gt;&#xD;                &lt;/a&gt;&#xD;            &lt;/div&gt;&#xD;            &lt;div class="b-header__primary-level__navigation"&gt;&#xD;            &lt;ul class="c-navigation-header"&gt;&#xD;                &lt;li role="menu" style="margin: 0 5px 5px 0;top:7px"&gt;&#xD;                  &lt;div title="Toggle light/dark theme" class="theme-switch-wrapper"&gt;&#xD;                    &lt;label class="theme-switch" for="th-toggle"&gt;&#xD;                        &lt;input type="checkbox" id="th-toggle" /&gt;&#xD;                        &lt;div class="theme-icon"&gt;&lt;/div&gt;&#xD;                    &lt;/label&gt;&#xD;                  &lt;/div&gt;&#xD;                &lt;/li&gt;&#xD;                &lt;li role="menu"&gt;&#xD;                    &lt;a href="/archives" aria-haspopup="true" aria-expanded="false"&gt;Archives&lt;/a&gt;&#xD;                &lt;/li&gt;&#xD;                &lt;li role="menu"&gt;&#xD;                    &lt;a href="https://doc-snapshots.qt.io/" aria-haspopup="true" aria-expanded="false"&gt;Snapshots&lt;/a&gt;&#xD;                &lt;/li&gt;&#xD;            &lt;/ul&gt;&#xD;            &lt;/div&gt;&#xD;            &lt;div class="b-header__primary-level__hamburger"&gt;&#xD;                &lt;div class="c-hamburger"&gt;&lt;/div&gt;&#xD;            &lt;/div&gt;&#xD;        &lt;/div&gt;&#xD;    &lt;/div&gt;&#xD;&lt;/header&gt;&#xD;&lt;/div&gt;&#xD;&lt;div data-global-resource-path="qt-design-system/components/b-sidebar.html"&gt;&#xD;    &lt;div class="b-sidebar b-sidebar--full-width"&gt;&#xD;        &lt;aside class="b-sidebar__sidebar"&gt;&#xD;            &lt;div class="b-sidebar__sidebar__mobile-close"&gt;&lt;div class="c-mobile-close"&gt;&lt;/div&gt;&lt;/div&gt;&#xD;            &lt;div class="b-sidebar__sidebar__mobile-toggle" data-mobile-title="Topics"&gt;&lt;/div&gt;&#xD;                        &lt;div class="b-sidebar__sidebar__content"&gt;&#xD;                &lt;div data-margin-bottom="md"&gt;&#xD;                                        &lt;select id="qds-vdropdown" class="c-form-select c-form-select--dark js-versioncontrol" style="visibility:hidden"&gt;&#xD;                                            &lt;/select&gt;&#xD;                                    &lt;/div&gt;&#xD;                &lt;div id="qds-ec-toggle" title="Expand/collapse all"&gt;&lt;/div&gt;&#xD;                &lt;nav&gt;&#xD;                    &lt;ul class="c-sidebar-navigation"&gt;&#xD;                                                &lt;li class="sidebar-nav-topic" id="sb-topic-0" style="visibility:hidden"&gt;&#xD; &lt;a&gt;&#xD;  Reference&#xD; &lt;/a&gt;&#xD; &lt;ul&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="classes.html"&gt;&#xD;    All Qt C++ Classes&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="qmltypes.html"&gt;&#xD;    All QML Types&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="qtmodules.html"&gt;&#xD;    All Qt Modules&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="../qtcreator/index.html"&gt;&#xD;    Qt Creator Manual&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="reference-overview.html"&gt;&#xD;    All Qt Reference Documentation&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD; &lt;/ul&gt;&#xD;&lt;/li&gt;&#xD;                        &lt;li class="sidebar-nav-topic" id="sb-topic-1" style="visibility:hidden"&gt;&#xD; &lt;a&gt;&#xD;  Getting Started&#xD; &lt;/a&gt;&#xD; &lt;ul&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="gettingstarted.html"&gt;&#xD;    Getting Started with Qt&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="qt5-intro.html"&gt;&#xD;    What&apos;s New in Qt 5&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="qtexamplesandtutorials.html"&gt;&#xD;    Examples and Tutorials&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="supported-platforms.html"&gt;&#xD;    Supported Platforms&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="licensing.html"&gt;&#xD;    Qt Licensing&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD; &lt;/ul&gt;&#xD;&lt;/li&gt;&#xD;                        &lt;li class="sidebar-nav-topic" id="sb-topic-2" style="visibility:hidden"&gt;&#xD; &lt;a&gt;&#xD;  Overviews&#xD; &lt;/a&gt;&#xD; &lt;ul&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="topics-app-development.html"&gt;&#xD;    Development Tools&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="topics-ui.html"&gt;&#xD;    User Interfaces&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="topics-core.html"&gt;&#xD;    Core Internals&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="topics-data-storage.html"&gt;&#xD;    Data Storage&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="multimediaoverview.html"&gt;&#xD;    Multimedia&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="topics-network-connectivity.html"&gt;&#xD;    Networking and Connectivity&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="topics-graphics.html"&gt;&#xD;    Graphics&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="mobiledevelopment.html"&gt;&#xD;    Mobile APIs&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="qmlapplications.html"&gt;&#xD;    QML Applications&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD;  &lt;li&gt;&#xD;   &lt;a href="overviews-main.html"&gt;&#xD;    All Qt Overviews&#xD;   &lt;/a&gt;&#xD;  &lt;/li&gt;&#xD; &lt;/ul&gt;&#xD;&lt;/li&gt;&#xD;                    &lt;/ul&gt;&#xD;                &lt;/nav&gt;&#xD;            &lt;/div&gt;&#xD;        &lt;/aside&gt;&#xD;        &lt;div class="b-sidebar__content"&gt;&#xD;            &lt;div class="b-sidebar__topbar" data-margin-bottom="sm"&gt;&#xD;                &lt;div class="b-topbar"&gt;&#xD;                      &lt;div class="b-topbar__search"&gt;&#xD;                        &lt;form id="site-search" role="search" style="width: 535px; max-width: 100%" autocomplete="off"&gt;&#xD;                            &lt;input class="c-form-input-field c-form-input-field--search" placeholder="Search" id="search" name="search" onclick="(function(w,d,i){i.removeAttribute(&apos;on&apos;+w.event.type);var j=d.createElement(&apos;script&apos;),c=d.createElement(&apos;link&apos;);j.async=true;j.onload=function(){qtSearchInit(i,w.qtSearchNavigation)};j.src=&apos;//www.qt.io/hubfs/qt-design-system/qt-search-component/qt-search-component.js&apos;;c.rel=&apos;stylesheet&apos;;c.onload=function(){try{w.qtscs=1;qtSearchStyle(i)}catch(e){}};c.href=&apos;//www.qt.io/hubfs/qt-design-system/qt-search-component/qt-search-component.css&apos;;d.head.appendChild(c);d.head.appendChild(j)})(window,document,this)" required type="text"&gt;&#xD;                            &lt;button type="submit" style="display:none;"&gt;Search&lt;/button&gt;&#xD;                            &lt;style&gt;.js-qt-search-component{z-index:1000;}&lt;/style&gt;&#xD;                        &lt;/form&gt;&#xD;                    &lt;/div&gt;                      &lt;div class="b-topbar__breadcrump" translate="no"&gt;&#xD;                        &lt;ul class="c-breadcrump"&gt;&#xD;                            &lt;li&gt;&lt;a href="index.html" translate="no"&gt;Qt 5.15&lt;/a&gt;&lt;/li&gt;&#xD;                            &lt;li&gt;&lt;a&gt;Qt Quick Demo - Maroon in Trouble&lt;/a&gt;&lt;/li&gt;&#xD;                        &lt;/ul&gt;&#xD;                    &lt;/div&gt;&#xD;                &lt;/div&gt;&#xD;            &lt;/div&gt;&#xD;            &lt;div class="b-sidebar__content__wrapper"&gt;&#xD;                &lt;article class="b-sidebar__content__left"&gt;&#xD;                    &lt;div class="context mainContent" style="margin: 0;padding: 0; background: 0;"&gt;&#xD;                    &#xD;&#xD;&lt;div class="context"&gt;&#xD;&lt;h1 class="title"&gt;Qt Quick Demo - Maroon in Trouble&lt;/h1&gt;&#xD;&lt;span class="subtitle"&gt;&lt;/span&gt;&#xD;&lt;!-- $$$demos/maroon-brief --&gt;&#xD;&lt;p&gt;A Qt Quick game for touch devices that uses &lt;a href="qml-qtquick-spritesequence.html" translate="no"&gt;SpriteSequence&lt;/a&gt;, &lt;a href="qml-qtquick-particles-particlesystem.html" translate="no"&gt;ParticleSystem&lt;/a&gt;, Emitter, and Wander types to animate objects and the &lt;a href="qml-multimedia.html#soundeffect" translate="no"&gt;SoundEffect&lt;/a&gt; type to play sound effects.&lt;/p&gt;&#xD;&lt;!-- @@@demos/maroon --&gt;&#xD;&lt;!-- $$$demos/maroon-description --&gt;&#xD;&lt;div class="descr"&gt; &lt;a name="details"&gt;&lt;/a&gt;&#xD;&lt;p class="centerAlign"&gt;&lt;img alt="" src="images/qtquick-demo-maroon-med-2.png"/&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;Maroon in Trouble&lt;/i&gt; demonstrates QML features that are useful when developing games:&lt;/p&gt;&#xD;&lt;ul&gt;&#xD;&lt;li&gt;Using custom QML types to create different screens for different stages of the game.&lt;/li&gt;&#xD;&lt;li&gt;Using the &lt;a href="qml-qtquick-item.html" translate="no"&gt;Item&lt;/a&gt; and &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; types to construct a game background.&lt;/li&gt;&#xD;&lt;li&gt;Using the &lt;a href="qml-qtquick-sequentialanimation.html" translate="no"&gt;SequentialAnimation&lt;/a&gt;, &lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;, &lt;a href="qml-qtquick-particles-particlesystem.html" translate="no"&gt;ParticleSystem&lt;/a&gt;, &lt;a href="qml-qtquick-particles-emitter.html" translate="no"&gt;Emitter&lt;/a&gt;, and &lt;a href="qml-qtquick-particles-wander.html" translate="no"&gt;Wander&lt;/a&gt; types to animate background objects.&lt;/li&gt;&#xD;&lt;li&gt;Using the &lt;a href="qml-qtqml-timer.html" translate="no"&gt;Timer&lt;/a&gt; and &lt;a href="qml-qtquick-repeater.html" translate="no"&gt;Repeater&lt;/a&gt; types to display a countdown sequence before starting the game.&lt;/li&gt;&#xD;&lt;li&gt;Using a custom QML type with custom properties to construct a game board.&lt;/li&gt;&#xD;&lt;li&gt;Using the &lt;a href="qml-qtquick-spritesequence.html" translate="no"&gt;SpriteSequence&lt;/a&gt; and &lt;a href="qml-qtquick-sprite.html" translate="no"&gt;Sprite&lt;/a&gt; types to add animated objects to the game board.&lt;/li&gt;&#xD;&lt;li&gt;Using a custom QML type that uses the &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; type with some custom properties to add a menu where the players can buy objects.&lt;/li&gt;&#xD;&lt;li&gt;Using custom properties with private functions to keep track of game statistics and a custom QML type to display them to the players.&lt;/li&gt;&#xD;&lt;li&gt;Using the &lt;a href="qml-qtqml-statemachine-state.html" translate="no"&gt;State&lt;/a&gt; type with JavaScript functions to manage game states.&lt;/li&gt;&#xD;&lt;li&gt;Using the &lt;a href="qml-multimedia.html#soundeffect" translate="no"&gt;SoundEffect&lt;/a&gt; type to play individual sound effects depending on the object type and the action applied to the object.&lt;/li&gt;&#xD;&lt;li&gt;Using signal handlers to specify keyboard shortcuts for some game actions.&lt;/li&gt;&#xD;&lt;li&gt;Using resource files to package game resources for deployment and delivery.&lt;/li&gt;&#xD;&lt;/ul&gt;&#xD;&lt;a name="running-the-example"&gt;&lt;/a&gt;&#xD;&lt;h4 id="running-the-example"&gt;Running the Example&lt;a class="plink" href="#running-the-example" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p&gt;To run the example from &lt;a href="https://doc.qt.io/qtcreator/index.html" translate="no"&gt;Qt Creator&lt;/a&gt;, open the &lt;b&gt;Welcome&lt;/b&gt; mode and select the example from &lt;b&gt;Examples&lt;/b&gt;. For more information, visit &lt;a href="https://doc.qt.io/qtcreator/creator-build-example-application.html" translate="no"&gt;Building and Running an Example&lt;/a&gt;.&lt;/p&gt;&#xD;&lt;a name="adding-screens"&gt;&lt;/a&gt;&#xD;&lt;h4 id="adding-screens"&gt;Adding Screens&lt;a class="plink" href="#adding-screens" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p&gt;In the Maroon in Trouble app, we use the following custom types that are each defined in a separate .qml file to create the game screens:&lt;/p&gt;&#xD;&lt;ul&gt;&#xD;&lt;li&gt;NewGameScreen.qml&lt;/li&gt;&#xD;&lt;li&gt;GameCanvas.qml&lt;/li&gt;&#xD;&lt;li&gt;GameOverScreen.qml&lt;/li&gt;&#xD;&lt;/ul&gt;&#xD;&lt;p&gt;To use the custom types, we add an import statement to the main QML file, maroon.qml that imports the folder called &lt;code translate="no"&gt;content&lt;/code&gt; where the types are located:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;import "content"&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use the screen types at different stages of the game. The NewGameScreen type is used to create the screen that appears when the players start the app. In NewGameScreen.qml, we use an &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; type to create a New Game button that the players can press to start a new game.&lt;/p&gt;&#xD;&lt;p class="centerAlign"&gt;&lt;img alt="" src="images/qtquick-demo-maroon-med-1.png"/&gt;&lt;/p&gt;&lt;p&gt;Tapping the button initiates a countdown timer that triggers the creation of the game canvas by using the GameCanvas type. Another &lt;a href="qml-qtqml-timer.html" translate="no"&gt;Timer&lt;/a&gt; type spawns mobs of fish inside bubbles that the players must free before they reach the surface. The players can tap on the screen to open a menu where they can buy different types of weapons (melee, ranged, and bombs) to burst the bubbles.&lt;/p&gt;&#xD;&lt;p class="centerAlign"&gt;&lt;img alt="" src="images/qtquick-demo-maroon-med-2.png"/&gt;&lt;/p&gt;&lt;p&gt;When the game finishes, a screen created by using the GameOverScreen type appears. On this screen, the players can see their score and start a new game.&lt;/p&gt;&#xD;&lt;p class="centerAlign"&gt;&lt;img alt="" src="images/qtquick-demo-maroon-med-3.jpg"/&gt;&lt;/p&gt;&lt;p&gt;The screens are all created on the same background and use some of the same images and animations.&lt;/p&gt;&#xD;&lt;a name="constructing-the-background"&gt;&lt;/a&gt;&#xD;&lt;h4 id="constructing-the-background"&gt;Constructing the Background&lt;a class="plink" href="#constructing-the-background" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p&gt;In the maroon.qml file, we use an &lt;a href="qml-qtquick-item.html" translate="no"&gt;Item&lt;/a&gt; type with the id &lt;code translate="no"&gt;root&lt;/code&gt; and a fixed width and height to create a main window for the game:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;&lt;span class="type"&gt;&lt;a href="qml-qtquick-item.html" translate="no"&gt;Item&lt;/a&gt;&lt;/span&gt; {&#xD;    &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;root&lt;/span&gt;&#xD;    &lt;span class="name"&gt;width&lt;/span&gt;: &lt;span class="number"&gt;320&lt;/span&gt;&#xD;    &lt;span class="name"&gt;height&lt;/span&gt;: &lt;span class="number"&gt;480&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;var&lt;/span&gt; &lt;span class="name"&gt;gameState&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;bool&lt;/span&gt; &lt;span class="name"&gt;passedSplash&lt;/span&gt;: &lt;span class="number"&gt;false&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We declare two custom properties for the root item, &lt;code translate="no"&gt;gameState&lt;/code&gt; and &lt;code translate="no"&gt;passedSplash&lt;/code&gt; that we will use later to manage game states.&lt;/p&gt;&#xD;&lt;p&gt;We use an &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; item to display the game background image:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;source&lt;/span&gt;:&lt;span class="string"&gt;"content/gfx/background.png"&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.bottom: &lt;span class="name"&gt;view&lt;/span&gt;.&lt;span class="name"&gt;bottom&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We want to be able to load the background image only once at app startup and still use different scenes for the game screens. Therefore, background.png is three times the length of the root item and displays a scene that stretches from the bottom of sea to the sky above the horizon.&lt;/p&gt;&#xD;&lt;p&gt;We use the &lt;code translate="no"&gt;anchors.bottom&lt;/code&gt; property to anchor the background image to the bottom of the &lt;a href="qml-qtquick-column.html" translate="no"&gt;Column&lt;/a&gt; layout that we use to position the screens:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-column.html" translate="no"&gt;Column&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;view&lt;/span&gt;&#xD;        &lt;span class="name"&gt;y&lt;/span&gt;: -(&lt;span class="name"&gt;height&lt;/span&gt; &lt;span class="operator"&gt;-&lt;/span&gt; &lt;span class="number"&gt;480&lt;/span&gt;)&#xD;        &lt;span class="name"&gt;width&lt;/span&gt;: &lt;span class="number"&gt;320&lt;/span&gt;&#xD;&#xD;        &lt;span class="type"&gt;GameOverScreen&lt;/span&gt; { &lt;span class="name"&gt;gameCanvas&lt;/span&gt;: &lt;span class="name"&gt;canvas&lt;/span&gt; }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We set a negative value for the &lt;code translate="no"&gt;y&lt;/code&gt; property to set the first scene at the bottom of the sea. We calculate the position by subtracting the height of a screen from the &lt;code translate="no"&gt;height&lt;/code&gt; property.&lt;/p&gt;&#xD;&lt;p&gt;Within the column layout, we use an &lt;a href="qml-qtquick-item.html" translate="no"&gt;Item&lt;/a&gt; type to add objects to the background. Within the item, we use &lt;a href="10-qdoc-commands-tablesandlists.html#row" translate="no"&gt;Row&lt;/a&gt; layout objects to position &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; objects that display waves on the game canvas and the game over screen:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-item.html" translate="no"&gt;Item&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;canvasArea&lt;/span&gt;&#xD;            &lt;span class="name"&gt;width&lt;/span&gt;: &lt;span class="number"&gt;320&lt;/span&gt;&#xD;            &lt;span class="name"&gt;height&lt;/span&gt;: &lt;span class="number"&gt;480&lt;/span&gt;&#xD;&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-row.html" translate="no"&gt;Row&lt;/a&gt;&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;height&lt;/span&gt;: &lt;span class="name"&gt;childrenRect&lt;/span&gt;.&lt;span class="name"&gt;height&lt;/span&gt;&#xD;                &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;                    &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;wave&lt;/span&gt;&#xD;                    &lt;span class="name"&gt;y&lt;/span&gt;: &lt;span class="number"&gt;30&lt;/span&gt;&#xD;                    &lt;span class="name"&gt;source&lt;/span&gt;:&lt;span class="string"&gt;"content/gfx/wave.png"&lt;/span&gt;&#xD;                }&#xD;                &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;                    &lt;span class="name"&gt;y&lt;/span&gt;: &lt;span class="number"&gt;30&lt;/span&gt;&#xD;                    &lt;span class="name"&gt;source&lt;/span&gt;:&lt;span class="string"&gt;"content/gfx/wave.png"&lt;/span&gt;&#xD;                }&#xD;    ...&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-row.html" translate="no"&gt;Row&lt;/a&gt;&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;opacity&lt;/span&gt;: &lt;span class="number"&gt;0.5&lt;/span&gt;&#xD;                &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;                    &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;wave2&lt;/span&gt;&#xD;                    &lt;span class="name"&gt;y&lt;/span&gt;: &lt;span class="number"&gt;25&lt;/span&gt;&#xD;                    &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"content/gfx/wave.png"&lt;/span&gt;&#xD;                }&#xD;                &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;                    &lt;span class="name"&gt;y&lt;/span&gt;: &lt;span class="number"&gt;25&lt;/span&gt;&#xD;                    &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"content/gfx/wave.png"&lt;/span&gt;&#xD;                }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;The second row of waves is positioned on the y axis with a slight offset to the first row. We also use the &lt;code translate="no"&gt;opacity&lt;/code&gt; property to make the waves appear lighter in color than the first two waves, which gives the background some depth.&lt;/p&gt;&#xD;&lt;p&gt;We use &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; objects to also display sunlight on the new game screen and on the game canvas:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"content/gfx/sunlight.png"&lt;/span&gt;&#xD;                &lt;span class="name"&gt;opacity&lt;/span&gt;: &lt;span class="number"&gt;0.02&lt;/span&gt;&#xD;                &lt;span class="name"&gt;y&lt;/span&gt;: &lt;span class="number"&gt;0&lt;/span&gt;&#xD;                &lt;span class="name"&gt;anchors&lt;/span&gt;.horizontalCenter: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;horizontalCenter&lt;/span&gt;&#xD;    ...&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"content/gfx/sunlight.png"&lt;/span&gt;&#xD;                &lt;span class="name"&gt;opacity&lt;/span&gt;: &lt;span class="number"&gt;0.04&lt;/span&gt;&#xD;                &lt;span class="name"&gt;y&lt;/span&gt;: &lt;span class="number"&gt;20&lt;/span&gt;&#xD;                &lt;span class="name"&gt;anchors&lt;/span&gt;.horizontalCenter: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;horizontalCenter&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We set the &lt;code translate="no"&gt;opacity&lt;/code&gt; property of the images to &lt;code translate="no"&gt;0.02&lt;/code&gt; and &lt;code translate="no"&gt;0.04&lt;/code&gt; to give some depth to the rays of sunshine. We use the &lt;code translate="no"&gt;y&lt;/code&gt; property to position the images at fixed locations on the y axis and the &lt;code translate="no"&gt;anchors.horizontalCenter&lt;/code&gt; property to center them horizontally in relation to their parent.&lt;/p&gt;&#xD;&lt;p&gt;We use an &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; type to display an image that adds a deepening shadow to the background:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"content/gfx/grid.png"&lt;/span&gt;&#xD;                &lt;span class="name"&gt;opacity&lt;/span&gt;: &lt;span class="number"&gt;0.5&lt;/span&gt;&#xD;            }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We set the &lt;code translate="no"&gt;opacity&lt;/code&gt; property of the image to &lt;code translate="no"&gt;0.5&lt;/code&gt; to make the background visible behind the shadow.&lt;/p&gt;&#xD;&lt;p&gt;To make the background more interesting, we animate some of the objects we added to it.&lt;/p&gt;&#xD;&lt;a name="animating-background-objects"&gt;&lt;/a&gt;&#xD;&lt;h4 id="animating-background-objects"&gt;Animating Background Objects&lt;a class="plink" href="#animating-background-objects" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p&gt;We use &lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt; to move the waves horizontally across the screen in opposite directions and &lt;a href="qml-qtquick-sequentialanimation.html" translate="no"&gt;SequentialAnimation&lt;/a&gt; with &lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt; to move them up and down.&lt;/p&gt;&#xD;&lt;p&gt;We apply the number animation to the &lt;code translate="no"&gt;x&lt;/code&gt; property of &lt;code translate="no"&gt;wave&lt;/code&gt; as a property value source to animate the x value from its current value to the &lt;code translate="no"&gt;-(wave.width)&lt;/code&gt;, over 16 seconds. We set the &lt;code translate="no"&gt;loops&lt;/code&gt; property to &lt;code translate="no"&gt;Animation.Infinite&lt;/code&gt; to repeat the animation indefinitely:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;                NumberAnimation on &lt;span class="name"&gt;x&lt;/span&gt; { &lt;span class="name"&gt;from&lt;/span&gt;: &lt;span class="number"&gt;0&lt;/span&gt;; &lt;span class="name"&gt;to&lt;/span&gt;: -(&lt;span class="name"&gt;wave&lt;/span&gt;.&lt;span class="name"&gt;width&lt;/span&gt;); &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;16000&lt;/span&gt;; &lt;span class="name"&gt;loops&lt;/span&gt;: &lt;span class="name"&gt;Animation&lt;/span&gt;.&lt;span class="name"&gt;Infinite&lt;/span&gt; }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We apply the sequential animation to the &lt;code translate="no"&gt;y&lt;/code&gt; property of the image as a property value source to animate the y value. We use one number animation to animate the image from the y position of two below the value of y to two above it, over 1600 milliseconds. We use another number animation to subsequently animate the image in the opposite direction, again over 1600 milliseconds. The animation is repeated indefinitely:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;                SequentialAnimation on &lt;span class="name"&gt;y&lt;/span&gt; {&#xD;                    &lt;span class="name"&gt;loops&lt;/span&gt;: &lt;span class="name"&gt;Animation&lt;/span&gt;.&lt;span class="name"&gt;Infinite&lt;/span&gt;&#xD;                    &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;from&lt;/span&gt;: &lt;span class="name"&gt;y&lt;/span&gt; &lt;span class="operator"&gt;-&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;; &lt;span class="name"&gt;to&lt;/span&gt;: &lt;span class="name"&gt;y&lt;/span&gt; &lt;span class="operator"&gt;+&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;; &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;1600&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;InOutQuad&lt;/span&gt; }&#xD;                    &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;from&lt;/span&gt;: &lt;span class="name"&gt;y&lt;/span&gt; &lt;span class="operator"&gt;+&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;; &lt;span class="name"&gt;to&lt;/span&gt;: &lt;span class="name"&gt;y&lt;/span&gt; &lt;span class="operator"&gt;-&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;; &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;1600&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;InOutQuad&lt;/span&gt; }&#xD;                }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use the easing curve of the type &lt;code translate="no"&gt;Easing.InOutQuad&lt;/code&gt; for a quintic (t^5) function to accelerate the motion until halfway and then decelerate it.&lt;/p&gt;&#xD;&lt;p&gt;We use sequential animation and number animation to animate &lt;code translate="no"&gt;wave2&lt;/code&gt; similarly to &lt;code translate="no"&gt;wave&lt;/code&gt;, but in the opposite direction:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;                SequentialAnimation on &lt;span class="name"&gt;y&lt;/span&gt; {&#xD;                    &lt;span class="name"&gt;loops&lt;/span&gt;: &lt;span class="name"&gt;Animation&lt;/span&gt;.&lt;span class="name"&gt;Infinite&lt;/span&gt;&#xD;                    &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;from&lt;/span&gt;: &lt;span class="name"&gt;y&lt;/span&gt; &lt;span class="operator"&gt;+&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;; &lt;span class="name"&gt;to&lt;/span&gt;: &lt;span class="name"&gt;y&lt;/span&gt; &lt;span class="operator"&gt;-&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;; &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;1600&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;InOutQuad&lt;/span&gt; }&#xD;                    &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;from&lt;/span&gt;: &lt;span class="name"&gt;y&lt;/span&gt; &lt;span class="operator"&gt;-&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;; &lt;span class="name"&gt;to&lt;/span&gt;: &lt;span class="name"&gt;y&lt;/span&gt; &lt;span class="operator"&gt;+&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;; &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;1600&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;InOutQuad&lt;/span&gt; }&#xD;                }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use sequential animation to rotate the rays of sunlight in degrees clockwise around an origin point that we set to &lt;code translate="no"&gt;Item.Top&lt;/code&gt; in the &lt;code translate="no"&gt;transformOrigin&lt;/code&gt; property. The animation is repeated indefinitely:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;                &lt;span class="name"&gt;transformOrigin&lt;/span&gt;: &lt;span class="name"&gt;Item&lt;/span&gt;.&lt;span class="name"&gt;Top&lt;/span&gt;&#xD;                SequentialAnimation on &lt;span class="name"&gt;rotation&lt;/span&gt; {&#xD;                    &lt;span class="name"&gt;loops&lt;/span&gt;: &lt;span class="name"&gt;Animation&lt;/span&gt;.&lt;span class="name"&gt;Infinite&lt;/span&gt;&#xD;                    &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;from&lt;/span&gt;: -&lt;span class="number"&gt;10&lt;/span&gt;; &lt;span class="name"&gt;to&lt;/span&gt;: &lt;span class="number"&gt;10&lt;/span&gt;; &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;8000&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;InOutSine&lt;/span&gt; }&#xD;                    &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;from&lt;/span&gt;: &lt;span class="number"&gt;10&lt;/span&gt;; &lt;span class="name"&gt;to&lt;/span&gt;: -&lt;span class="number"&gt;10&lt;/span&gt;; &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;8000&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;InOutSine&lt;/span&gt; }&#xD;                }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use one number animation to rotate the image from &lt;code translate="no"&gt;-10&lt;/code&gt; degrees to &lt;code translate="no"&gt;10&lt;/code&gt; degrees over 8 seconds and another to subsequently rotate it from &lt;code translate="no"&gt;10&lt;/code&gt; degrees to &lt;code translate="no"&gt;-10&lt;/code&gt; degrees over the same duration.&lt;/p&gt;&#xD;&lt;p&gt;We use the easing curve of the type &lt;code translate="no"&gt;Easing.InOutSine&lt;/code&gt; for a sinusoidal (sin(t)) function to accelerate the motion until halfway and then decelerate it.&lt;/p&gt;&#xD;&lt;p&gt;We use sequential animation and number animation to animate another sunlight.png image similarly, but in the opposite direction:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;                &lt;span class="name"&gt;transformOrigin&lt;/span&gt;: &lt;span class="name"&gt;Item&lt;/span&gt;.&lt;span class="name"&gt;Top&lt;/span&gt;&#xD;                SequentialAnimation on &lt;span class="name"&gt;rotation&lt;/span&gt; {&#xD;                    &lt;span class="name"&gt;loops&lt;/span&gt;: &lt;span class="name"&gt;Animation&lt;/span&gt;.&lt;span class="name"&gt;Infinite&lt;/span&gt;&#xD;                    &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;from&lt;/span&gt;: &lt;span class="number"&gt;10&lt;/span&gt;; &lt;span class="name"&gt;to&lt;/span&gt;: -&lt;span class="number"&gt;10&lt;/span&gt;; &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;8000&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;InOutSine&lt;/span&gt; }&#xD;                    &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;from&lt;/span&gt;: -&lt;span class="number"&gt;10&lt;/span&gt;; &lt;span class="name"&gt;to&lt;/span&gt;: &lt;span class="number"&gt;10&lt;/span&gt;; &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;8000&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;InOutSine&lt;/span&gt; }&#xD;                }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;For examples of using &lt;a href="qml-qtquick-sequentialanimation.html" translate="no"&gt;SequentialAnimation&lt;/a&gt; and &lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt; on the &lt;code translate="no"&gt;x&lt;/code&gt; and &lt;code translate="no"&gt;y&lt;/code&gt; properties and the &lt;code translate="no"&gt;width&lt;/code&gt; and &lt;code translate="no"&gt;height&lt;/code&gt; properties, see NewGameScreen.qml.&lt;/p&gt;&#xD;&lt;a name="emitting-particles"&gt;&lt;/a&gt;&#xD;&lt;h4 id="emitting-particles"&gt;Emitting Particles&lt;a class="plink" href="#emitting-particles" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p&gt;In addition to animation, we use particles to generate motion on the game screens. We use the &lt;a href="qml-qtquick-particles-particlesystem.html" translate="no"&gt;ParticleSystem&lt;/a&gt; QML type in maroon.qml to make bubbles appear at the bottom of the new game screen and game canvas and slowly float towards the top on varying trajectories.&lt;/p&gt;&#xD;&lt;p&gt;To use the &lt;a href="qml-qtquick-particles-particlesystem.html" translate="no"&gt;ParticleSystem&lt;/a&gt; type, we must import &lt;a href="qtquick-particles-qmlmodule.html" translate="no"&gt;Qt Quick Particles QML Types&lt;/a&gt;:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp" translate="no"&gt;import QtQuick.Particles 2.0&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;To have the particles appear on the game background, we place the &lt;a href="qml-qtquick-particles-particlesystem.html" translate="no"&gt;ParticleSystem&lt;/a&gt; type within the &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; type that displays the game background:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;source&lt;/span&gt;:&lt;span class="string"&gt;"content/gfx/background.png"&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.bottom: &lt;span class="name"&gt;view&lt;/span&gt;.&lt;span class="name"&gt;bottom&lt;/span&gt;&#xD;&#xD;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-particles-particlesystem.html" translate="no"&gt;ParticleSystem&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;particles&lt;/span&gt;&#xD;            &lt;span class="name"&gt;anchors&lt;/span&gt;.fill: &lt;span class="name"&gt;parent&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;In the &lt;a href="qml-qtquick-particles-particlesystem.html" translate="no"&gt;ParticleSystem&lt;/a&gt;, we use an &lt;a href="qml-qtquick-particles-emitter.html" translate="no"&gt;Emitter&lt;/a&gt; type to emit particles from the location of the emitter at the rate of two per second with the life span of 15 seconds:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-particles-emitter.html" translate="no"&gt;Emitter&lt;/a&gt;&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;width&lt;/span&gt;: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;width&lt;/span&gt;&#xD;                &lt;span class="name"&gt;height&lt;/span&gt;: &lt;span class="number"&gt;150&lt;/span&gt;&#xD;                &lt;span class="name"&gt;anchors&lt;/span&gt;.bottom: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;bottom&lt;/span&gt;&#xD;                &lt;span class="name"&gt;anchors&lt;/span&gt;.bottomMargin: &lt;span class="number"&gt;3&lt;/span&gt;&#xD;                &lt;span class="name"&gt;startTime&lt;/span&gt;: &lt;span class="number"&gt;15000&lt;/span&gt;&#xD;&#xD;                &lt;span class="name"&gt;emitRate&lt;/span&gt;: &lt;span class="number"&gt;2&lt;/span&gt;&#xD;                &lt;span class="name"&gt;lifeSpan&lt;/span&gt;: &lt;span class="number"&gt;15000&lt;/span&gt;&#xD;&#xD;                &lt;span class="name"&gt;acceleration&lt;/span&gt;: &lt;span class="name"&gt;PointDirection&lt;/span&gt;{ &lt;span class="name"&gt;y&lt;/span&gt;: -&lt;span class="number"&gt;6&lt;/span&gt;; &lt;span class="name"&gt;xVariation&lt;/span&gt;: &lt;span class="number"&gt;2&lt;/span&gt;; &lt;span class="name"&gt;yVariation&lt;/span&gt;: &lt;span class="number"&gt;2&lt;/span&gt; }&#xD;&#xD;                &lt;span class="name"&gt;size&lt;/span&gt;: &lt;span class="number"&gt;24&lt;/span&gt;&#xD;                &lt;span class="name"&gt;sizeVariation&lt;/span&gt;: &lt;span class="number"&gt;16&lt;/span&gt;&#xD;            }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;The &lt;code translate="no"&gt;acceleration&lt;/code&gt; property uses the &lt;a href="qml-qtquick-particles-pointdirection.html" translate="no"&gt;PointDirection&lt;/a&gt; type to specify random variation of the x and y coordinates, so that the bubbles appear inside a rectangular area around the emitter that is anchored to the bottom of the image.&lt;/p&gt;&#xD;&lt;p&gt;The &lt;code translate="no"&gt;size&lt;/code&gt; property sets the base size of the particles at the beginning of their life to 24 pixels and the &lt;code translate="no"&gt;sizeVariation&lt;/code&gt; property randomly increases or decreases the particle size by up to 16 pixels, so that we get bubbles in different sizes.&lt;/p&gt;&#xD;&lt;p&gt;As emitters have no visualization, we use the &lt;a href="qml-qtquick-particles-imageparticle.html" translate="no"&gt;ImageParticle&lt;/a&gt; type to render the catch.png image at the particle location:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-particles-imageparticle.html" translate="no"&gt;ImageParticle&lt;/a&gt;&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;bubble&lt;/span&gt;&#xD;                &lt;span class="name"&gt;anchors&lt;/span&gt;.fill: &lt;span class="name"&gt;parent&lt;/span&gt;&#xD;                &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"content/gfx/catch.png"&lt;/span&gt;&#xD;                &lt;span class="name"&gt;opacity&lt;/span&gt;: &lt;span class="number"&gt;0.25&lt;/span&gt;&#xD;            }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;A &lt;a href="qml-qtquick-particles-wander.html" translate="no"&gt;Wander&lt;/a&gt; type applies a random trajectory to the particles, so that the bubbles follow random routes from the bottom to the top.&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-particles-wander.html" translate="no"&gt;Wander&lt;/a&gt;&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;xVariance&lt;/span&gt;: &lt;span class="number"&gt;25&lt;/span&gt;;&#xD;                &lt;span class="name"&gt;pace&lt;/span&gt;: &lt;span class="number"&gt;25&lt;/span&gt;;&#xD;            }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;For another example of using the &lt;a href="qml-qtquick-particles-particlesystem.html" translate="no"&gt;ParticleSystem&lt;/a&gt; type, see the GameOverScreen.qml file, where an &lt;a href="qml-qtquick-particles-imageparticle.html" translate="no"&gt;ImageParticle&lt;/a&gt; type is used to make clouds move across the sky.&lt;/p&gt;&#xD;&lt;a name="using-timers"&gt;&lt;/a&gt;&#xD;&lt;h4 id="using-timers"&gt;Using Timers&lt;a class="plink" href="#using-timers" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p class="centerAlign"&gt;&lt;img alt="" src="images/qtquick-demo-maroon-med-4.jpg"/&gt;&lt;/p&gt;&lt;p&gt;In maroon.qml, we use the &lt;a href="qml-qtqml-timer.html" translate="no"&gt;Timer&lt;/a&gt; type with a &lt;a href="qml-qtquick-repeater.html" translate="no"&gt;Repeater&lt;/a&gt; type to display a countdown sequence before using another timer to start a new game. Both timers are started simultaneously in the &lt;code translate="no"&gt;"gameOn"&lt;/code&gt; state, that is when the players tap the New Game button and &lt;code translate="no"&gt;passedSplash&lt;/code&gt; is &lt;code translate="no"&gt;true&lt;/code&gt;. This is explained in more detail in &lt;a href="qtdoc-demos-maroon-example.html#managing-game-states" translate="no"&gt;Managing Game States&lt;/a&gt;.&lt;/p&gt;&#xD;&lt;p&gt;We use the &lt;code translate="no"&gt;countdownTimer&lt;/code&gt; to display the countdown sequence:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;            &lt;span class="type"&gt;&lt;a href="qml-qtqml-timer.html" translate="no"&gt;Timer&lt;/a&gt;&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;countdownTimer&lt;/span&gt;&#xD;                &lt;span class="name"&gt;interval&lt;/span&gt;: &lt;span class="number"&gt;1000&lt;/span&gt;&#xD;                &lt;span class="name"&gt;running&lt;/span&gt;: &lt;span class="name"&gt;root&lt;/span&gt;.&lt;span class="name"&gt;countdown&lt;/span&gt; &lt;span class="operator"&gt;&amp;lt;&lt;/span&gt; &lt;span class="number"&gt;5&lt;/span&gt;&#xD;                &lt;span class="name"&gt;repeat&lt;/span&gt;: &lt;span class="number"&gt;true&lt;/span&gt;&#xD;                &lt;span class="name"&gt;onTriggered&lt;/span&gt;: root.countdown++&#xD;            }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;The &lt;code translate="no"&gt;onTriggered&lt;/code&gt; signal handler is called when the timer is triggered to increment the value of the &lt;code translate="no"&gt;countdown&lt;/code&gt; custom property.&lt;/p&gt;&#xD;&lt;p&gt;We set the &lt;code translate="no"&gt;repeat&lt;/code&gt; property to &lt;code translate="no"&gt;true&lt;/code&gt; to specify that the timer is triggered at the interval of 1 second as long as the value of &lt;code translate="no"&gt;countdown&lt;/code&gt; is less than 5.&lt;/p&gt;&#xD;&lt;p&gt;The &lt;code translate="no"&gt;countdown&lt;/code&gt; property is defined in the root item with an initial value of &lt;code translate="no"&gt;10&lt;/code&gt;, so that &lt;code translate="no"&gt;countdownTimer&lt;/code&gt; is not running by default:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp" translate="no"&gt;    property &lt;span class="type"&gt;int&lt;/span&gt; &lt;span class="name"&gt;countdown&lt;/span&gt;: &lt;span class="number"&gt;10&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;Each time the timer is triggered, an image from the countdown sequence is displayed. We use a &lt;a href="qml-qtquick-repeater.html" translate="no"&gt;Repeater&lt;/a&gt; type to instantiate the &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; delegate in the context of the repeater&apos;s parent, &lt;code translate="no"&gt;canvasArea&lt;/code&gt; item, seeded with data from the &lt;code translate="no"&gt;model&lt;/code&gt;:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-repeater.html" translate="no"&gt;Repeater&lt;/a&gt;&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;model&lt;/span&gt;: [&lt;span class="string"&gt;"content/gfx/text-blank.png"&lt;/span&gt;, &lt;span class="string"&gt;"content/gfx/text-3.png"&lt;/span&gt;, &lt;span class="string"&gt;"content/gfx/text-2.png"&lt;/span&gt;, &lt;span class="string"&gt;"content/gfx/text-1.png"&lt;/span&gt;, &lt;span class="string"&gt;"content/gfx/text-go.png"&lt;/span&gt;]&#xD;                &lt;span class="name"&gt;delegate&lt;/span&gt;: &lt;span class="name"&gt;Image&lt;/span&gt; {&#xD;                    &lt;span class="name"&gt;visible&lt;/span&gt;: &lt;span class="name"&gt;root&lt;/span&gt;.&lt;span class="name"&gt;countdown&lt;/span&gt; &lt;span class="operator"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="name"&gt;index&lt;/span&gt;&#xD;                    &lt;span class="name"&gt;opacity&lt;/span&gt;: &lt;span class="name"&gt;root&lt;/span&gt;.&lt;span class="name"&gt;countdown&lt;/span&gt; &lt;span class="operator"&gt;==&lt;/span&gt; &lt;span class="name"&gt;index&lt;/span&gt; ? &lt;span class="number"&gt;0.5&lt;/span&gt; : &lt;span class="number"&gt;0.1&lt;/span&gt;&#xD;                    &lt;span class="name"&gt;scale&lt;/span&gt;: &lt;span class="name"&gt;root&lt;/span&gt;.&lt;span class="name"&gt;countdown&lt;/span&gt; &lt;span class="operator"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="name"&gt;index&lt;/span&gt; ? &lt;span class="number"&gt;1.0&lt;/span&gt; : &lt;span class="number"&gt;0.0&lt;/span&gt;&#xD;                    &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="name"&gt;modelData&lt;/span&gt;&#xD;                    Behavior on &lt;span class="name"&gt;opacity&lt;/span&gt; { &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; {} }&#xD;                    Behavior on &lt;span class="name"&gt;scale&lt;/span&gt; { &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; {} }&#xD;                }&#xD;            }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We scale the images from &lt;code translate="no"&gt;0.0&lt;/code&gt; to &lt;code translate="no"&gt;1.0&lt;/code&gt; and use the &lt;code translate="no"&gt;visible&lt;/code&gt; property to hide the images for the previous steps as the countdown progresses. We also raise the opacity of the image that matches the current countdown step, keeping the others nearly transparent.&lt;/p&gt;&#xD;&lt;p&gt;By animating the changes in the &lt;code translate="no"&gt;opacity&lt;/code&gt; and &lt;code translate="no"&gt;scale&lt;/code&gt; properties using a &lt;a href="qml-qtquick-behavior.html" translate="no"&gt;Behavior&lt;/a&gt; type, we achieve a countdown sequence where numbers zoom in towards the players.&lt;/p&gt;&#xD;&lt;a name="constructing-the-game-board"&gt;&lt;/a&gt;&#xD;&lt;h4 id="constructing-the-game-board"&gt;Constructing the Game Board&lt;a class="plink" href="#constructing-the-game-board" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p&gt;To construct the game board, we use the GameCanvas custom type that is defined in GameCanvas.qml.&lt;/p&gt;&#xD;&lt;p&gt;In maroon.qml, we use the GameCanvas type to display the game canvas at the position of 32 on the x axis and 20 pixels from the bottom of its parent item, &lt;code translate="no"&gt;canvasArea&lt;/code&gt;:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp" translate="no"&gt;            &lt;span class="type"&gt;GameCanvas&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;canvas&lt;/span&gt;&#xD;                &lt;span class="name"&gt;anchors&lt;/span&gt;.bottom: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;bottom&lt;/span&gt;&#xD;                &lt;span class="name"&gt;anchors&lt;/span&gt;.bottomMargin: &lt;span class="number"&gt;20&lt;/span&gt;&#xD;                &lt;span class="name"&gt;x&lt;/span&gt;: &lt;span class="number"&gt;32&lt;/span&gt;&#xD;                &lt;span class="name"&gt;focus&lt;/span&gt;: &lt;span class="number"&gt;true&lt;/span&gt;&#xD;            }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We set the &lt;code translate="no"&gt;focus&lt;/code&gt; property to &lt;code translate="no"&gt;true&lt;/code&gt; to give &lt;code translate="no"&gt;canvas&lt;/code&gt; active focus on startup.&lt;/p&gt;&#xD;&lt;p&gt;In GameCanvas.qml, we use an &lt;a href="qml-qtquick-item.html" translate="no"&gt;Item&lt;/a&gt; type and define custom properties for it to create a grid of equally sized squares divided to 4 columns on 6 rows:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;&lt;span class="type"&gt;&lt;a href="qml-qtquick-item.html" translate="no"&gt;Item&lt;/a&gt;&lt;/span&gt; {&#xD;    &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;grid&lt;/span&gt;&#xD;&#xD;    property &lt;span class="type"&gt;int&lt;/span&gt; &lt;span class="name"&gt;squareSize&lt;/span&gt;: &lt;span class="number"&gt;64&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;int&lt;/span&gt; &lt;span class="name"&gt;rows&lt;/span&gt;: &lt;span class="number"&gt;6&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;int&lt;/span&gt; &lt;span class="name"&gt;cols&lt;/span&gt;: &lt;span class="number"&gt;4&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;&lt;a href="qml-qtquick-item.html" translate="no"&gt;Item&lt;/a&gt;&lt;/span&gt; &lt;span class="name"&gt;canvas&lt;/span&gt;: &lt;span class="name"&gt;grid&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use the custom properties to set the &lt;code translate="no"&gt;width&lt;/code&gt; and &lt;code translate="no"&gt;height&lt;/code&gt; of the &lt;code translate="no"&gt;grid&lt;/code&gt; item as the amount of columns and rows multiplied by square size:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="name"&gt;width&lt;/span&gt;: &lt;span class="name"&gt;cols&lt;/span&gt; &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="name"&gt;squareSize&lt;/span&gt;&#xD;    &lt;span class="name"&gt;height&lt;/span&gt;: &lt;span class="name"&gt;rows&lt;/span&gt; &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="name"&gt;squareSize&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use an &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; type with a &lt;a href="qml-qtquick-mousearea.html" translate="no"&gt;MouseArea&lt;/a&gt; type to display a help button that the players can tap to view an image that contains instructions for playing the game:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;helpButton&lt;/span&gt;&#xD;        &lt;span class="name"&gt;z&lt;/span&gt;: &lt;span class="number"&gt;1010&lt;/span&gt;&#xD;        &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/button-help.png"&lt;/span&gt;&#xD;        &lt;span class="keyword"&gt;function &lt;/span&gt;&lt;span class="name"&gt;goAway&lt;/span&gt;() {&#xD;            &lt;span class="name"&gt;helpMA&lt;/span&gt;.&lt;span class="name"&gt;enabled&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;false&lt;/span&gt;;&#xD;            &lt;span class="name"&gt;helpButton&lt;/span&gt;.&lt;span class="name"&gt;opacity&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;;&#xD;        }&#xD;        &lt;span class="keyword"&gt;function &lt;/span&gt;&lt;span class="name"&gt;comeBack&lt;/span&gt;() {&#xD;            &lt;span class="name"&gt;helpMA&lt;/span&gt;.&lt;span class="name"&gt;enabled&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;true&lt;/span&gt;;&#xD;            &lt;span class="name"&gt;helpButton&lt;/span&gt;.&lt;span class="name"&gt;opacity&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;;&#xD;        }&#xD;        Behavior on &lt;span class="name"&gt;opacity&lt;/span&gt; { &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; {} }&#xD;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-mousearea.html" translate="no"&gt;MouseArea&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;helpMA&lt;/span&gt;&#xD;            &lt;span class="name"&gt;anchors&lt;/span&gt;.fill: &lt;span class="name"&gt;parent&lt;/span&gt;&#xD;            &lt;span class="name"&gt;onClicked&lt;/span&gt;: {&lt;span class="name"&gt;helpImage&lt;/span&gt;.&lt;span class="name"&gt;visible&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;true&lt;/span&gt;; &lt;span class="name"&gt;helpButton&lt;/span&gt;.&lt;span class="name"&gt;visible&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;false&lt;/span&gt;;}&#xD;        }&#xD;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.horizontalCenter: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;horizontalCenter&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.bottom: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;bottom&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.bottomMargin: &lt;span class="number"&gt;0&lt;/span&gt;&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We declare the &lt;code translate="no"&gt;goAway()&lt;/code&gt; private function to disable the mouse area and make the image fully transparent and a &lt;code translate="no"&gt;comeBack()&lt;/code&gt; function to enable the mouse area and make the button fully opaque. We use a &lt;a href="qml-qtquick-behavior.html" translate="no"&gt;Behavior&lt;/a&gt; type on the &lt;code translate="no"&gt;opacity&lt;/code&gt; property to apply the default number animation when the value of &lt;code translate="no"&gt;opacity&lt;/code&gt; changes.&lt;/p&gt;&#xD;&lt;p&gt;When the players tap the help button, the &lt;code translate="no"&gt;onClicked&lt;/code&gt; signal handler is called to hide the help button by setting the &lt;code translate="no"&gt;helpButton.visible&lt;/code&gt; property to &lt;code translate="no"&gt;false&lt;/code&gt; and to show the help image by setting the &lt;code translate="no"&gt;helpImage.visible&lt;/code&gt; property to &lt;code translate="no"&gt;false&lt;/code&gt;.&lt;/p&gt;&#xD;&lt;p class="centerAlign"&gt;&lt;img alt="" src="images/qtquick-demo-maroon-med-6.jpg"/&gt;&lt;/p&gt;&lt;p&gt;We use anchoring to position the help button at the bottom center of the game canvas.&lt;/p&gt;&#xD;&lt;p&gt;We use another &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; type to display the help image:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;helpImage&lt;/span&gt;&#xD;        &lt;span class="name"&gt;z&lt;/span&gt;: &lt;span class="number"&gt;1010&lt;/span&gt;&#xD;        &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/help.png"&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.fill: &lt;span class="name"&gt;parent&lt;/span&gt;&#xD;        &lt;span class="name"&gt;visible&lt;/span&gt;: &lt;span class="number"&gt;false&lt;/span&gt;&#xD;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-mousearea.html" translate="no"&gt;MouseArea&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;anchors&lt;/span&gt;.fill: &lt;span class="name"&gt;parent&lt;/span&gt;&#xD;            &lt;span class="name"&gt;onClicked&lt;/span&gt;: &lt;span class="name"&gt;helpImage&lt;/span&gt;.&lt;span class="name"&gt;visible&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;false&lt;/span&gt;;&#xD;        }&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;To hide the help image when the players tap it, the &lt;code translate="no"&gt;onClicked&lt;/code&gt; signal handler within the &lt;a href="qml-qtquick-mousearea.html" translate="no"&gt;MouseArea&lt;/a&gt; type is called to set the &lt;code translate="no"&gt;helpImage.visible&lt;/code&gt; property to &lt;code translate="no"&gt;true&lt;/code&gt;.&lt;/p&gt;&#xD;&lt;p&gt;To ensure that the images are placed on top when they are visible, we set a high value for their &lt;code translate="no"&gt;z&lt;/code&gt; property.&lt;/p&gt;&#xD;&lt;p&gt;The following sections describe how to use timers to add animated objects to the game board and how to create a menu dialog from which the players can add more objects to it.&lt;/p&gt;&#xD;&lt;a name="animating-objects-on-the-game-board"&gt;&lt;/a&gt;&#xD;&lt;h4 id="animating-objects-on-the-game-board"&gt;Animating Objects on the Game Board&lt;a class="plink" href="#animating-objects-on-the-game-board" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p&gt;We use sprite animation to animate objects on the game board. The Qt Quick &lt;a href="qtquick-effects-sprites.html" translate="no"&gt;sprite engine&lt;/a&gt; is a stochastic state machine combined with the ability to chop up images containing multiple frames of an animation.&lt;/p&gt;&#xD;&lt;a name="spawning-fish"&gt;&lt;/a&gt;&#xD;&lt;h5 id="spawning-fish"&gt;Spawning Fish&lt;a class="plink" href="#spawning-fish" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h5&gt;&#xD;&lt;p&gt;We use a &lt;a href="qml-qtqml-timer.html" translate="no"&gt;Timer&lt;/a&gt; element with the &lt;code translate="no"&gt;tick()&lt;/code&gt; function in GameCanvas.qml to spawn mobs of fish in waves at an increasing rate, starting at 16 milliseconds:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtqml-timer.html" translate="no"&gt;Timer&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;interval&lt;/span&gt;: &lt;span class="number"&gt;16&lt;/span&gt;&#xD;        &lt;span class="name"&gt;running&lt;/span&gt;: &lt;span class="number"&gt;true&lt;/span&gt;&#xD;        &lt;span class="name"&gt;repeat&lt;/span&gt;: &lt;span class="number"&gt;true&lt;/span&gt;&#xD;        &lt;span class="name"&gt;onTriggered&lt;/span&gt;: &lt;span class="name"&gt;Logic&lt;/span&gt;.&lt;span class="name"&gt;tick&lt;/span&gt;()&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use the MobBase custom type that is defined in MobBase.qml to animate mobs of fish that swim inside bubbles. We use an &lt;a href="qml-qtquick-item.html" translate="no"&gt;Item&lt;/a&gt; type with custom properties and private functions to create the fish and the bubbles and to define the actions that can be applied to them:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;&lt;span class="type"&gt;&lt;a href="qml-qtquick-item.html" translate="no"&gt;Item&lt;/a&gt;&lt;/span&gt;  {&#xD;    &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;container&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;string&lt;/span&gt; &lt;span class="name"&gt;name&lt;/span&gt;: &lt;span class="string"&gt;"Fish"&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;int&lt;/span&gt; &lt;span class="name"&gt;col&lt;/span&gt;: &lt;span class="number"&gt;0&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;real&lt;/span&gt; &lt;span class="name"&gt;hp&lt;/span&gt;: &lt;span class="number"&gt;3&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;real&lt;/span&gt; &lt;span class="name"&gt;damage&lt;/span&gt;: &lt;span class="number"&gt;1&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;real&lt;/span&gt; &lt;span class="name"&gt;speed&lt;/span&gt;: &lt;span class="number"&gt;0.25&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;int&lt;/span&gt; &lt;span class="name"&gt;rof&lt;/span&gt;: &lt;span class="number"&gt;30&lt;/span&gt; &lt;span class="comment"&gt;//In ticks&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;int&lt;/span&gt; &lt;span class="name"&gt;fireCounter&lt;/span&gt;: &lt;span class="number"&gt;0&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;bool&lt;/span&gt; &lt;span class="name"&gt;dying&lt;/span&gt;: &lt;span class="number"&gt;false&lt;/span&gt;&#xD;    &lt;span class="name"&gt;width&lt;/span&gt;: &lt;span class="name"&gt;parent&lt;/span&gt; ? &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;squareSize&lt;/span&gt; : &lt;span class="number"&gt;0&lt;/span&gt;&#xD;    &lt;span class="name"&gt;height&lt;/span&gt;: &lt;span class="name"&gt;parent&lt;/span&gt; ? &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;squareSize&lt;/span&gt; : &lt;span class="number"&gt;0&lt;/span&gt;&#xD;    &lt;span class="name"&gt;x&lt;/span&gt;: &lt;span class="name"&gt;col&lt;/span&gt; &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="name"&gt;width&lt;/span&gt;&#xD;    &lt;span class="name"&gt;z&lt;/span&gt;: &lt;span class="number"&gt;1001&lt;/span&gt;&#xD;    &lt;span class="keyword"&gt;function &lt;/span&gt;&lt;span class="name"&gt;fire&lt;/span&gt;() { }&#xD;    ...&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use a &lt;a href="qml-qtquick-spritesequence.html" translate="no"&gt;SpriteSequence&lt;/a&gt; type to animate the fish:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-spritesequence.html" translate="no"&gt;SpriteSequence&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;fishSprite&lt;/span&gt;&#xD;        &lt;span class="name"&gt;width&lt;/span&gt;: &lt;span class="number"&gt;64&lt;/span&gt;&#xD;        &lt;span class="name"&gt;height&lt;/span&gt;: &lt;span class="number"&gt;64&lt;/span&gt;&#xD;        &lt;span class="name"&gt;interpolate&lt;/span&gt;: &lt;span class="number"&gt;false&lt;/span&gt;&#xD;        &lt;span class="name"&gt;goalSprite&lt;/span&gt;: &lt;span class="string"&gt;""&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;The &lt;a href="qml-qtquick-spritesequence.html" translate="no"&gt;SpriteSequence&lt;/a&gt; type renders and controls a list of animations defined by &lt;a href="qml-qtquick-sprite.html" translate="no"&gt;Sprite&lt;/a&gt; types:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-sprite.html" translate="no"&gt;Sprite&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;name&lt;/span&gt;: &lt;span class="string"&gt;"left"&lt;/span&gt;&#xD;            &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"../gfx/mob-idle.png"&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameWidth&lt;/span&gt;: &lt;span class="number"&gt;64&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameHeight&lt;/span&gt;: &lt;span class="number"&gt;64&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameCount&lt;/span&gt;: &lt;span class="number"&gt;1&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameDuration&lt;/span&gt;: &lt;span class="number"&gt;800&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameDurationVariation&lt;/span&gt;: &lt;span class="number"&gt;400&lt;/span&gt;&#xD;            &lt;span class="name"&gt;to&lt;/span&gt;: { "front" : &lt;span class="number"&gt;1&lt;/span&gt; }&#xD;        }&#xD;&#xD;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-sprite.html" translate="no"&gt;Sprite&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;name&lt;/span&gt;: &lt;span class="string"&gt;"front"&lt;/span&gt;&#xD;            &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"../gfx/mob-idle.png"&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameCount&lt;/span&gt;: &lt;span class="number"&gt;1&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameX&lt;/span&gt;: &lt;span class="number"&gt;64&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameWidth&lt;/span&gt;: &lt;span class="number"&gt;64&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameHeight&lt;/span&gt;: &lt;span class="number"&gt;64&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameDuration&lt;/span&gt;: &lt;span class="number"&gt;800&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameDurationVariation&lt;/span&gt;: &lt;span class="number"&gt;400&lt;/span&gt;&#xD;            &lt;span class="name"&gt;to&lt;/span&gt;: { "left" : &lt;span class="number"&gt;1&lt;/span&gt;, "right" : &lt;span class="number"&gt;1&lt;/span&gt; }&#xD;        }&#xD;&#xD;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-sprite.html" translate="no"&gt;Sprite&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;name&lt;/span&gt;: &lt;span class="string"&gt;"right"&lt;/span&gt;&#xD;            &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"../gfx/mob-idle.png"&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameCount&lt;/span&gt;: &lt;span class="number"&gt;1&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameX&lt;/span&gt;: &lt;span class="number"&gt;128&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameWidth&lt;/span&gt;: &lt;span class="number"&gt;64&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameHeight&lt;/span&gt;: &lt;span class="number"&gt;64&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameDuration&lt;/span&gt;: &lt;span class="number"&gt;800&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameDurationVariation&lt;/span&gt;: &lt;span class="number"&gt;400&lt;/span&gt;&#xD;            &lt;span class="name"&gt;to&lt;/span&gt;: { "front" : &lt;span class="number"&gt;1&lt;/span&gt; }&#xD;        }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;In the &lt;code translate="no"&gt;fishSprite&lt;/code&gt; sprite sequence, each sprite defines one frame within the mob-idle.png file, which shows a fish facing right, front, and left:&lt;/p&gt;&#xD;&lt;p class="centerAlign"&gt;&lt;img alt="" src="images/mob-idle.png"/&gt;&lt;/p&gt;&lt;p&gt;We use the &lt;code translate="no"&gt;frameWidth&lt;/code&gt;, &lt;code translate="no"&gt;frameHeight&lt;/code&gt;, and &lt;code translate="no"&gt;frameX&lt;/code&gt; properties to determine that the first 64x64-pixel square of the image is framed in the &lt;code translate="no"&gt;"left"&lt;/code&gt; sprite, the second in the &lt;code translate="no"&gt;"front"&lt;/code&gt; sprite, and the third in the &lt;code translate="no"&gt;"right"&lt;/code&gt; sprite. For each sprite, the &lt;code translate="no"&gt;frameCount&lt;/code&gt; property is set to &lt;code translate="no"&gt;1&lt;/code&gt; to specify that the sprite contains one frame.&lt;/p&gt;&#xD;&lt;p&gt;We use the &lt;code translate="no"&gt;frameDuration&lt;/code&gt; and &lt;code translate="no"&gt;frameDurationVariation&lt;/code&gt; properties to specify that the duration of an animation can vary from &lt;code translate="no"&gt;400&lt;/code&gt; to &lt;code translate="no"&gt;1200&lt;/code&gt; milliseconds.&lt;/p&gt;&#xD;&lt;p&gt;The &lt;code translate="no"&gt;to&lt;/code&gt; property specifies that the sprites have weighted transitions to other sprites. The &lt;code translate="no"&gt;"left"&lt;/code&gt; and &lt;code translate="no"&gt;"right"&lt;/code&gt; sprites always transfer to the &lt;code translate="no"&gt;"front"&lt;/code&gt; sprite. When the &lt;code translate="no"&gt;"front"&lt;/code&gt; animation finishes, the sprite engine chooses &lt;code translate="no"&gt;"left"&lt;/code&gt; or &lt;code translate="no"&gt;"right"&lt;/code&gt; randomly, but at roughly equal proportions, because they both have the weight &lt;code translate="no"&gt;1&lt;/code&gt;.&lt;/p&gt;&#xD;&lt;p&gt;When the fish are set free, we want them to swim away in the direction they are facing until they get off the screen. If they were facing front, we use the &lt;code translate="no"&gt;jumpTo&lt;/code&gt; method with the JavaScript &lt;code translate="no"&gt;Math.random()&lt;/code&gt; method in the &lt;code translate="no"&gt;die()&lt;/code&gt; private function to randomly jump to the &lt;code translate="no"&gt;"left"&lt;/code&gt; or &lt;code translate="no"&gt;"right"&lt;/code&gt; sprite:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="keyword"&gt;function &lt;/span&gt;&lt;span class="name"&gt;die&lt;/span&gt;() {&#xD;        &lt;span class="keyword"&gt;if&lt;/span&gt; (&lt;span class="name"&gt;dying&lt;/span&gt;)&#xD;            &lt;span class="keyword"&gt;return&lt;/span&gt;;&#xD;        &lt;span class="name"&gt;dying&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;true&lt;/span&gt;;&#xD;        &lt;span class="name"&gt;bubble&lt;/span&gt;.&lt;span class="name"&gt;jumpTo&lt;/span&gt;(&lt;span class="string"&gt;"burst"&lt;/span&gt;);&#xD;        &lt;span class="keyword"&gt;if&lt;/span&gt; (&lt;span class="name"&gt;fishSprite&lt;/span&gt;.&lt;span class="name"&gt;currentSprite&lt;/span&gt; &lt;span class="operator"&gt;==&lt;/span&gt; &lt;span class="string"&gt;"front"&lt;/span&gt;)&#xD;            &lt;span class="name"&gt;fishSprite&lt;/span&gt;.&lt;span class="name"&gt;jumpTo&lt;/span&gt;(&lt;span class="name"&gt;Math&lt;/span&gt;.&lt;span class="name"&gt;random&lt;/span&gt;() &lt;span class="operator"&gt;&amp;gt;&lt;/span&gt; &lt;span class="number"&gt;0.5&lt;/span&gt; ? &lt;span class="string"&gt;"left"&lt;/span&gt; : &lt;span class="string"&gt;"right"&lt;/span&gt; );&#xD;        &lt;span class="name"&gt;fishSwim&lt;/span&gt;.&lt;span class="name"&gt;start&lt;/span&gt;();&#xD;        &lt;span class="name"&gt;Logic&lt;/span&gt;.&lt;span class="name"&gt;gameState&lt;/span&gt;.&lt;span class="name"&gt;score&lt;/span&gt; &lt;span class="operator"&gt;+=&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;;&#xD;        &lt;span class="name"&gt;killedSound&lt;/span&gt;.&lt;span class="name"&gt;play&lt;/span&gt;();&#xD;        &lt;span class="name"&gt;bubble&lt;/span&gt;.&lt;span class="name"&gt;scale&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;0.9&lt;/span&gt;&#xD;        &lt;span class="name"&gt;destroy&lt;/span&gt;(&lt;span class="number"&gt;350&lt;/span&gt;);&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We then use the &lt;code translate="no"&gt;start()&lt;/code&gt; function to run a &lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt; that applies a number animation to the x value from its current value to &lt;code translate="no"&gt;-360&lt;/code&gt; or &lt;code translate="no"&gt;360&lt;/code&gt;, depending on whether the &lt;code translate="no"&gt;goingLeft&lt;/code&gt; custom property is &lt;code translate="no"&gt;true&lt;/code&gt;, in 300 milliseconds:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        NumberAnimation on &lt;span class="name"&gt;x&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;fishSwim&lt;/span&gt;&#xD;            &lt;span class="name"&gt;running&lt;/span&gt;: &lt;span class="number"&gt;false&lt;/span&gt;&#xD;            property &lt;span class="type"&gt;bool&lt;/span&gt; &lt;span class="name"&gt;goingLeft&lt;/span&gt;: &lt;span class="name"&gt;fishSprite&lt;/span&gt;.&lt;span class="name"&gt;currentSprite&lt;/span&gt; &lt;span class="operator"&gt;==&lt;/span&gt; &lt;span class="string"&gt;"right"&lt;/span&gt;&#xD;            &lt;span class="name"&gt;to&lt;/span&gt;: &lt;span class="name"&gt;goingLeft&lt;/span&gt; ? -&lt;span class="number"&gt;360&lt;/span&gt; : &lt;span class="number"&gt;360&lt;/span&gt;&#xD;            &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;300&lt;/span&gt;&#xD;        }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;a name="bursting-bubbles"&gt;&lt;/a&gt;&#xD;&lt;h5 id="bursting-bubbles"&gt;Bursting Bubbles&lt;a class="plink" href="#bursting-bubbles" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h5&gt;&#xD;&lt;p&gt;We use another &lt;a href="qml-qtquick-spritesequence.html" translate="no"&gt;SpriteSequence&lt;/a&gt; to animate the bubbles so that they become smaller and finally burst when they are attacked by a shooter or a melee. For this effect, we set the value of the &lt;code translate="no"&gt;scale&lt;/code&gt; property to decrease by &lt;code translate="no"&gt;0.2&lt;/code&gt; each time the custom &lt;code translate="no"&gt;hp&lt;/code&gt; property changes:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-spritesequence.html" translate="no"&gt;SpriteSequence&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;bubble&lt;/span&gt;&#xD;        &lt;span class="name"&gt;width&lt;/span&gt;: &lt;span class="number"&gt;64&lt;/span&gt;&#xD;        &lt;span class="name"&gt;height&lt;/span&gt;: &lt;span class="number"&gt;64&lt;/span&gt;&#xD;        &lt;span class="name"&gt;scale&lt;/span&gt;: &lt;span class="number"&gt;0.4&lt;/span&gt; &lt;span class="operator"&gt;+&lt;/span&gt; (&lt;span class="number"&gt;0.2&lt;/span&gt;  &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="name"&gt;hp&lt;/span&gt;)&#xD;        &lt;span class="name"&gt;interpolate&lt;/span&gt;: &lt;span class="number"&gt;false&lt;/span&gt;&#xD;        &lt;span class="name"&gt;goalSprite&lt;/span&gt;: &lt;span class="string"&gt;""&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use a &lt;a href="qml-qtquick-behavior.html" translate="no"&gt;Behavior&lt;/a&gt; type to apply a &lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt; when the value of &lt;code translate="no"&gt;scale&lt;/code&gt; changes. We use the &lt;code translate="no"&gt;Easing.OutBack&lt;/code&gt; easing type for a back (overshooting cubic function: (s+1)*t^3 - s*t^2) easing out curve that decelerates the motion to zero velocity in 150 milliseconds:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        Behavior on &lt;span class="name"&gt;scale&lt;/span&gt; {&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;150&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;OutBack&lt;/span&gt; }&#xD;        }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;The &lt;a href="qml-qtquick-spritesequence.html" translate="no"&gt;SpriteSequence&lt;/a&gt; consist of two sprites that display different images. The first sprite, &lt;code translate="no"&gt;"big"&lt;/code&gt;, uses the catch.png image to display an empty bubble:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-sprite.html" translate="no"&gt;Sprite&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;name&lt;/span&gt;: &lt;span class="string"&gt;"big"&lt;/span&gt;&#xD;            &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"../gfx/catch.png"&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameCount&lt;/span&gt;: &lt;span class="number"&gt;1&lt;/span&gt;&#xD;            &lt;span class="name"&gt;to&lt;/span&gt;: { "burst" : &lt;span class="number"&gt;0&lt;/span&gt; }&#xD;        }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We set the &lt;code translate="no"&gt;to&lt;/code&gt; property to &lt;code translate="no"&gt;"burst"&lt;/code&gt; with the weight &lt;code translate="no"&gt;0&lt;/code&gt; to make the second sprite, &lt;code translate="no"&gt;"burst"&lt;/code&gt;, a valid goal for the &lt;code translate="no"&gt;jumpTo&lt;/code&gt; method that we use in the &lt;code translate="no"&gt;die()&lt;/code&gt; private function to jump directly to the &lt;code translate="no"&gt;"burst"&lt;/code&gt; sprite without playing the first sprite.&lt;/p&gt;&#xD;&lt;p&gt;In the &lt;code translate="no"&gt;"burst"&lt;/code&gt; sprite, we set the &lt;code translate="no"&gt;frameCount&lt;/code&gt; property to &lt;code translate="no"&gt;3&lt;/code&gt; and the &lt;code translate="no"&gt;frameX&lt;/code&gt; property to &lt;code translate="no"&gt;64&lt;/code&gt; to specify that the animation starts at pixel location 64 and loads each frame for the duration of 200 milliseconds.&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-sprite.html" translate="no"&gt;Sprite&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;name&lt;/span&gt;: &lt;span class="string"&gt;"burst"&lt;/span&gt;&#xD;            &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"../gfx/catch-action.png"&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameCount&lt;/span&gt;: &lt;span class="number"&gt;3&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameX&lt;/span&gt;: &lt;span class="number"&gt;64&lt;/span&gt;&#xD;            &lt;span class="name"&gt;frameDuration&lt;/span&gt;: &lt;span class="number"&gt;200&lt;/span&gt;&#xD;        }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;Within the &lt;a href="qml-qtquick-spritesequence.html" translate="no"&gt;SpriteSequence&lt;/a&gt;, we use &lt;a href="qml-qtquick-sequentialanimation.html" translate="no"&gt;SequentialAnimation&lt;/a&gt; with &lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt; to animate the transitions between the frames. To create a pulsating effect on the bubbles, we apply a sequential animation on the &lt;code translate="no"&gt;width&lt;/code&gt; property with two number animations to first increase the bubble width from &lt;code translate="no"&gt;* 1&lt;/code&gt; to &lt;code translate="no"&gt;* 1.1&lt;/code&gt; over 800 milliseconds and then bring it back over 1 second:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        SequentialAnimation on &lt;span class="name"&gt;width&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;loops&lt;/span&gt;: &lt;span class="name"&gt;Animation&lt;/span&gt;.&lt;span class="name"&gt;Infinite&lt;/span&gt;&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;from&lt;/span&gt;: &lt;span class="name"&gt;width&lt;/span&gt; &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;; &lt;span class="name"&gt;to&lt;/span&gt;: &lt;span class="name"&gt;width&lt;/span&gt; &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="number"&gt;1.1&lt;/span&gt;; &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;800&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;InOutQuad&lt;/span&gt; }&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;from&lt;/span&gt;: &lt;span class="name"&gt;width&lt;/span&gt; &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="number"&gt;1.1&lt;/span&gt;; &lt;span class="name"&gt;to&lt;/span&gt;: &lt;span class="name"&gt;width&lt;/span&gt; &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;; &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;1000&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;InOutQuad&lt;/span&gt; }&#xD;        }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;Similarly, we increase the bubble height from &lt;code translate="no"&gt;* 1&lt;/code&gt; to &lt;code translate="no"&gt;* 1.15&lt;/code&gt; over 1200 milliseconds and then bring it back over 1 second:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        SequentialAnimation on &lt;span class="name"&gt;height&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;loops&lt;/span&gt;: &lt;span class="name"&gt;Animation&lt;/span&gt;.&lt;span class="name"&gt;Infinite&lt;/span&gt;&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;from&lt;/span&gt;: &lt;span class="name"&gt;height&lt;/span&gt; &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;; &lt;span class="name"&gt;to&lt;/span&gt;: &lt;span class="name"&gt;height&lt;/span&gt; &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="number"&gt;1.15&lt;/span&gt;; &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;1200&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;InOutQuad&lt;/span&gt; }&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;from&lt;/span&gt;: &lt;span class="name"&gt;height&lt;/span&gt; &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="number"&gt;1.15&lt;/span&gt;; &lt;span class="name"&gt;to&lt;/span&gt;: &lt;span class="name"&gt;height&lt;/span&gt; &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;; &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;1000&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;InOutQuad&lt;/span&gt; }&#xD;        }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use yet another &lt;a href="qml-qtquick-spritesequence.html" translate="no"&gt;SpriteSequence&lt;/a&gt; to display the effect of squid ink on the bubbles. For more examples of using sprite sequences, see the QML files in the &lt;code translate="no"&gt;towers&lt;/code&gt; directory.&lt;/p&gt;&#xD;&lt;a name="adding-dialogs"&gt;&lt;/a&gt;&#xD;&lt;h4 id="adding-dialogs"&gt;Adding Dialogs&lt;a class="plink" href="#adding-dialogs" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p class="centerAlign"&gt;&lt;img alt="" src="images/qtquick-demo-maroon-med-5.jpg"/&gt;&lt;/p&gt;&lt;p&gt;In GameCanvas.qml, we use an &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; type with some custom properties to create a menu where the players can buy tower objects:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;&#xD;        &lt;span class="name"&gt;visible&lt;/span&gt;: &lt;span class="number"&gt;false&lt;/span&gt;&#xD;        &lt;span class="name"&gt;z&lt;/span&gt;: &lt;span class="number"&gt;1500&lt;/span&gt;&#xD;        &lt;span class="name"&gt;scale&lt;/span&gt;: &lt;span class="number"&gt;0.9&lt;/span&gt;&#xD;        &lt;span class="name"&gt;opacity&lt;/span&gt;: &lt;span class="number"&gt;0.7&lt;/span&gt;&#xD;        property &lt;span class="type"&gt;int&lt;/span&gt; &lt;span class="name"&gt;dragDistance&lt;/span&gt;: &lt;span class="number"&gt;16&lt;/span&gt;&#xD;        property &lt;span class="type"&gt;int&lt;/span&gt; &lt;span class="name"&gt;targetRow&lt;/span&gt;: &lt;span class="number"&gt;0&lt;/span&gt;&#xD;        property &lt;span class="type"&gt;int&lt;/span&gt; &lt;span class="name"&gt;targetCol&lt;/span&gt;: &lt;span class="number"&gt;0&lt;/span&gt;&#xD;        property &lt;span class="type"&gt;bool&lt;/span&gt; &lt;span class="name"&gt;shown&lt;/span&gt;: &lt;span class="number"&gt;false&lt;/span&gt;&#xD;        property &lt;span class="type"&gt;bool&lt;/span&gt; &lt;span class="name"&gt;towerExists&lt;/span&gt;: &lt;span class="number"&gt;false&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We set the &lt;code translate="no"&gt;visible&lt;/code&gt; property to &lt;code translate="no"&gt;false&lt;/code&gt; to hide the menu by default. The &lt;code translate="no"&gt;z&lt;/code&gt; property is set to 1500 to ensure that the menu is displayed in front of all other items when it is visible.&lt;/p&gt;&#xD;&lt;p&gt;We use a &lt;a href="qml-qtquick-mousearea.html" translate="no"&gt;MouseArea&lt;/a&gt; type to open or close the menu when players tap on the canvas:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-mousearea.html" translate="no"&gt;MouseArea&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;ma&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.fill: &lt;span class="name"&gt;parent&lt;/span&gt;&#xD;        &lt;span class="name"&gt;onClicked&lt;/span&gt;: {&#xD;            &lt;span class="keyword"&gt;if&lt;/span&gt; (&lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;visible&lt;/span&gt;)&#xD;                &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;finish&lt;/span&gt;()&#xD;            &lt;span class="keyword"&gt;else&lt;/span&gt;&#xD;                &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;open&lt;/span&gt;(&lt;span class="name"&gt;mouse&lt;/span&gt;.&lt;span class="name"&gt;x&lt;/span&gt;, &lt;span class="name"&gt;mouse&lt;/span&gt;.&lt;span class="name"&gt;y&lt;/span&gt;)&#xD;        }&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We set the &lt;code translate="no"&gt;anchors.fill&lt;/code&gt; property to &lt;code translate="no"&gt;parent&lt;/code&gt; to allow the players to tap anywhere on the game canvas. We use a condition in the &lt;code translate="no"&gt;onClicked&lt;/code&gt; signal handler to call the &lt;code translate="no"&gt;finish()&lt;/code&gt; function if the menu is visible and the &lt;code translate="no"&gt;open()&lt;/code&gt; function otherwise.&lt;/p&gt;&#xD;&lt;p&gt;The &lt;code translate="no"&gt;finish()&lt;/code&gt; function hides the menu by setting the &lt;code translate="no"&gt;shown&lt;/code&gt; custom property to &lt;code translate="no"&gt;false&lt;/code&gt;:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        &lt;span class="keyword"&gt;function &lt;/span&gt;&lt;span class="name"&gt;finish&lt;/span&gt;() {&#xD;            &lt;span class="name"&gt;shown&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;false&lt;/span&gt;&#xD;        }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;The &lt;code translate="no"&gt;open()&lt;/code&gt; function displays the menu at the x and y position of the mouse pointer:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        &lt;span class="keyword"&gt;function &lt;/span&gt;&lt;span class="name"&gt;open&lt;/span&gt;(xp,yp) {&#xD;            &lt;span class="keyword"&gt;if&lt;/span&gt; (!&lt;span class="name"&gt;grid&lt;/span&gt;.&lt;span class="name"&gt;gameRunning&lt;/span&gt;)&#xD;                &lt;span class="keyword"&gt;return&lt;/span&gt;&#xD;            &lt;span class="name"&gt;targetRow&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="name"&gt;Logic&lt;/span&gt;.&lt;span class="name"&gt;row&lt;/span&gt;(&lt;span class="name"&gt;yp&lt;/span&gt;)&#xD;            &lt;span class="name"&gt;targetCol&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="name"&gt;Logic&lt;/span&gt;.&lt;span class="name"&gt;col&lt;/span&gt;(&lt;span class="name"&gt;xp&lt;/span&gt;)&#xD;            &lt;span class="keyword"&gt;if&lt;/span&gt; (&lt;span class="name"&gt;targetRow&lt;/span&gt; &lt;span class="operator"&gt;==&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;)&#xD;                &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;y&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; (&lt;span class="name"&gt;targetRow&lt;/span&gt; &lt;span class="operator"&gt;+&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;) &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="name"&gt;grid&lt;/span&gt;.&lt;span class="name"&gt;squareSize&lt;/span&gt;&#xD;            &lt;span class="keyword"&gt;else&lt;/span&gt;&#xD;                &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;y&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; (&lt;span class="name"&gt;targetRow&lt;/span&gt; &lt;span class="operator"&gt;-&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;) &lt;span class="operator"&gt;*&lt;/span&gt; &lt;span class="name"&gt;grid&lt;/span&gt;.&lt;span class="name"&gt;squareSize&lt;/span&gt;&#xD;            &lt;span class="name"&gt;towerExists&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; (&lt;span class="name"&gt;grid&lt;/span&gt;.&lt;span class="name"&gt;towers&lt;/span&gt;[&lt;span class="name"&gt;Logic&lt;/span&gt;.&lt;span class="name"&gt;towerIdx&lt;/span&gt;(&lt;span class="name"&gt;targetCol&lt;/span&gt;, &lt;span class="name"&gt;targetRow&lt;/span&gt;)] &lt;span class="operator"&gt;!=&lt;/span&gt; &lt;span class="number"&gt;null&lt;/span&gt;)&#xD;            &lt;span class="name"&gt;shown&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;true&lt;/span&gt;&#xD;            &lt;span class="name"&gt;helpButton&lt;/span&gt;.&lt;span class="name"&gt;goAway&lt;/span&gt;();&#xD;        }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;If &lt;code translate="no"&gt;gameRunning&lt;/code&gt; is &lt;code translate="no"&gt;true&lt;/code&gt;, we call the JavaScript &lt;code translate="no"&gt;row()&lt;/code&gt; function to calculate the value of the &lt;code translate="no"&gt;targetRow&lt;/code&gt; custom property and the &lt;code translate="no"&gt;col()&lt;/code&gt; function to calculate the value of the &lt;code translate="no"&gt;targetCol&lt;/code&gt; custom property. If the value of &lt;code translate="no"&gt;targetRow&lt;/code&gt; equals &lt;code translate="no"&gt;0&lt;/code&gt;, the y position is set to one square above the mouse pointer. Otherwise, it is set to one square below the mouse pointer.&lt;/p&gt;&#xD;&lt;p&gt;We use the &lt;code translate="no"&gt;towerIdx()&lt;/code&gt; function to set the value of the &lt;code translate="no"&gt;towerExists&lt;/code&gt; custom property.&lt;/p&gt;&#xD;&lt;p&gt;We set the &lt;code translate="no"&gt;shown&lt;/code&gt; custom property to &lt;code translate="no"&gt;true&lt;/code&gt; to show the menu and call the &lt;code translate="no"&gt;helpButton.goAway()&lt;/code&gt; function to hide the help button when the menu opens.&lt;/p&gt;&#xD;&lt;p&gt;We use states and transitions to display the menu when the &lt;code translate="no"&gt;shown&lt;/code&gt; property is &lt;code translate="no"&gt;true&lt;/code&gt; and the &lt;code translate="no"&gt;gameOver&lt;/code&gt; property is &lt;code translate="no"&gt;false&lt;/code&gt;:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        &lt;span class="name"&gt;states&lt;/span&gt;: &lt;span class="name"&gt;State&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;name&lt;/span&gt;: &lt;span class="string"&gt;"shown"&lt;/span&gt;; &lt;span class="name"&gt;when&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;shown&lt;/span&gt; &lt;span class="operator"&gt;&amp;amp;&amp;amp;&lt;/span&gt; !&lt;span class="name"&gt;grid&lt;/span&gt;.&lt;span class="name"&gt;gameOver&lt;/span&gt;&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-propertychanges.html" translate="no"&gt;PropertyChanges&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;target&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;; &lt;span class="name"&gt;visible&lt;/span&gt;: &lt;span class="number"&gt;true&lt;/span&gt;; &lt;span class="name"&gt;scale&lt;/span&gt;: &lt;span class="number"&gt;1&lt;/span&gt;; &lt;span class="name"&gt;opacity&lt;/span&gt;: &lt;span class="number"&gt;1&lt;/span&gt; }&#xD;        }&#xD;&#xD;        &lt;span class="name"&gt;transitions&lt;/span&gt;: &lt;span class="name"&gt;Transition&lt;/span&gt; {&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-propertyaction.html" translate="no"&gt;PropertyAction&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;property&lt;/span&gt;: &lt;span class="string"&gt;"visible"&lt;/span&gt; }&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-numberanimation.html" translate="no"&gt;NumberAnimation&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;properties&lt;/span&gt;: &lt;span class="string"&gt;"opacity,scale"&lt;/span&gt;; &lt;span class="name"&gt;duration&lt;/span&gt;: &lt;span class="number"&gt;500&lt;/span&gt;; &lt;span class="name"&gt;easing&lt;/span&gt;.type: &lt;span class="name"&gt;Easing&lt;/span&gt;.&lt;span class="name"&gt;OutElastic&lt;/span&gt; }&#xD;        }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;To set the visibility of the menu to &lt;code translate="no"&gt;"visible"&lt;/code&gt; without animating the property change, we use a &lt;a href="qml-qtquick-propertyaction.html" translate="no"&gt;PropertyAction&lt;/a&gt; type. We do want to animate the changes in opacity and scale, though, so we use number animation to animate the value of the &lt;code translate="no"&gt;scale&lt;/code&gt; property from &lt;code translate="no"&gt;0.9&lt;/code&gt; to &lt;code translate="no"&gt;1&lt;/code&gt; and the value of &lt;code translate="no"&gt;opacity&lt;/code&gt; property from &lt;code translate="no"&gt;0.7&lt;/code&gt; to &lt;code translate="no"&gt;1&lt;/code&gt;, over 500 milliseconds. We use the &lt;code translate="no"&gt;Easing.outElastic&lt;/code&gt; easing type for an elastic (exponentially decaying sine wave) function easing curve that decelerates from zero velocity.&lt;/p&gt;&#xD;&lt;p&gt;To construct the menu, we use a BuildButton custom type that is defined in BuildButton.qml. In GameCanvas.qml, we create one build button for each tower object that the players can buy and position them in a &lt;a href="10-qdoc-commands-tablesandlists.html#row" translate="no"&gt;Row&lt;/a&gt; layout in front of the menu background image, dialog.png:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        &lt;span class="name"&gt;x&lt;/span&gt;: -&lt;span class="number"&gt;32&lt;/span&gt;&#xD;        &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/dialog.png"&lt;/span&gt;&#xD;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-row.html" translate="no"&gt;Row&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;buttonRow&lt;/span&gt;&#xD;            &lt;span class="name"&gt;height&lt;/span&gt;: &lt;span class="number"&gt;100&lt;/span&gt;&#xD;            &lt;span class="name"&gt;anchors&lt;/span&gt;.centerIn: &lt;span class="name"&gt;parent&lt;/span&gt;&#xD;            &lt;span class="name"&gt;spacing&lt;/span&gt;: &lt;span class="number"&gt;8&lt;/span&gt;&#xD;            &lt;span class="type"&gt;BuildButton&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;row&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;targetRow&lt;/span&gt;; &lt;span class="name"&gt;col&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;targetCol&lt;/span&gt;&#xD;                &lt;span class="name"&gt;anchors&lt;/span&gt;.verticalCenter: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;verticalCenter&lt;/span&gt;&#xD;                &lt;span class="name"&gt;towerType&lt;/span&gt;: &lt;span class="number"&gt;1&lt;/span&gt;; &lt;span class="name"&gt;index&lt;/span&gt;: &lt;span class="number"&gt;0&lt;/span&gt;&#xD;                &lt;span class="name"&gt;canBuild&lt;/span&gt;: !&lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;towerExists&lt;/span&gt;&#xD;                &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/dialog-melee.png"&lt;/span&gt;&#xD;                &lt;span class="name"&gt;onClicked&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;finish&lt;/span&gt;()&#xD;            }&#xD;            &lt;span class="type"&gt;BuildButton&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;row&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;targetRow&lt;/span&gt;; &lt;span class="name"&gt;col&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;targetCol&lt;/span&gt;&#xD;                &lt;span class="name"&gt;anchors&lt;/span&gt;.verticalCenter: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;verticalCenter&lt;/span&gt;&#xD;                &lt;span class="name"&gt;towerType&lt;/span&gt;: &lt;span class="number"&gt;2&lt;/span&gt;; &lt;span class="name"&gt;index&lt;/span&gt;: &lt;span class="number"&gt;1&lt;/span&gt;&#xD;                &lt;span class="name"&gt;canBuild&lt;/span&gt;: !&lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;towerExists&lt;/span&gt;&#xD;                &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/dialog-shooter.png"&lt;/span&gt;&#xD;                &lt;span class="name"&gt;onClicked&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;finish&lt;/span&gt;()&#xD;            }&#xD;            &lt;span class="type"&gt;BuildButton&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;row&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;targetRow&lt;/span&gt;; &lt;span class="name"&gt;col&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;targetCol&lt;/span&gt;&#xD;                &lt;span class="name"&gt;anchors&lt;/span&gt;.verticalCenter: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;verticalCenter&lt;/span&gt;&#xD;                &lt;span class="name"&gt;towerType&lt;/span&gt;: &lt;span class="number"&gt;3&lt;/span&gt;; &lt;span class="name"&gt;index&lt;/span&gt;: &lt;span class="number"&gt;2&lt;/span&gt;&#xD;                &lt;span class="name"&gt;canBuild&lt;/span&gt;: !&lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;towerExists&lt;/span&gt;&#xD;                &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/dialog-bomb.png"&lt;/span&gt;&#xD;                &lt;span class="name"&gt;onClicked&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;finish&lt;/span&gt;()&#xD;            }&#xD;            &lt;span class="type"&gt;BuildButton&lt;/span&gt; {&#xD;                &lt;span class="name"&gt;row&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;targetRow&lt;/span&gt;; &lt;span class="name"&gt;col&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;targetCol&lt;/span&gt;&#xD;                &lt;span class="name"&gt;anchors&lt;/span&gt;.verticalCenter: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;verticalCenter&lt;/span&gt;&#xD;                &lt;span class="name"&gt;towerType&lt;/span&gt;: &lt;span class="number"&gt;4&lt;/span&gt;; &lt;span class="name"&gt;index&lt;/span&gt;: &lt;span class="number"&gt;3&lt;/span&gt;&#xD;                &lt;span class="name"&gt;canBuild&lt;/span&gt;: !&lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;towerExists&lt;/span&gt;&#xD;                &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/dialog-factory.png"&lt;/span&gt;&#xD;                &lt;span class="name"&gt;onClicked&lt;/span&gt;: &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;finish&lt;/span&gt;()&#xD;            }&#xD;        }&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;For each build button, we set the values of &lt;code translate="no"&gt;towerType&lt;/code&gt; and &lt;code translate="no"&gt;index&lt;/code&gt; custom properties that we define in BuildButton.qml.&lt;/p&gt;&#xD;&lt;p&gt;We use the &lt;code translate="no"&gt;canBuild&lt;/code&gt; custom property to prevent players from adding tower objects in locations where tower objects already exist.&lt;/p&gt;&#xD;&lt;p&gt;We use the &lt;code translate="no"&gt;source&lt;/code&gt; property to display the image for the tower type.&lt;/p&gt;&#xD;&lt;p&gt;The &lt;code translate="no"&gt;onClicked&lt;/code&gt; signal handler is called to execute the &lt;code translate="no"&gt;finish()&lt;/code&gt; function that closes the menu when the players tap an enabled build button.&lt;/p&gt;&#xD;&lt;p&gt;Build buttons are enabled when the players have enough coins to buy the tower objects. We use an &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; type in BuildButton.qml to display images on the buttons:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;img&lt;/span&gt;&#xD;        &lt;span class="name"&gt;opacity&lt;/span&gt;: (&lt;span class="name"&gt;canBuild&lt;/span&gt; &lt;span class="operator"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="name"&gt;gameCanvas&lt;/span&gt;.&lt;span class="name"&gt;coins&lt;/span&gt; &lt;span class="operator"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="name"&gt;Logic&lt;/span&gt;.&lt;span class="name"&gt;towerData&lt;/span&gt;[&lt;span class="name"&gt;towerType&lt;/span&gt;&lt;span class="operator"&gt;-&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt;].&lt;span class="name"&gt;cost&lt;/span&gt;) ? &lt;span class="number"&gt;1.0&lt;/span&gt; : &lt;span class="number"&gt;0.4&lt;/span&gt;&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use the &lt;code translate="no"&gt;opacity&lt;/code&gt; property to make the buttons appear enabled. If &lt;code translate="no"&gt;canBuild&lt;/code&gt; is &lt;code translate="no"&gt;true&lt;/code&gt; and the value of the &lt;code translate="no"&gt;gameCanvas.coins&lt;/code&gt; property is larger than or equal to the cost of a tower object, the images are fully opaque, otherwise their opacity is set to &lt;code translate="no"&gt;0.4&lt;/code&gt;.&lt;/p&gt;&#xD;&lt;p&gt;We use a &lt;a href="qml-qtquick-text.html" translate="no"&gt;Text&lt;/a&gt; type to display the cost of each tower item, as specified by the &lt;code translate="no"&gt;towerData&lt;/code&gt; variable, depending on &lt;code translate="no"&gt;towerType&lt;/code&gt;:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-text.html" translate="no"&gt;Text&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.right: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;right&lt;/span&gt;&#xD;        &lt;span class="name"&gt;font&lt;/span&gt;.pointSize: &lt;span class="number"&gt;14&lt;/span&gt;&#xD;        &lt;span class="name"&gt;font&lt;/span&gt;.bold: &lt;span class="number"&gt;true&lt;/span&gt;&#xD;        &lt;span class="name"&gt;color&lt;/span&gt;: &lt;span class="string"&gt;"#ffffff"&lt;/span&gt;&#xD;        &lt;span class="name"&gt;text&lt;/span&gt;: &lt;span class="name"&gt;Logic&lt;/span&gt;.&lt;span class="name"&gt;towerData&lt;/span&gt;[&lt;span class="name"&gt;towerType&lt;/span&gt; &lt;span class="operator"&gt;-&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;].&lt;span class="name"&gt;cost&lt;/span&gt;&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;To display a pointer on the screen at the position where the tower object will be added, we use the &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; type. We use the &lt;code translate="no"&gt;visible&lt;/code&gt; property to determine whether the dialog-pointer.png image should be positioned below or above the menu. When the value of the &lt;code translate="no"&gt;col&lt;/code&gt; property equals the &lt;code translate="no"&gt;index&lt;/code&gt; and the value or the &lt;code translate="no"&gt;row&lt;/code&gt; property is not &lt;code translate="no"&gt;0&lt;/code&gt;, we anchor the image to the bottom of its parent, BuildButton.&lt;/p&gt;&#xD;&lt;p&gt;When the value or the &lt;code translate="no"&gt;row&lt;/code&gt; property is &lt;code translate="no"&gt;0&lt;/code&gt;, we anchor the image to the top of BuildButton to position the pointer above the menu and use the &lt;code translate="no"&gt;rotation&lt;/code&gt; property to rotate it by 180 degrees, so that it points upwards:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;visible&lt;/span&gt;: &lt;span class="name"&gt;col&lt;/span&gt; &lt;span class="operator"&gt;==&lt;/span&gt; &lt;span class="name"&gt;index&lt;/span&gt; &lt;span class="operator"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="name"&gt;row&lt;/span&gt; &lt;span class="operator"&gt;!=&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;&#xD;        &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/dialog-pointer.png"&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.top: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;bottom&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.topMargin: &lt;span class="number"&gt;4&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.horizontalCenter: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;horizontalCenter&lt;/span&gt;&#xD;    }&#xD;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;visible&lt;/span&gt;: &lt;span class="name"&gt;col&lt;/span&gt; &lt;span class="operator"&gt;==&lt;/span&gt; &lt;span class="name"&gt;index&lt;/span&gt; &lt;span class="operator"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="name"&gt;row&lt;/span&gt; &lt;span class="operator"&gt;==&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;&#xD;        &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/dialog-pointer.png"&lt;/span&gt;&#xD;        &lt;span class="name"&gt;rotation&lt;/span&gt;: &lt;span class="number"&gt;180&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.bottom: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;top&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.bottomMargin: &lt;span class="number"&gt;6&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.horizontalCenter: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;horizontalCenter&lt;/span&gt;&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;a name="keeping-track-of-game-statistics"&gt;&lt;/a&gt;&#xD;&lt;h4 id="keeping-track-of-game-statistics"&gt;Keeping Track of Game Statistics&lt;a class="plink" href="#keeping-track-of-game-statistics" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p&gt;To keep track of the game statistics, we use the InfoBar custom type (that is defined in InfoBar.qml) in maroon.qml:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;            &lt;span class="type"&gt;InfoBar&lt;/span&gt; { &lt;span class="name"&gt;anchors&lt;/span&gt;.bottom: &lt;span class="name"&gt;canvas&lt;/span&gt;.&lt;span class="name"&gt;top&lt;/span&gt;; &lt;span class="name"&gt;anchors&lt;/span&gt;.bottomMargin: &lt;span class="number"&gt;6&lt;/span&gt;; &lt;span class="name"&gt;width&lt;/span&gt;: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;width&lt;/span&gt; }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use the &lt;code translate="no"&gt;anchors.bottom&lt;/code&gt; and &lt;code translate="no"&gt;anchors.bottomMargin&lt;/code&gt; properties to position the info bar at 6 points from the top of the game canvas. We bind the &lt;code translate="no"&gt;width&lt;/code&gt; property of the info bar to that of its parent.&lt;/p&gt;&#xD;&lt;p&gt;In InfoBar.qml, we use an &lt;a href="qml-qtquick-item.html" translate="no"&gt;Item&lt;/a&gt; type to create the info bar. Within it, we use a &lt;a href="10-qdoc-commands-tablesandlists.html#row" translate="no"&gt;Row&lt;/a&gt; layout type to display the number of lives the players have left, the number of fish that have been saved, and the amount of coins that are available for use.&lt;/p&gt;&#xD;&lt;p&gt;We use the &lt;code translate="no"&gt;anchors&lt;/code&gt; property to position the rows in relationship to their parent and to each other. In the first &lt;a href="10-qdoc-commands-tablesandlists.html#row" translate="no"&gt;Row&lt;/a&gt; object, we use the &lt;code translate="no"&gt;anchors.left&lt;/code&gt; and &lt;code translate="no"&gt;anchors.leftMargin&lt;/code&gt; properties to position the heart icons at 10 points from the left border of the parent item:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;&lt;span class="type"&gt;&lt;a href="qml-qtquick-item.html" translate="no"&gt;Item&lt;/a&gt;&lt;/span&gt; {&#xD;    &lt;span class="name"&gt;height&lt;/span&gt;: &lt;span class="name"&gt;childrenRect&lt;/span&gt;.&lt;span class="name"&gt;height&lt;/span&gt;&#xD;&#xD;    &lt;span class="comment"&gt;// Display the number of lives&lt;/span&gt;&#xD;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-row.html" translate="no"&gt;Row&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.left: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;left&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.leftMargin: &lt;span class="number"&gt;10&lt;/span&gt;&#xD;        &lt;span class="name"&gt;spacing&lt;/span&gt;: &lt;span class="number"&gt;5&lt;/span&gt;&#xD;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-repeater.html" translate="no"&gt;Repeater&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;rep&lt;/span&gt;&#xD;            &lt;span class="name"&gt;model&lt;/span&gt;: &lt;span class="name"&gt;Math&lt;/span&gt;.&lt;span class="name"&gt;min&lt;/span&gt;(&lt;span class="number"&gt;10&lt;/span&gt;, &lt;span class="name"&gt;canvas&lt;/span&gt;.&lt;span class="name"&gt;lives&lt;/span&gt;)&#xD;            &lt;span class="name"&gt;delegate&lt;/span&gt;: &lt;span class="name"&gt;Image&lt;/span&gt; { &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/lifes.png"&lt;/span&gt; }&#xD;        }&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use a &lt;a href="qml-qtquick-repeater.html" translate="no"&gt;Repeater&lt;/a&gt; type with a &lt;code translate="no"&gt;model&lt;/code&gt; and a &lt;code translate="no"&gt;delegate&lt;/code&gt; to display as many hearts as the players have lives left. We use the &lt;code translate="no"&gt;spacing&lt;/code&gt; property to leave 5 pixels between the displayed icons.&lt;/p&gt;&#xD;&lt;p&gt;In the second &lt;a href="10-qdoc-commands-tablesandlists.html#row" translate="no"&gt;Row&lt;/a&gt; object, we use the &lt;code translate="no"&gt;anchors.right&lt;/code&gt; and &lt;code translate="no"&gt;anchors.rightMargin&lt;/code&gt; properties to position the number of fish saved at 20 points left of the third &lt;a href="10-qdoc-commands-tablesandlists.html#row" translate="no"&gt;Row&lt;/a&gt; object that displays the number of coins available (and has the id &lt;code translate="no"&gt;points&lt;/code&gt;):&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-row.html" translate="no"&gt;Row&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.right: &lt;span class="name"&gt;points&lt;/span&gt;.&lt;span class="name"&gt;left&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.rightMargin: &lt;span class="number"&gt;20&lt;/span&gt;&#xD;        &lt;span class="name"&gt;spacing&lt;/span&gt;: &lt;span class="number"&gt;5&lt;/span&gt;&#xD;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/scores.png"&lt;/span&gt; }&#xD;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-text.html" translate="no"&gt;Text&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;text&lt;/span&gt;: &lt;span class="name"&gt;canvas&lt;/span&gt;.&lt;span class="name"&gt;score&lt;/span&gt;&#xD;            &lt;span class="name"&gt;font&lt;/span&gt;.bold: &lt;span class="number"&gt;true&lt;/span&gt;&#xD;        }&#xD;    }&#xD;&#xD;    &lt;span class="comment"&gt;// Display the number of coins&lt;/span&gt;&#xD;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-row.html" translate="no"&gt;Row&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;points&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.right: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;right&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.rightMargin: &lt;span class="number"&gt;10&lt;/span&gt;&#xD;        &lt;span class="name"&gt;spacing&lt;/span&gt;: &lt;span class="number"&gt;5&lt;/span&gt;&#xD;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/points.png"&lt;/span&gt; }&#xD;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-text.html" translate="no"&gt;Text&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;pointsLabel&lt;/span&gt;&#xD;            &lt;span class="name"&gt;text&lt;/span&gt;: &lt;span class="name"&gt;canvas&lt;/span&gt;.&lt;span class="name"&gt;coins&lt;/span&gt;&#xD;            &lt;span class="name"&gt;font&lt;/span&gt;.bold: &lt;span class="number"&gt;true&lt;/span&gt;&#xD;        }&#xD;    }&#xD;}&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;In these objects, we set spacing to 5 pixels to separate the icons from the numbers that we display by using a &lt;a href="qml-qtquick-text.html" translate="no"&gt;Text&lt;/a&gt; type.&lt;/p&gt;&#xD;&lt;p&gt;In GameCanvas.qml, we define custom properties to hold the game statistics:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp" translate="no"&gt;    property &lt;span class="type"&gt;int&lt;/span&gt; &lt;span class="name"&gt;score&lt;/span&gt;: &lt;span class="number"&gt;0&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;int&lt;/span&gt; &lt;span class="name"&gt;coins&lt;/span&gt;: &lt;span class="number"&gt;100&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;int&lt;/span&gt; &lt;span class="name"&gt;lives&lt;/span&gt;: &lt;span class="number"&gt;3&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We declare the &lt;code translate="no"&gt;freshState()&lt;/code&gt; function to set the initial game statistics when a new game starts:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="keyword"&gt;function &lt;/span&gt;&lt;span class="name"&gt;freshState&lt;/span&gt;() {&#xD;        &lt;span class="name"&gt;lives&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;3&lt;/span&gt;&#xD;        &lt;span class="name"&gt;coins&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;100&lt;/span&gt;&#xD;        &lt;span class="name"&gt;score&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;&#xD;        &lt;span class="name"&gt;waveNumber&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;&#xD;        &lt;span class="name"&gt;waveProgress&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;&#xD;        &lt;span class="name"&gt;gameOver&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;false&lt;/span&gt;&#xD;        &lt;span class="name"&gt;gameRunning&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;false&lt;/span&gt;&#xD;        &lt;span class="name"&gt;towerMenu&lt;/span&gt;.&lt;span class="name"&gt;shown&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;false&lt;/span&gt;&#xD;        &lt;span class="name"&gt;helpButton&lt;/span&gt;.&lt;span class="name"&gt;comeBack&lt;/span&gt;();&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We use the &lt;code translate="no"&gt;Logic.gameState.score&lt;/code&gt; variable in the &lt;code translate="no"&gt;die()&lt;/code&gt; function that we declare in MobBase.qml to increase the score by one when the players set a fish free:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        &lt;span class="name"&gt;Logic&lt;/span&gt;.&lt;span class="name"&gt;gameState&lt;/span&gt;.&lt;span class="name"&gt;score&lt;/span&gt; &lt;span class="operator"&gt;+=&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;a name="managing-game-states"&gt;&lt;/a&gt;&#xD;&lt;h4 id="managing-game-states"&gt;Managing Game States&lt;a class="plink" href="#managing-game-states" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p&gt;In maroon.qml, we use a &lt;a href="qml-qtqml-statemachine-state.html" translate="no"&gt;State&lt;/a&gt; type and JavaScript to switch between screens according to the game state. The logic.js file contains definitions for the functions. To use the functions in a QML file, we import logic.js as the &lt;code translate="no"&gt;Logic&lt;/code&gt; namespace in that file:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;import "content/logic.js" as Logic&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;The base state displays the new game screen when the application starts. In addition, we call the Component.onCompleted signal handler to initialize a new game:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="name"&gt;Component&lt;/span&gt;.onCompleted: &lt;span class="name"&gt;gameState&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="name"&gt;Logic&lt;/span&gt;.&lt;span class="name"&gt;newGameState&lt;/span&gt;(&lt;span class="name"&gt;canvas&lt;/span&gt;);&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;In NewGameScreen.qml we use the &lt;code translate="no"&gt;onClicked&lt;/code&gt; signal handler to emit the &lt;code translate="no"&gt;startButtonClicked()&lt;/code&gt; signal when the players tap the New Game button:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/button-play.png"&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.bottom: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;bottom&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.bottomMargin: &lt;span class="number"&gt;60&lt;/span&gt;&#xD;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-mousearea.html" translate="no"&gt;MouseArea&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;anchors&lt;/span&gt;.fill: &lt;span class="name"&gt;parent&lt;/span&gt;&#xD;            &lt;span class="name"&gt;onClicked&lt;/span&gt;: &lt;span class="name"&gt;newGameScreen&lt;/span&gt;.&lt;span class="name"&gt;startButtonClicked&lt;/span&gt;()&#xD;        }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;In maroon.qml, we use the &lt;code translate="no"&gt;onStartButtonClicked&lt;/code&gt; signal handler to set the &lt;code translate="no"&gt;passedSplash&lt;/code&gt; property of the &lt;code translate="no"&gt;root&lt;/code&gt; item to &lt;code translate="no"&gt;true&lt;/code&gt;:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        &lt;span class="type"&gt;NewGameScreen&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;onStartButtonClicked&lt;/span&gt;: &lt;span class="name"&gt;root&lt;/span&gt;.&lt;span class="name"&gt;passedSplash&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;true&lt;/span&gt;&#xD;        }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We then use the &lt;code translate="no"&gt;passedSplash&lt;/code&gt; property in the &lt;code translate="no"&gt;when&lt;/code&gt; property of the &lt;code translate="no"&gt;gameOn&lt;/code&gt; state to trigger the &lt;code translate="no"&gt;gameStarter&lt;/code&gt; timer:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        &lt;span class="type"&gt;&lt;a href="qml-qtqml-statemachine-state.html" translate="no"&gt;State&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;name&lt;/span&gt;: &lt;span class="string"&gt;"gameOn"&lt;/span&gt;; &lt;span class="name"&gt;when&lt;/span&gt;: &lt;span class="name"&gt;gameState&lt;/span&gt;.&lt;span class="name"&gt;gameOver&lt;/span&gt; &lt;span class="operator"&gt;==&lt;/span&gt; &lt;span class="number"&gt;false&lt;/span&gt; &lt;span class="operator"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="name"&gt;passedSplash&lt;/span&gt;&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-propertychanges.html" translate="no"&gt;PropertyChanges&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;target&lt;/span&gt;: &lt;span class="name"&gt;view&lt;/span&gt;; &lt;span class="name"&gt;y&lt;/span&gt;: -(&lt;span class="name"&gt;height&lt;/span&gt; &lt;span class="operator"&gt;-&lt;/span&gt; &lt;span class="number"&gt;960&lt;/span&gt;) }&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-statechangescript.html" translate="no"&gt;StateChangeScript&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;script&lt;/span&gt;: &lt;span class="name"&gt;root&lt;/span&gt;.&lt;span class="name"&gt;countdown&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;; }&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-propertychanges.html" translate="no"&gt;PropertyChanges&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;target&lt;/span&gt;: &lt;span class="name"&gt;gameStarter&lt;/span&gt;; &lt;span class="name"&gt;running&lt;/span&gt;: &lt;span class="number"&gt;true&lt;/span&gt; }&#xD;        },&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We also switch to the &lt;code translate="no"&gt;"gameOn"&lt;/code&gt; state and move to the y position &lt;code translate="no"&gt;-(height - 960)&lt;/code&gt; to display the game canvas.&lt;/p&gt;&#xD;&lt;p&gt;In the &lt;code translate="no"&gt;gameStarter&lt;/code&gt; &lt;a href="qml-qtqml-timer.html" translate="no"&gt;Timer&lt;/a&gt; object we use the &lt;code translate="no"&gt;onTriggered&lt;/code&gt; signal handler to call the &lt;code translate="no"&gt;startGame()&lt;/code&gt; function that starts a new game:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtqml-timer.html" translate="no"&gt;Timer&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;gameStarter&lt;/span&gt;&#xD;        &lt;span class="name"&gt;interval&lt;/span&gt;: &lt;span class="number"&gt;4000&lt;/span&gt;&#xD;        &lt;span class="name"&gt;running&lt;/span&gt;: &lt;span class="number"&gt;false&lt;/span&gt;&#xD;        &lt;span class="name"&gt;repeat&lt;/span&gt;: &lt;span class="number"&gt;false&lt;/span&gt;&#xD;        &lt;span class="name"&gt;onTriggered&lt;/span&gt;: &lt;span class="name"&gt;Logic&lt;/span&gt;.&lt;span class="name"&gt;startGame&lt;/span&gt;(&lt;span class="name"&gt;canvas&lt;/span&gt;);&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;The game continues until &lt;code translate="no"&gt;gameState.gameOver&lt;/code&gt; is set to &lt;code translate="no"&gt;true&lt;/code&gt; and &lt;code translate="no"&gt;gameState.gameRunning&lt;/code&gt; is set to &lt;code translate="no"&gt;false&lt;/code&gt; by calling the &lt;code translate="no"&gt;endGame()&lt;/code&gt; function when the value of the &lt;code translate="no"&gt;gameState.lives&lt;/code&gt; property becomes less than or equal to &lt;code translate="no"&gt;0&lt;/code&gt;.&lt;/p&gt;&#xD;&lt;p&gt;In GameOverScreen.qml, we use a &lt;a href="qml-qtquick-mousearea.html" translate="no"&gt;MouseArea&lt;/a&gt; type and an &lt;code translate="no"&gt;onClicked&lt;/code&gt; signal handler within an &lt;a href="09-qdoc-commands-includingimages.html#image" translate="no"&gt;Image&lt;/a&gt; type to return to the game canvas when the players tap the New Game button:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtquick-image.html" translate="no"&gt;Image&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"gfx/button-play.png"&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.bottom: &lt;span class="name"&gt;parent&lt;/span&gt;.&lt;span class="name"&gt;bottom&lt;/span&gt;&#xD;        &lt;span class="name"&gt;anchors&lt;/span&gt;.bottomMargin: &lt;span class="number"&gt;0&lt;/span&gt;&#xD;        &lt;span class="type"&gt;&lt;a href="qml-qtquick-mousearea.html" translate="no"&gt;MouseArea&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;anchors&lt;/span&gt;.fill: &lt;span class="name"&gt;parent&lt;/span&gt;&#xD;            &lt;span class="name"&gt;onClicked&lt;/span&gt;: &lt;span class="name"&gt;gameCanvas&lt;/span&gt;.&lt;span class="name"&gt;gameOver&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="number"&gt;false&lt;/span&gt;&lt;span class="comment"&gt;//This will actually trigger the state change in main.qml&lt;/span&gt;&#xD;        }&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;The &lt;code translate="no"&gt;onClicked&lt;/code&gt; signal handler triggers a state change in maroon.qml to display the game canvas:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;        &lt;span class="type"&gt;&lt;a href="qml-qtqml-statemachine-state.html" translate="no"&gt;State&lt;/a&gt;&lt;/span&gt; {&#xD;            &lt;span class="name"&gt;name&lt;/span&gt;: &lt;span class="string"&gt;"gameOver"&lt;/span&gt;; &lt;span class="name"&gt;when&lt;/span&gt;: &lt;span class="name"&gt;gameState&lt;/span&gt;.&lt;span class="name"&gt;gameOver&lt;/span&gt; &lt;span class="operator"&gt;==&lt;/span&gt; &lt;span class="number"&gt;true&lt;/span&gt;&#xD;            &lt;span class="type"&gt;&lt;a href="qml-qtquick-propertychanges.html" translate="no"&gt;PropertyChanges&lt;/a&gt;&lt;/span&gt; { &lt;span class="name"&gt;target&lt;/span&gt;: &lt;span class="name"&gt;view&lt;/span&gt;; &lt;span class="name"&gt;y&lt;/span&gt;: &lt;span class="number"&gt;0&lt;/span&gt; }&#xD;        }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;a name="playing-sound-effects"&gt;&lt;/a&gt;&#xD;&lt;h4 id="playing-sound-effects"&gt;Playing Sound Effects&lt;a class="plink" href="#playing-sound-effects" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p&gt;The app can play sound effects if the &lt;a href="qtmultimedia-index.html" translate="no"&gt;Qt Multimedia&lt;/a&gt; module is installed. In the &lt;a href="qml-multimedia.html#soundeffect" translate="no"&gt;SoundEffect&lt;/a&gt;.qml file, we proxy a &lt;a href="qml-multimedia.html#soundeffect" translate="no"&gt;SoundEffect&lt;/a&gt; type:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;&lt;span class="type"&gt;&lt;a href="qml-qtquick-item.html" translate="no"&gt;Item&lt;/a&gt;&lt;/span&gt; {&#xD;    &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;container&lt;/span&gt;&#xD;    property &lt;span class="type"&gt;&lt;a href="qml-qtqml-qtobject.html" translate="no"&gt;QtObject&lt;/a&gt;&lt;/span&gt; &lt;span class="name"&gt;effect&lt;/span&gt;: &lt;span class="name"&gt;Qt&lt;/span&gt;.&lt;span class="name"&gt;createQmlObject&lt;/span&gt;(&lt;span class="string"&gt;"import QtMultimedia 5.0; SoundEffect{ source: &apos;"&lt;/span&gt; &lt;span class="operator"&gt;+&lt;/span&gt; &lt;span class="name"&gt;container&lt;/span&gt;.&lt;span class="name"&gt;source&lt;/span&gt; &lt;span class="operator"&gt;+&lt;/span&gt; &lt;span class="string"&gt;"&apos;; muted: Qt.application.state != Qt.ApplicationActive }"&lt;/span&gt;, &lt;span class="name"&gt;container&lt;/span&gt;);&#xD;    property &lt;span class="type"&gt;url&lt;/span&gt; &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;""&lt;/span&gt;&#xD;    &lt;span class="name"&gt;onSourceChanged&lt;/span&gt;: &lt;span class="keyword"&gt;if&lt;/span&gt; (&lt;span class="name"&gt;effect&lt;/span&gt; &lt;span class="operator"&gt;!=&lt;/span&gt; &lt;span class="number"&gt;null&lt;/span&gt;) &lt;span class="name"&gt;effect&lt;/span&gt;.&lt;span class="name"&gt;source&lt;/span&gt; &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="name"&gt;source&lt;/span&gt;;&#xD;    &lt;span class="keyword"&gt;function &lt;/span&gt;&lt;span class="name"&gt;play&lt;/span&gt;() {&#xD;        &lt;span class="keyword"&gt;if&lt;/span&gt; (&lt;span class="name"&gt;effect&lt;/span&gt; &lt;span class="operator"&gt;!=&lt;/span&gt; &lt;span class="number"&gt;null&lt;/span&gt;)&#xD;            &lt;span class="name"&gt;effect&lt;/span&gt;.&lt;span class="name"&gt;play&lt;/span&gt;();&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;We add the &lt;code translate="no"&gt;qtHaveModule()&lt;/code&gt; qmake command to the app .pro file, maroon.pro, to check whether the &lt;a href="qtmultimedia-index.html" translate="no"&gt;Qt Multimedia&lt;/a&gt; module is present:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;QT += qml quick&#xD;qtHaveModule(multimedia): QT += multimedia&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;In each QML file that defines a custom type used on the game canvas, we use a &lt;a href="qml-multimedia.html#soundeffect" translate="no"&gt;SoundEffect&lt;/a&gt; type to specify the audio file to play for that type of objects. For example, in Bomb.qml, we specify the sound that a bomb makes when it explodes:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="type"&gt;&lt;a href="qml-qtmultimedia-soundeffect.html" translate="no"&gt;SoundEffect&lt;/a&gt;&lt;/span&gt; {&#xD;        &lt;span class="name"&gt;id&lt;/span&gt;: &lt;span class="name"&gt;sound&lt;/span&gt;&#xD;        &lt;span class="name"&gt;source&lt;/span&gt;: &lt;span class="string"&gt;"../audio/bomb-action.wav"&lt;/span&gt;&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;To play the sound effect when a bomb explodes, we call the &lt;code translate="no"&gt;sound.play()&lt;/code&gt; function that we declare as a member of the private &lt;code translate="no"&gt;fire()&lt;/code&gt; function within the TowerBase custom type:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="keyword"&gt;function &lt;/span&gt;&lt;span class="name"&gt;fire&lt;/span&gt;() {&#xD;        &lt;span class="name"&gt;sound&lt;/span&gt;.&lt;span class="name"&gt;play&lt;/span&gt;()&#xD;        &lt;span class="name"&gt;sprite&lt;/span&gt;.&lt;span class="name"&gt;jumpTo&lt;/span&gt;(&lt;span class="string"&gt;"shoot"&lt;/span&gt;)&#xD;        &lt;span class="name"&gt;animDelay&lt;/span&gt;.&lt;span class="name"&gt;start&lt;/span&gt;()&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;p&gt;For more examples of playing sound effects, see the QML files in the &lt;code translate="no"&gt;towers&lt;/code&gt; directory and MobBase.qml.&lt;/p&gt;&#xD;&lt;a name="adding-keyboard-shortcuts"&gt;&lt;/a&gt;&#xD;&lt;h4 id="adding-keyboard-shortcuts"&gt;Adding Keyboard Shortcuts&lt;a class="plink" href="#adding-keyboard-shortcuts" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p&gt;This is a touch example, so you should not really need to handle key presses. However, we do not want you to have to spend more time playing the game than you want to while testing it, so we use the &lt;code translate="no"&gt;Keys.onPressed&lt;/code&gt; signal handler to specify keyboard shortcuts. You can press Shift+Up to increment the values of the &lt;code translate="no"&gt;coins&lt;/code&gt; property to add coins, Shift+Left to increment the value of &lt;code translate="no"&gt;lives&lt;/code&gt;, Shift+Down to increment the value of the &lt;code translate="no"&gt;waveProgress&lt;/code&gt; property to spawn mobs of fish faster, and Shift+Right to call the &lt;code translate="no"&gt;endGame()&lt;/code&gt; function to quit the game:&lt;/p&gt;&#xD;&lt;div class="pre"&gt;&lt;pre class="cpp prettyprint" translate="no"&gt;    &lt;span class="name"&gt;Keys&lt;/span&gt;.onPressed: { &lt;span class="comment"&gt;// Cheat Codes while Testing&lt;/span&gt;&#xD;        &lt;span class="keyword"&gt;if&lt;/span&gt; (&lt;span class="name"&gt;event&lt;/span&gt;.&lt;span class="name"&gt;key&lt;/span&gt; &lt;span class="operator"&gt;==&lt;/span&gt; &lt;span class="name"&gt;Qt&lt;/span&gt;.&lt;span class="name"&gt;Key_Up&lt;/span&gt; &lt;span class="operator"&gt;&amp;amp;&amp;amp;&lt;/span&gt; (&lt;span class="name"&gt;event&lt;/span&gt;.&lt;span class="name"&gt;modifiers&lt;/span&gt; &lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; &lt;span class="name"&gt;Qt&lt;/span&gt;.&lt;span class="name"&gt;ShiftModifier&lt;/span&gt;))&#xD;            &lt;span class="name"&gt;grid&lt;/span&gt;.&lt;span class="name"&gt;coins&lt;/span&gt; &lt;span class="operator"&gt;+=&lt;/span&gt; &lt;span class="number"&gt;10&lt;/span&gt;;&#xD;        &lt;span class="keyword"&gt;if&lt;/span&gt; (&lt;span class="name"&gt;event&lt;/span&gt;.&lt;span class="name"&gt;key&lt;/span&gt; &lt;span class="operator"&gt;==&lt;/span&gt; &lt;span class="name"&gt;Qt&lt;/span&gt;.&lt;span class="name"&gt;Key_Left&lt;/span&gt; &lt;span class="operator"&gt;&amp;amp;&amp;amp;&lt;/span&gt; (&lt;span class="name"&gt;event&lt;/span&gt;.&lt;span class="name"&gt;modifiers&lt;/span&gt; &lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; &lt;span class="name"&gt;Qt&lt;/span&gt;.&lt;span class="name"&gt;ShiftModifier&lt;/span&gt;))&#xD;            &lt;span class="name"&gt;grid&lt;/span&gt;.&lt;span class="name"&gt;lives&lt;/span&gt; &lt;span class="operator"&gt;+=&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;;&#xD;        &lt;span class="keyword"&gt;if&lt;/span&gt; (&lt;span class="name"&gt;event&lt;/span&gt;.&lt;span class="name"&gt;key&lt;/span&gt; &lt;span class="operator"&gt;==&lt;/span&gt; &lt;span class="name"&gt;Qt&lt;/span&gt;.&lt;span class="name"&gt;Key_Down&lt;/span&gt; &lt;span class="operator"&gt;&amp;amp;&amp;amp;&lt;/span&gt; (&lt;span class="name"&gt;event&lt;/span&gt;.&lt;span class="name"&gt;modifiers&lt;/span&gt; &lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; &lt;span class="name"&gt;Qt&lt;/span&gt;.&lt;span class="name"&gt;ShiftModifier&lt;/span&gt;))&#xD;            &lt;span class="name"&gt;Logic&lt;/span&gt;.&lt;span class="name"&gt;gameState&lt;/span&gt;.&lt;span class="name"&gt;waveProgress&lt;/span&gt; &lt;span class="operator"&gt;+=&lt;/span&gt; &lt;span class="number"&gt;1000&lt;/span&gt;;&#xD;        &lt;span class="keyword"&gt;if&lt;/span&gt; (&lt;span class="name"&gt;event&lt;/span&gt;.&lt;span class="name"&gt;key&lt;/span&gt; &lt;span class="operator"&gt;==&lt;/span&gt; &lt;span class="name"&gt;Qt&lt;/span&gt;.&lt;span class="name"&gt;Key_Right&lt;/span&gt; &lt;span class="operator"&gt;&amp;amp;&amp;amp;&lt;/span&gt; (&lt;span class="name"&gt;event&lt;/span&gt;.&lt;span class="name"&gt;modifiers&lt;/span&gt; &lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; &lt;span class="name"&gt;Qt&lt;/span&gt;.&lt;span class="name"&gt;ShiftModifier&lt;/span&gt;))&#xD;            &lt;span class="name"&gt;Logic&lt;/span&gt;.&lt;span class="name"&gt;endGame&lt;/span&gt;();&#xD;    }&lt;/pre&gt;&lt;/div&gt;&#xD;&lt;a name="packaging-resources-for-deployment"&gt;&lt;/a&gt;&#xD;&lt;h4 id="packaging-resources-for-deployment"&gt;Packaging Resources for Deployment&lt;a class="plink" href="#packaging-resources-for-deployment" title="Direct link to this headline"&gt;&lt;/a&gt;&lt;/h4&gt;&#xD;&lt;p&gt;To be able to run the app on mobile devices, we package all QML, JavaScript, image, and sound files into a Qt resource file (.qrc). For more information, see &lt;a href="resources.html" translate="no"&gt;The Qt Resource System&lt;/a&gt;.&lt;/p&gt;&#xD;&lt;p&gt;Files:&lt;/p&gt;&#xD;&lt;ul&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-content-buildbutton-qml.html" translate="no"&gt;demos/maroon/content/BuildButton.qml&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-content-gamecanvas-qml.html" translate="no"&gt;demos/maroon/content/GameCanvas.qml&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-content-gameoverscreen-qml.html" translate="no"&gt;demos/maroon/content/GameOverScreen.qml&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-content-infobar-qml.html" translate="no"&gt;demos/maroon/content/InfoBar.qml&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-content-newgamescreen-qml.html" translate="no"&gt;demos/maroon/content/NewGameScreen.qml&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-content-soundeffect-qml.html" translate="no"&gt;demos/maroon/content/SoundEffect.qml&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-content-logic-js.html" translate="no"&gt;demos/maroon/content/logic.js&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-content-mobs-mobbase-qml.html" translate="no"&gt;demos/maroon/content/mobs/MobBase.qml&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-content-towers-bomb-qml.html" translate="no"&gt;demos/maroon/content/towers/Bomb.qml&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-content-towers-factory-qml.html" translate="no"&gt;demos/maroon/content/towers/Factory.qml&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-content-towers-melee-qml.html" translate="no"&gt;demos/maroon/content/towers/Melee.qml&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-content-towers-ranged-qml.html" translate="no"&gt;demos/maroon/content/towers/Ranged.qml&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-content-towers-towerbase-qml.html" translate="no"&gt;demos/maroon/content/towers/TowerBase.qml&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-main-cpp.html" translate="no"&gt;demos/maroon/main.cpp&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-maroon-pro.html" translate="no"&gt;demos/maroon/maroon.pro&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-maroon-qml.html" translate="no"&gt;demos/maroon/maroon.qml&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-maroon-qmlproject.html" translate="no"&gt;demos/maroon/maroon.qmlproject&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="qtdoc-demos-maroon-maroon-qrc.html" translate="no"&gt;demos/maroon/maroon.qrc&lt;/a&gt;&lt;/li&gt;&#xD;&lt;/ul&gt;&#xD;&lt;p&gt;Images:&lt;/p&gt;&#xD;&lt;ul&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/background.png" translate="no"&gt;demos/maroon/content/gfx/background.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/bomb-action.png" translate="no"&gt;demos/maroon/content/gfx/bomb-action.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/bomb-idle.png" translate="no"&gt;demos/maroon/content/gfx/bomb-idle.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/bomb.png" translate="no"&gt;demos/maroon/content/gfx/bomb.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/button-help.png" translate="no"&gt;demos/maroon/content/gfx/button-help.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/button-play.png" translate="no"&gt;demos/maroon/content/gfx/button-play.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/catch-action.png" translate="no"&gt;demos/maroon/content/gfx/catch-action.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/catch.png" translate="no"&gt;demos/maroon/content/gfx/catch.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/cloud.png" translate="no"&gt;demos/maroon/content/gfx/cloud.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/currency.png" translate="no"&gt;demos/maroon/content/gfx/currency.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/dialog-bomb.png" translate="no"&gt;demos/maroon/content/gfx/dialog-bomb.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/dialog-factory.png" translate="no"&gt;demos/maroon/content/gfx/dialog-factory.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/dialog-melee.png" translate="no"&gt;demos/maroon/content/gfx/dialog-melee.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/dialog-pointer.png" translate="no"&gt;demos/maroon/content/gfx/dialog-pointer.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/dialog-shooter.png" translate="no"&gt;demos/maroon/content/gfx/dialog-shooter.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/dialog.png" translate="no"&gt;demos/maroon/content/gfx/dialog.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/factory-action.png" translate="no"&gt;demos/maroon/content/gfx/factory-action.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/factory-idle.png" translate="no"&gt;demos/maroon/content/gfx/factory-idle.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/factory.png" translate="no"&gt;demos/maroon/content/gfx/factory.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/grid.png" translate="no"&gt;demos/maroon/content/gfx/grid.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/help.png" translate="no"&gt;demos/maroon/content/gfx/help.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/lifes.png" translate="no"&gt;demos/maroon/content/gfx/lifes.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/logo-bubble.png" translate="no"&gt;demos/maroon/content/gfx/logo-bubble.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/logo-fish.png" translate="no"&gt;demos/maroon/content/gfx/logo-fish.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/logo.png" translate="no"&gt;demos/maroon/content/gfx/logo.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/melee-action.png" translate="no"&gt;demos/maroon/content/gfx/melee-action.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/melee-idle.png" translate="no"&gt;demos/maroon/content/gfx/melee-idle.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/melee.png" translate="no"&gt;demos/maroon/content/gfx/melee.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/mob-idle.png" translate="no"&gt;demos/maroon/content/gfx/mob-idle.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/mob.png" translate="no"&gt;demos/maroon/content/gfx/mob.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/points.png" translate="no"&gt;demos/maroon/content/gfx/points.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/projectile-action.png" translate="no"&gt;demos/maroon/content/gfx/projectile-action.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/projectile.png" translate="no"&gt;demos/maroon/content/gfx/projectile.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/scores.png" translate="no"&gt;demos/maroon/content/gfx/scores.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/shooter-action.png" translate="no"&gt;demos/maroon/content/gfx/shooter-action.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/shooter-idle.png" translate="no"&gt;demos/maroon/content/gfx/shooter-idle.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/shooter.png" translate="no"&gt;demos/maroon/content/gfx/shooter.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/sunlight.png" translate="no"&gt;demos/maroon/content/gfx/sunlight.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/text-1.png" translate="no"&gt;demos/maroon/content/gfx/text-1.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/text-2.png" translate="no"&gt;demos/maroon/content/gfx/text-2.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/text-3.png" translate="no"&gt;demos/maroon/content/gfx/text-3.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/text-blank.png" translate="no"&gt;demos/maroon/content/gfx/text-blank.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/text-gameover.png" translate="no"&gt;demos/maroon/content/gfx/text-gameover.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/text-go.png" translate="no"&gt;demos/maroon/content/gfx/text-go.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;li&gt;&lt;a href="images/used-in-examples/demos/maroon/content/gfx/wave.png" translate="no"&gt;demos/maroon/content/gfx/wave.png&lt;/a&gt;&lt;/li&gt;&#xD;&lt;/ul&gt;&#xD;&lt;/div&gt;&#xD;&lt;p&gt;&lt;b&gt;See also &lt;/b&gt;&lt;a href="qmlapplications.html" translate="no"&gt;QML Applications&lt;/a&gt;.&lt;/p&gt;&#xD;&lt;!-- @@@demos/maroon --&gt;&#xD;&lt;/div&gt;&#xD;&lt;p class="copy-notice"&gt;&#xD;&lt;acronym title="Copyright"&gt;©&lt;/acronym&gt; 2023 The Qt Company Ltd.&#xD;   Documentation contributions included herein are the copyrights of&#xD;   their respective owners.     The documentation provided herein is licensed under the terms of the    &lt;a href="http://www.gnu.org/licenses/fdl.html"&gt;GNU Free Documentation    License version 1.3&lt;/a&gt; as published by the Free Software Foundation.     Qt and respective logos are &lt;a href="https://doc.qt.io/qt/trademarks.html"&gt;    trademarks&lt;/a&gt; of The Qt Company Ltd. in Finland and/or other countries&#xD;   worldwide. All other trademarks are property of their respective owners. &lt;/p&gt;&#xD;&#xD;                    &lt;/div&gt;&#xD;                &lt;/article&gt;&#xD;                &lt;aside class="b-sidebar__content__right"&gt;&#xD;                    &lt;div class="h-wysiwyg-html" data-scheme&gt;&#xD;                                                &lt;h6&gt;&lt;strong&gt;Contents&lt;/strong&gt;&lt;/h6&gt;&#xD;                        &lt;nav&gt;&#xD;                            &lt;ul class="c-tableofcontents js-c-tableofcontents" data-tableofcontents-id="wrapperid" data-margin-top="sm"&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#running-the-example"&gt;Running the Example&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#adding-screens"&gt;Adding Screens&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#constructing-the-background"&gt;Constructing the Background&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#animating-background-objects"&gt;Animating Background Objects&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#emitting-particles"&gt;Emitting Particles&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#using-timers"&gt;Using Timers&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#constructing-the-game-board"&gt;Constructing the Game Board&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#animating-objects-on-the-game-board"&gt;Animating Objects on the Game Board&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level2"&gt;&lt;p&gt;&lt;a href="#spawning-fish"&gt;Spawning Fish&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level2"&gt;&lt;p&gt;&lt;a href="#bursting-bubbles"&gt;Bursting Bubbles&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#adding-dialogs"&gt;Adding Dialogs&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#keeping-track-of-game-statistics"&gt;Keeping Track of Game Statistics&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#managing-game-states"&gt;Managing Game States&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#playing-sound-effects"&gt;Playing Sound Effects&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#adding-keyboard-shortcuts"&gt;Adding Keyboard Shortcuts&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;li class="level1"&gt;&lt;p&gt;&lt;a href="#packaging-resources-for-deployment"&gt;Packaging Resources for Deployment&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&#xD;&lt;/ul&gt;&#xD;                        &lt;/nav&gt;&#xD;                                            &lt;/div&gt;&#xD;                                    &lt;/aside&gt;&#xD;            &lt;/div&gt;&#xD;        &lt;/div&gt;&#xD;    &lt;/div&gt;&#xD;&lt;/div&gt;&#xD;&lt;div id="footer"&gt;&#xD;&lt;footer class="b-footer"&gt;&#xD;  &lt;div class="b-footer__container"&gt;&#xD;    &lt;div class="b-footer__wrapper"&gt;&#xD;      &lt;a class="b-footer__logo" href="/?hsLang=en"&gt;&lt;/a&gt;&#xD;      &lt;div class="b-footer__social-icons"&gt;&#xD;        &lt;a class="b-footer__social-icons__icon" href="https://www.facebook.com/qt/"&gt;&#xD;        &lt;svg width="10px" height="16px" viewBox="0 0 10 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"&gt;&#xD;                        &lt;g id="Mainpage" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"&gt;&#xD;                            &lt;g id="Mainpage_Layout_V4_Active" transform="translate(-149.000000, -7668.000000)" fill="#41CD52"&gt;&#xD;                                &lt;g id="Footer" transform="translate(0.000000, 7558.000000)"&gt;&#xD;                                    &lt;g id="social-16px_logo-fb-simple" transform="translate(149.000000, 110.000000)"&gt;&#xD;                                        &lt;path d="M3.02293,16 L3,9 L0,9 L0,6 L3,6 L3,4 C3,1.3008 4.67151,0 7.07938,0 C8.23277,0 9.22406,0.08587 9.51294,0.12425 L9.51294,2.94507 L7.84296,2.94583 C6.53343,2.94583 6.27987,3.5681 6.27987,4.48124 L6.27987,6 L10,6 L9,9 L6.27986,9 L6.27986,16 L3.02293,16 Z" id="Shape"&gt;&lt;/path&gt;&#xD;                                    &lt;/g&gt;&#xD;                                &lt;/g&gt;&#xD;                            &lt;/g&gt;&#xD;                        &lt;/g&gt;&#xD;                    &lt;/svg&gt;&lt;/a&gt;&#xD;        &lt;a class="b-footer__social-icons__icon" href="https://twitter.com/qtproject"&gt;&#xD;        &lt;svg width="16px" height="14px" viewBox="0 0 16 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"&gt;&#xD;                        &lt;g id="Mainpage" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"&gt;&#xD;                            &lt;g id="Mainpage_Layout_V4_Active" transform="translate(-193.000000, -7670.000000)" fill="#41CD52"&gt;&#xD;                                &lt;g id="Footer" transform="translate(0.000000, 7558.000000)"&gt;&#xD;                                    &lt;g id="social-16px_logo-twitter" transform="translate(193.000000, 112.000000)"&gt;&#xD;                                        &lt;path d="M16,2 C15.4,2.3 14.8,2.4 14.1,2.5 C14.8,2.1 15.3,1.5 15.5,0.7 C14.9,1.1 14.2,1.3 13.4,1.5 C12.8,0.9 11.9,0.5 11,0.5 C9.3,0.5 7.8,2 7.8,3.8 C7.8,4.1 7.8,4.3 7.9,4.5 C5.2,4.4 2.7,3.1 1.1,1.1 C0.8,1.6 0.7,2.1 0.7,2.8 C0.7,3.9 1.3,4.9 2.2,5.5 C1.7,5.5 1.2,5.3 0.7,5.1 L0.7,5.1 C0.7,6.7 1.8,8 3.3,8.3 C3,8.4 2.7,8.4 2.4,8.4 C2.2,8.4 2,8.4 1.8,8.3 C2.2,9.6 3.4,10.6 4.9,10.6 C3.8,11.5 2.4,12 0.8,12 L0,12 C1.5,12.9 3.2,13.5 5,13.5 C11,13.5 14.3,8.5 14.3,4.2 L14.3,3.8 C15,3.3 15.6,2.7 16,2 Z" id="Shape"&gt;&lt;/path&gt;&#xD;                                    &lt;/g&gt;&#xD;                                &lt;/g&gt;&#xD;                            &lt;/g&gt;&#xD;                        &lt;/g&gt;&#xD;                    &lt;/svg&gt;&lt;/a&gt;&#xD;        &lt;a class="b-footer__social-icons__icon" href="https://www.youtube.com/user/QtStudios"&gt;&#xD;        &lt;svg width="16px" height="12px" viewBox="0 0 16 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"&gt;&#xD;                        &lt;g id="Mainpage" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"&gt;&#xD;                            &lt;g id="Mainpage_Layout_V4_Active" transform="translate(-243.000000, -7671.000000)" fill="#41CD52"&gt;&#xD;                                &lt;g id="Footer" transform="translate(0.000000, 7558.000000)"&gt;&#xD;                                    &lt;g id="social-16px_logo-youtube" transform="translate(243.000000, 113.000000)"&gt;&#xD;                                        &lt;path d="M15.8,2.8 C15.6,1.5 15,0.6 13.6,0.4 C11.4,0 8,0 8,0 C8,0 4.6,0 2.4,0.4 C1,0.6 0.3,1.5 0.2,2.8 C0,4.1 0,6 0,6 C0,6 0,7.9 0.2,9.2 C0.4,10.5 1,11.4 2.4,11.6 C4.6,12 8,12 8,12 C8,12 11.4,12 13.6,11.6 C15,11.3 15.6,10.5 15.8,9.2 C16,7.9 16,6 16,6 C16,6 16,4.1 15.8,2.8 Z M6,9 L6,3 L11,6 L6,9 Z" id="Shape"&gt;&lt;/path&gt;&#xD;                                    &lt;/g&gt;&#xD;                                &lt;/g&gt;&#xD;                            &lt;/g&gt;&#xD;                        &lt;/g&gt;&#xD;                    &lt;/svg&gt;&lt;/a&gt;&#xD;        &lt;a class="b-footer__social-icons__icon" href="https://www.linkedin.com/company/theqtcompany/"&gt;&lt;i aria-hidden="true" class="fa fa-linkedin-square"&gt;&lt;/i&gt;&lt;/a&gt;&lt;br&gt;&#xD;        &lt;a class="c-button" href="https://www.qt.io/contact-us?hsLang=en" style="margin-top: 1em;"&gt;&lt;span&gt;Contact Us&lt;/span&gt;&lt;/a&gt;&#xD;      &lt;/div&gt;&#xD;      &lt;div class="b-footer__nav"&gt;&#xD;        &lt;div aria-label="Navigation Menu" class="hs-menu-wrapper" role="navigation"&gt;&#xD;          &lt;ul role="menu"&gt;&#xD;            &lt;li role="none"&gt;&#xD;              &lt;a aria-expanded="false" aria-haspopup="true" href="javascript:;" role="menuitem"&gt;Company&lt;/a&gt;&#xD;              &lt;ul class="hs-menu-children-wrapper" role="menu"&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/company" role="menuitem"&gt;About Us&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://investors.qt.io" role="menuitem"&gt;Investors&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/newsroom" role="menuitem"&gt;Newsroom&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/careers" role="menuitem"&gt;Careers&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/contact-us/qt-offices" role="menuitem"&gt;Office Locations&lt;/a&gt;&lt;/li&gt;&#xD;              &lt;/ul&gt;&#xD;            &lt;/li&gt;&#xD;            &lt;li role="none"&gt;&#xD;              &lt;a aria-expanded="false" aria-haspopup="true" href="javascript:;" role="menuitem"&gt;Licensing&lt;/a&gt;&#xD;              &lt;ul class="hs-menu-children-wrapper" role="menu"&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/terms-conditions/" role="menuitem"&gt;Terms &amp;amp; Conditions&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/licensing/open-source-lgpl-obligations" role="menuitem"&gt;Open Source&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/faq/overview" role="menuitem"&gt;FAQ&lt;/a&gt;&lt;/li&gt;&#xD;              &lt;/ul&gt;&#xD;            &lt;/li&gt;&#xD;            &lt;li role="none"&gt;&#xD;              &lt;a aria-expanded="false" aria-haspopup="true" href="javascript:;" role="menuitem"&gt;Support&lt;/a&gt;&#xD;              &lt;ul class="hs-menu-children-wrapper" role="menu"&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/qt-support/" role="menuitem"&gt;Support Services&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/qt-consulting/" role="menuitem"&gt;Professional Services&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/contact-us/partners" role="menuitem"&gt;Partners&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/qt-training/" role="menuitem"&gt;Training&lt;/a&gt;&lt;/li&gt;&#xD;              &lt;/ul&gt;&#xD;            &lt;/li&gt;&#xD;            &lt;li role="none"&gt;&#xD;              &lt;a aria-expanded="false" aria-haspopup="true" href="javascript:;" role="menuitem"&gt;For Customers&lt;/a&gt;&#xD;              &lt;ul class="hs-menu-children-wrapper" role="menu"&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://account.qt.io/support" role="menuitem"&gt;Support Center&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://account.qt.io/downloads" role="menuitem"&gt;Downloads&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://login.qt.io/login" role="menuitem"&gt;Qt Login&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/contact-us" role="menuitem"&gt;Contact Us&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/customer-success" role="menuitem"&gt;Customer Success&lt;/a&gt;&lt;/li&gt;&#xD;              &lt;/ul&gt;&#xD;            &lt;/li&gt;&#xD;            &lt;li role="none"&gt;&#xD;              &lt;a aria-expanded="false" aria-haspopup="true" href="javascript:;" role="menuitem"&gt;Community&lt;/a&gt;&#xD;              &lt;ul class="hs-menu-children-wrapper" role="menu"&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/community/contribute-to-qt" role="menuitem"&gt;Contribute to Qt&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://forum.qt.io/" role="menuitem"&gt;Forum&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://wiki.qt.io/Main" role="menuitem"&gt;Wiki&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://www.qt.io/download" role="menuitem"&gt;Downloads&lt;/a&gt;&lt;/li&gt;&#xD;                &lt;li role="none"&gt;&lt;a href="https://marketplace.qt.io/" role="menuitem"&gt;Marketplace&lt;/a&gt;&lt;/li&gt;&#xD;              &lt;/ul&gt;&#xD;            &lt;/li&gt;&#xD;          &lt;/ul&gt;&#xD;        &lt;/div&gt;&#xD;      &lt;/div&gt;&#xD;      &lt;ul class="b-footer__copyright"&gt;&#xD;        &lt;li&gt;&lt;a href="https://account.qt.io/login"&gt;Sign In&lt;/a&gt;&lt;/li&gt;&#xD;        &lt;li&gt;&lt;a href="mailto:feedback@qt.io?Subject=Feedback%20about%20doc.qt.io%20site"&gt;Feedback&lt;/a&gt;&lt;/li&gt;&#xD;        &lt;li&gt;&lt;a href="https://www.qt.io/about-us?hsLang=en"&gt;© 2023 The Qt Company&lt;/a&gt;&lt;/li&gt;&#xD;      &lt;/ul&gt;&#xD;    &lt;/div&gt;&#xD;  &lt;/div&gt;&#xD;&lt;/footer&gt;&#xD;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;</l></variable></variables></scene></scenes></project><media name="Ping Pong Project" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><costume name="Untitled" center-x="239.5" center-y="181" image="data:image/png;base64,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" mediaID="Stage_cst_Untitled"/><costume name="Untitled" center-x="175" center-y="69.5" image="data:image/png;base64,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" mediaID="Winner Popup_cst_Untitled"/><costume name="Untitled(2)" center-x="156" center-y="91" image="data:image/png;base64,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" mediaID="Winner Popup_cst_Untitled(2)"/><costume name="Untitled" center-x="178" center-y="46" image="data:image/png;base64,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" mediaID="New Game_cst_Untitled"/><costume name="Untitled" center-x="180" center-y="177" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAFlCAYAAAA0zrLCAAAAAXNSR0IArs4c6QAAARZJREFUeF7t3EEKwjAQheHkJip4S13VWxbUm6QkLbhRZrIUvmy6aYgMf968N0hr6ev6vI1ndq2XR3+17hvrkt23v9fux+b3UkqbO7nU4+Txs19t6uT1XPeTbc7VTcEQFpICEpCA5EsFXAwXw8VwMUYFiAExIAbEgBgI36EOgAQkIPlVAVaKlQpvB0hAAhJ+m5VipUIdAAlIQMJvfyrAPrKPoSKABCQgkTHYR/Yx1AGQgAQkMoaM4S/YOR3QMXSMHCmCqCAakgISkIDEtIKtYCtCHQAJSEBiWmFaYVqR0wEdQ8fIkSKICqIhKSABCUhMK9gKtiLUAZCABCSmFaYVphU5HdAxdIwcKYLonwbR/nXRibWexmdJN1dwMakuqVsuAAAAAElFTkSuQmCC" mediaID="Blue Wall_cst_Untitled"/><costume name="Untitled" center-x="8" center-y="178.5" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAFlCAYAAADia2inAAAAAXNSR0IArs4c6QAAAOZJREFUeF7t2jESRTAUBdCXHWTBOivGAhhjDCIZRRrF0f7xi0fuPUGacgzRcaQ5x9pxfviDMIMwg30NWQtm4D442sRaMAP3gbVw2lIeyAN5IA/kwbXblokyUSbKRJkoE+/PYPWCXtALekEv6AW98Hw7qRt1o27UjbpRN+pG3Vh+u8QHfMAHfMAHfMAHfMAH5QT4gA/4gA/4gA/4gA/44D0BRmIkRmIkRmIkRmIkRmKk2gQ4kRM5kRM5kRM5kRM5kRM5sT4BVmZlVmZlVmZlVmZlVmZlVmbl1gTsF36yX1hyjO2L9P3LBminy+q8bFcDAAAAAElFTkSuQmCC" mediaID="Red Wall_cst_Untitled"/><costume name="Untitled" center-x="8.5" center-y="62" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAB8CAYAAACPB1t+AAAAAXNSR0IArs4c6QAAAHVJREFUaEPt1CEOgDAUBcHfe+M4OEgEZkODm3pKspm+NTPHbJ41M9fmHeOSd0FNNCnvihNOOCkFOCmV7AknnJQCnJRK9oQTTkoBTkole8IJJ6UAJ6WSPeGEk1KAk1LJnnDCSSnASalkTzjhpBT40cn57f/PVzdS8nsCJ5JGwgAAAABJRU5ErkJggg==" mediaID="Player 1_cst_Untitled"/><costume name="Untitled(2)" center-x="15" center-y="96.5" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAADBCAYAAADYWABYAAAAAXNSR0IArs4c6QAAAOdJREFUeF7t1LERQFAURUFyMvpvRKawLzXyg2AV4I0z685j2Y7pg2ce6z4+uDs5/Fp1qaXOCsCVpX2+WGqpswJwZWn9x3DBlRWAK0trueCCKysAV5bWcsEFV1YAriyt5YILrqwAXFlaywUXXFkBuLK0lgsuuLICcGVpLRdccGUF4MrSWi644MoKwJWltVxwwZUVgCtLa7nggisrAFeW1nLBBVdWAK4sreWCC66sAFxZWssFF1xZAbiytJYLLriyAnBlaS0XXHBlBeDK0louuODKCsCVpbVccMGVFYArS/ur5Tpf+8zboQvKOZpwukgTIwAAAABJRU5ErkJggg==" mediaID="Player 1_cst_Untitled(2)"/><costume name="Untitled" center-x="8.5" center-y="62" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAB8CAYAAACPB1t+AAAAAXNSR0IArs4c6QAAAHVJREFUaEPt1CEOgDAUBcHfe+M4OEgEZkODm3pKspm+NTPHbJ41M9fmHeOSd0FNNCnvihNOOCkFOCmV7AknnJQCnJRK9oQTTkoBTkole8IJJ6UAJ6WSPeGEk1KAk1LJnnDCSSnASalkTzjhpBT40cn57f/PVzdS8nsCJ5JGwgAAAABJRU5ErkJggg==" mediaID="Player 2_cst_Untitled"/><costume name="Untitled(2)" center-x="15" center-y="96.5" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAADBCAYAAADYWABYAAAAAXNSR0IArs4c6QAAAOdJREFUeF7t1LERQFAURUFyMvpvRKawLzXyg2AV4I0z685j2Y7pg2ce6z4+uDs5/Fp1qaXOCsCVpX2+WGqpswJwZWn9x3DBlRWAK0trueCCKysAV5bWcsEFV1YAriyt5YILrqwAXFlaywUXXFkBuLK0lgsuuLICcGVpLRdccGUF4MrSWi644MoKwJWltVxwwZUVgCtLa7nggisrAFeW1nLBBVdWAK4sreWCC66sAFxZWssFF1xZAbiytJYLLriyAnBlaS0XXHBlBeDK0louuODKCsCVpbVccMGVFYArS/ur5Tpf+8zboQvKOZpwukgTIwAAAABJRU5ErkJggg==" mediaID="Player 2_cst_Untitled(2)"/><costume name="ball a" center-x="22.5" center-y="22.5" image="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjAiIGlkPSJMYXllcl8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjQ1cHgiIGhlaWdodD0iNDVweCIgdmlld0JveD0iMCAwIDQ1IDQ1IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA0NSA0NSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgPGc+CiAgICA8cmFkaWFsR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBjeD0iMjkuNzI3NSIgY3k9IjEzLjEzOTYiIHI9IjM4LjUyOTkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojRkZGRjk5Ii8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0ZGOTQwMCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxjaXJjbGUgZmlsbD0idXJsKCNTVkdJRF8xXykiIGN4PSIyMi41IiBjeT0iMjIuNSIgcj0iMjIuNSIvPgogIDwvZz4KPC9zdmc+" mediaID="Ball_cst_ball a"/></media></snapdata>