{"id":53346,"date":"2021-09-24T03:01:31","date_gmt":"2021-09-23T17:01:31","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=53346"},"modified":"2021-09-23T20:28:18","modified_gmt":"2021-09-23T10:28:18","slug":"rotation-game-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/rotation-game-tutorial\/","title":{"rendered":"Rotation Game Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/yaw_etc.html\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Rotation Game Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/rotation_tutorial.gif\" title=\"Rotation Game Tutorial\"  \/><\/a><p class=\"wp-caption-text\">Rotation Game Tutorial<\/p><\/div>\n<p>Can you guess what today&#8217;s tutorial is about if we say &#8230;<\/p>\n<ul>\n<li>yes, it&#8217;s about &#8220;rotation&#8221; &#8230;<\/li>\n<li>and another word for &#8220;rotation&#8221; could be &#8230; <font size=1><a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?v=uhiCFdWeQfA'>anyone, anyone<\/a><\/font> &#8230; bit cheeky, but, yes, <a target=_blank title='?' href='https:\/\/en.wikipedia.org\/wiki\/Tad_Low'>Tad (<font size=1>(it that Low?)<\/font><\/a> &#8230; on second thoughts, no &#8230; but how about you <a target=_blank title='?' href='https:\/\/en.wikipedia.org\/wiki\/Spinning_jenny'>James Hargreaves<\/a>?<br \/>\n<blockquote><p>\nYes, am after &#8220;spin&#8221; &#8230; good work!\n<\/p><\/blockquote>\n<\/li>\n<li> &#8230; and then there&#8217;s what we were showing as &#8220;spin and rotation type web applications&#8221; <a target=_blank title='?' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/earth-bearing-distance-missing-two-trip-tap-orientation-tutorial\/'>the day before yesterday<\/a>, isn&#8217;t there&#8230; <font size=1><a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?v=uhiCFdWeQfA'>anyone, anyone<\/a><\/font>?<br \/>\n<blockquote><p>\nYes, <a target=_blank title='?' href='https:\/\/www.wikiwand.com\/en\/Talk:Bullet_(typography)#\/section_History_of_the_bullet'>Regina<\/a>, am after &#8230;<\/p>\n<ul>\n<li><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/missing_two.html------------GETME\" title=\"missing_two.html\">today&#8217;s changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/missing_two.html------------GETME\" title=\"missing_two.html\">missing_two.html<\/a>&#8216;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/missing_two.html\" title=\"Click picture\">Missing Two live run<\/a> that is affected, but two other web applications as per &#8230;<\/li>\n<li><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/yaw_etc.html----GETME\" title=\"yaw_etc.html\">today&#8217;s changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/yaw_etc.html----GETME\" title=\"yaw_etc.html\">yaw_etc.html<\/a>&#8216;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/yaw_etc.html\" title=\"Click picture\">Device Orientation live run<\/a> &#8230; and &#8230;<\/li>\n<li><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/simon_says.html---GETME\" title=\"simon_says.html\">today&#8217;s changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/simon_says.html---GETME\" title=\"simon_says.html\">simon_says.html<\/a>&#8216;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/simon_says.html\" title=\"Click picture\">Simon Says live run<\/a><\/li>\n<\/ul>\n<p> &#8230; top supportive!\n<\/p><\/blockquote>\n<\/li>\n<li> &#8230; and then there&#8217;s what we were showing as a finishing URL <a target=_blank title='?' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/web-browser-on-ios-address-bar-url-appending-tutorial\/'>yesterday<\/a>, isn&#8217;t there&#8230; <font size=1><a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?v=uhiCFdWeQfA'>anyone, anyone<\/a><\/font>?<br \/>\n<blockquote><p>\nYes, <a target=_blank title='?' href='https:\/\/en.wikipedia.org\/wiki\/Wright_brothers'>Orville<\/a>, am after <a title='HTML5 Device Orientation Events Game Tutorial' href='#html5doegt'>&#8220;yaw_etc.html&#8221;<\/a> &#8230; excellent!\n<\/p><\/blockquote>\n<\/li>\n<li> &#8230; and a new game to play, <font size=1><a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?v=uhiCFdWeQfA'>perhaps<\/a><\/font>?<\/li>\n<\/ul>\n<p>&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<\/p>\n<blockquote><p>\nOkay, <a target=_blank title='?' href='https:\/\/en.wikipedia.org\/wiki\/Tad_Low'>Tad Low<\/a>, you&#8217;ve had your hand up for ten minutes now!\n<\/p><\/blockquote>\n<p>&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<\/p>\n<blockquote><p>\nOh.  Well, it&#8217;s around the corner, and remember to wash your hands after.  You may be excused.   <a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?v=uhiCFdWeQfA'>Anyone else, anyone<\/a>?\n<\/p><\/blockquote>\n<p>&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230;<br \/>\n&#8230; <font size=3>?<\/font><\/p>\n<blockquote><p>\nYes, <a target=_blank title='?' href='https:\/\/apps.apple.com\/nz\/app\/spin-the-bottle-game\/id1008110247'>Kyungjin Lee<\/a>, am after <font size=6 color=red>&#8220;Spin the <strike>Bottle<\/strike><\/font><font size=1 color=black>Mobile<\/font><font size=6 color=red> Device Game&#8221;<\/font> &#8230; yayyyyyyy!\n<\/p><\/blockquote>\n<p>Yes, be careful how you set it up so that your mobile device will not fall and\/or hit anything bad &#8230; carpet (with lots of room) is good &#8230; but &#8230;<\/p>\n<ol>\n<li>Tap <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/yaw_etc.html\" title=\"Click picture\">Device Orientation live run<\/a> link &#8230;<\/li>\n<li>Tap any &#8220;Start&#8221; and\/or &#8220;Allow&#8221; button(s) presented at the top left (and answer any permissions questions, pending) &#8230;<\/li>\n<li>Tap the new &#8220;Spin the Device&#8221; button &#8230;<\/li>\n<li>Select number of players &#8230; from 1 to 6 &#8230;<\/li>\n<li>Players take it in turns, starting with a score of 36000 each, to be given a nominated clockwise angle in degrees to spin, that player &#8230;\n<ul>\n<li>Taps their yellow &#8220;Not Ready&#8221; button &#8230; to effectively say, &#8220;am braced, ready to spin my device&#8221; &#8230;<\/li>\n<li>Player then &#8220;spins that device&#8221; so as to closely match that nominated number of clockwise degrees &#8230; then taps their (now) green button for the web application&#8217;s verdict &#8230;<\/li>\n<li>And the score reduces by any difference between the nominal number of (clockwise) degrees and the player&#8217;s spin number of (clockwise) degrees rotation detected <font size=1>(by good ol&#8217; window.<a target=_blank title='DeviceOrientationEvent' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/DeviceOrientationEvent'>DeviceOrientationEvent<\/a> event logic)<\/font><\/li>\n<\/ul>\n<\/li>\n<li>Next player&#8217;s <strike>turn<\/strike><font size=4>spin<\/font>!<\/li>\n<\/ol>\n<p>The new static HTML table element for the &#8220;Spin the Device&#8221; game, positioned just below any <i>permissions related buttons<\/i> up the top of the webpage, initialized to &#8230;<\/p>\n<p><code><br \/>\n  &lt;table id=mytable&gt;<br \/>\n  &lt;\/table&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; supported by the new relevant Javascript &#8220;Spin the Device&#8221; game functions and global var<font size=1>iables<\/font> &#8230;<\/p>\n<p><code><br \/>\nvar nump=0;<br \/>\nvar spinscores=[];<br \/>\nvar spingoes=[];<br \/>\nvar spinnext=0;<br \/>\nvar degtospin=0;<br \/>\n<r><br \/>\nfunction amready(whoin) {<br \/>\n  var who=eval(eval(whoin) + 0);<br \/>\n  \/\/alert('Who=' + who);<br \/>\n  if (document.getElementById('b' + who).innerHTML == 'Not Ready') {<br \/>\n  document.getElementById('b' + who).style.backgroundColor='green';<br \/>\n  document.getElementById('b' + who).innerHTML='Spin close to &lt;font size=4 color=red&gt;' + degtospin + '&amp;#176; clockwise &amp;#8753;&lt;\/font&gt;, then tap me again';<br \/>\n  initial_yaw=eval('0' + document.getElementById(\"doBearing\").innerHTML);<br \/>\n  if (document.getElementById('th0').innerHTML.indexOf('tap your ') != -1) {<br \/>\n  document.getElementById('th0').innerHTML=document.getElementById('th0').innerHTML.split('tap your ')[0] + 'spin now. Good luck!';<br \/>\n  }<br \/>\n  } else if (document.getElementById('b' + who).innerHTML != 'Ready') {<br \/>\n  \/\/alert('WHO=' + who);<br \/>\n  spingoes[eval(-1 + eval(who))]++;<br \/>\n  \/\/alert('' + Math.abs(eval(degtospin  - eval(eval(360 + eval('0' + document.getElementById('doBearing').innerHTML) - initial_yaw) % 360))) + ' via initial_yaw=' + initial_yaw + ' and curbrg=' +  document.getElementById('doBearing').innerHTML);<br \/>\n  spinscores[eval(-1 + eval(who))]-=Math.abs(eval(degtospin  - eval(eval(360 + eval('0' + document.getElementById('doBearing').innerHTML) - initial_yaw) % 360)));<br \/>\n  document.getElementById('goes' + who).innerHTML='' + spingoes[eval(-1 + eval(who))];<br \/>\n  document.getElementById('score' + who).innerHTML='' + spinscores[eval(-1 + eval(who))];<br \/>\n  document.getElementById('b' + who).style.backgroundColor='white';<br \/>\n  document.getElementById('b' + who).innerHTML='Not Ready';<br \/>\n  spinnext++;<br \/>\n  if (spinnext == nump) { spinnext=0; }<br \/>\n  gospin(spinnext);<br \/>\n  }<br \/>\n}<br \/>\n<br \/>\nfunction playspin(cnump) {<br \/>\n  var mytih='&lt;thead&gt;&lt;tr&gt;&lt;\/tr&gt;&lt;\/thead&gt;&lt;tfoot&gt;&lt;tr&gt;&lt;\/tr&gt;&lt;\/tfoot&gt;';<br \/>\n  if (cnump.trim() != '') {<br \/>\n    nump=eval(cnump);<br \/>\n    mytih=mytih.replace('&lt;thead&gt;', '&lt;thead&gt;&lt;tr&gt;&lt;th style=\"cursor:pointer;\" onclick=\"alert(this.title);\" title=\"Careful how you play so as not to drop your device nor have it hit something.  On carpet with lots of room is ideal here.\" id=th0 colspan=' + nump + '&gt;Welcome to the &lt;font title=\"Careful how you play so as not to drop your device nor have it hit something.  On carpet with lots of room is ideal here.\" color=purple size=5&gt;Spin the Device&lt;\/font&gt; game for ' + nump + '&lt;span id=s0&gt;&lt;\/span&gt;&lt;\/th&gt;&lt;\/tr&gt;');<br \/>\n    for (var ii=1; ii&lt;=nump; ii++) {<br \/>\n      spinscores.push(36000);<br \/>\n      spingoes.push(0);<br \/>\n      mytih=mytih.replace('&lt;\/tr&gt;&lt;\/thead&gt;', '&lt;th id=th' + ii + '&gt;&lt;div id=div' + ii + ' contenteditable=true&gt;Player ' + ii + '&lt;\/div&gt;&lt;\/th&gt;&lt;\/tr&gt;&lt;\/thead&gt;');<br \/>\n      mytih=mytih.replace('&lt;\/tr&gt;&lt;\/tfoot&gt;', '&lt;td id=td' + ii + '&gt;&lt;span id=score' + ii + '&gt;' + spinscores[eval(-1 + ii)] + '&lt;\/span&gt;&lt;span&gt;&nbsp;\/&nbsp;&lt;\/span&gt;&lt;span id=goes' + ii + '&gt;0&lt;\/span&gt;&lt;br&gt;&lt;br&gt;&lt;button title=\"Click when ready\" id=b' + ii + ' onclick=amready(' + ii + ');&gt;Not Ready&lt;\/button&gt;&lt;\/th&gt;&lt;\/tr&gt;&lt;\/tfoot&gt;');<br \/>\n    }<br \/>\n    document.getElementById('mytable').innerHTML=mytih;<br \/>\n    document.getElementById('mytable').border='20';<br \/>\n  }<br \/>\n  gospin(spinnext);<br \/>\n}<br \/>\n<br \/>\nfunction gospin(whoin) {<br \/>\n  var who=eval(eval(whoin) + 1);<br \/>\n  \/\/alert('who=' + who);<br \/>\n  document.getElementById('b' + who).style.backgroundColor='yellow';<br \/>\n  degtospin=eval(Math.floor(Math.random() * 358) + 1);<br \/>\n  document.getElementById('s0').innerHTML=' ... &lt;font color=blue size=4&gt;' + document.getElementById('div' + who).innerHTML + '&lt;\/font&gt; ... try to spin close to &lt;font color=red size=4&gt;' + degtospin + '&amp;#176; clockwise &amp;#8753;&lt;\/font&gt; &amp; tap your yellow Not Ready button to start';<br \/>\n}<br \/>\n<br \/>\nfunction spingame() {<br \/>\n  document.getElementById('dspin').innerHTML=\"&lt;select onchange='playspin(this.value);'&gt;&lt;option value=''&gt;Spin Game number of players below ...&lt;\/option&gt;&lt;option value='1'&gt;1&lt;\/option&gt;&lt;option value='2'&gt;2&lt;\/option&gt;&lt;option value='3'&gt;3&lt;\/option&gt;&lt;option value='4'&gt;4&lt;\/option&gt;&lt;option value='5'&gt;5&lt;\/option&gt;&lt;option value='6'&gt;6&lt;\/option&gt;&lt;\/select&gt;\";<br \/>\n}<br \/>\n<\/code><\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/rotation-game-tutorial\/'>Rotation Game Tutorial<\/a>.<\/p-->\n<hr>\n<p id='html5doegt'>Previous relevant <a target=_blank title='HTML5 Device Orientation Events Game Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/html5-device-orientation-events-game-tutorial\/'>HTML5 Device Orientation Events Game Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/yaw_etc.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"HTML5 Device Orientation Events Game Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/yaw_etc.jpg\"  \/><\/a><p class=\"wp-caption-text\">HTML5 Device Orientation Events Game Tutorial<\/p><\/div>\n<p>Today we&#8217;ve written a web application suiting mobile devices, but probably not many laptops. That is because we are harnessing the power of the Device Orientation (today) and Device Motion (at a later date) events new to HTML5, and very well explained at this <a target=_blank title='Device Orientation and Device Motion events' href='http:\/\/www.html5rocks.com\/en\/tutorials\/device\/orientation\/'>tremendous link<\/a>, thanks.<\/p>\n<p>If you use a mobile device regularly, you&#8217;ll probably have seen mobile and web applications making use of the fact that the mobile device being used is moving itself, and has its screen orientation an option, rather than an awkwardly controlled hardware setting.  These dynamisms of what we are talking about harnessing today, and we closely follow the leads of the code supplied in the link above, and build a &#8220;Device Orientation&#8221; game based on these HTML5 and Javascript based smarts.<\/p>\n<p>The bottom line of this is that with this functionality we can glean the 3 rotations of the mobile device relative to the world around it, termed as &#8230;<\/p>\n<ul>\n<li>&#8220;Alpha&#8221; &#8230; or Direction, or Bearing, or in shipping &#8220;motion&#8221; terms, <a target=_blank href=\"https:\/\/en.wikipedia.org\/wiki\/Ship_motions\" title='Ship motion information from Wikipedia ... thanks'>&#8220;yaw&#8221;<\/a><\/li>\n<li>&#8220;Beta&#8221; &#8230; or Tilt Front\/Back, or in shipping &#8220;motion&#8221; terms, <a target=_blank href=\"https:\/\/en.wikipedia.org\/wiki\/Ship_motions\" title='Ship motion information from Wikipedia ... thanks'>&#8220;pitch&#8221;<\/a><\/li>\n<li>&#8220;Gamma&#8221; &#8230; or Tilt Left\/Right, or in shipping &#8220;motion&#8221; terms, <a target=_blank href=\"https:\/\/en.wikipedia.org\/wiki\/Ship_motions\" title='Ship motion information from Wikipedia ... thanks'>&#8220;roll&#8221;<\/a><\/li>\n<\/ul>\n<p>Defining those, our game can take you into the cockpit of a plane, perhaps, to set you tasks you try to achieve as accurately as possible, in a &#8220;seconds survived&#8221; game of skill and perseverance.<\/p>\n<p>The HTML and Javascript programming source code you could call <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/yaw_etc.html--GETME\">yaw_etc.html<\/a> does not have to be played as a game in its <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/yaw_etc.html\">live run<\/a> form, and in that &#8220;non-game&#8221; mode of use, just gets you used to the way the three rotations above happen for mobile devices where the Javascript &#8230;<\/p>\n<p><code><br \/>\n&lt;script type='text\/javascript'&gt;<br \/>\nif (window.DeviceOrientationEvent) {<br \/>\n  \/\/ You're in business with HTML5 Device Orientation Events<br \/>\n}<br \/>\n&lt;\/script&gt;<br \/>\n<\/code> <\/p>\n<p> &#8230; which, happily, is the case for the <a target=_blank title='iPad screenshot' href='http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_setup.jpg'>iPad screenshot<\/a> of today&#8217;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/yaw_etc.jpg\" title='Tutorial picture is screenshot off iPad'>tutorial picture<\/a>.<\/p>\n<p>Image helping websites we&#8217;d like to thank are &#8230;<\/p>\n<ul>\n<li><a target=_blank title='Cockpit image' href='http:\/\/www.mobogenie.com\/download-ship-parking-simulation-3d-489590.html'>Cockpit<\/a><\/li>\n<li><a target=_blank title='Thanks to this compass needle image resource ... http:\/\/marylandlearninglinks.org\/wp-content\/themes\/learning-links\/img\/compass-needle.png' href='\/\/www.rjmprogramming.com.au\/HTMLCSS\/compass-needle.png'>Compass Needle<\/a><\/li>\n<\/ul>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d24134' onclick='var dv=document.getElementById(\"d24134\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/html5\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d24134' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d53346' onclick='var dv=document.getElementById(\"d53346\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/spinning\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d53346' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Can you guess what today&#8217;s tutorial is about if we say &#8230; yes, it&#8217;s about &#8220;rotation&#8221; &#8230; and another word for &#8220;rotation&#8221; could be &#8230; anyone, anyone &#8230; bit cheeky, but, yes, Tad ((it that Low?) &#8230; on second thoughts, &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/rotation-game-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,14,37],"tags":[174,3784,367,400,476,652,997,1071,1072,2319,3792,2891,1319,3793],"class_list":["post-53346","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-tutorials","tag-button","tag-deviceorientationevent","tag-dropdown","tag-event","tag-game","tag-javascript","tag-programming","tag-rotate","tag-rotation","tag-score","tag-spin","tag-spinning","tag-tutorial","tag-yaw"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/53346"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=53346"}],"version-history":[{"count":12,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/53346\/revisions"}],"predecessor-version":[{"id":53358,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/53346\/revisions\/53358"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=53346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=53346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=53346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}