Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-updates > by-pkgid > 32e951f007f30f654c2e19437a4aa0ce > files > 79

qtscript5-doc-5.12.6-1.mga7.noarch.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>pong.js Example File | Qt Script</title>
  <link rel="stylesheet" type="text/css" href="style/offline-simple.css" />
  <script type="text/javascript">
    document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css");
    // loading style sheet breaks anchors that were jumped to before
    // so force jumping to anchor again
    setTimeout(function() {
        var anchor = location.hash;
        // need to jump to different anchor first (e.g. none)
        location.hash = "#";
        setTimeout(function() {
            location.hash = anchor;
        }, 0);
    }, 0);
  </script>
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="main">
    <div class="main-rounded">
      <div class="navigationbar">
        <table><tr>
<td >Qt 5.12</td><td ><a href="qtscript-index.html">Qt Script</a></td><td ><a href="qtscript-script-context2d-example.html">Context2D Example</a></td><td >pong.js Example File</td></tr></table><table class="buildversion"><tr>
<td id="buildversion" width="100%" align="right"><a href="qtscript-index.html">Qt 5.12.6 Reference Documentation</a></td>
        </tr></table>
      </div>
    </div>
<div class="content">
<div class="line">
<div class="content mainContent">
<div class="sidebar"><div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">pong.js Example File</h1>
<span class="subtitle">script/context2d/scripts/pong.js</span>
<!-- $$$script/context2d/scripts/pong.js-description -->
<div class="descr"> <a name="details"></a>
<pre class="js">

  // globals
  playarea_canvas = document.getElementById('tutorial');
  playarea_canvas.resize(320,200);
  playarea = playarea_canvas.getContext('2d');
  //p1_scr = document.getElementById('p1_scr');
  //p2_scr = document.getElementById('p2_scr');
  //status_msg = document.getElementById('status');
  //debug = document.getElementById('debug');
  ball_direction = 0;
  up = -1;
  down = 1;

  //key codes
  key_up = 38;
  key_down = 40;
  key_W = 87;
  key_S = 83;
  key_pause = 32;

  speed = 2;                      //controls the speed of the ball
  paddle_inc = 10;        //how many pixels paddle can move in either direction
  pause = false;

  player_1 = 0;           //player IDs
  player_2 = 1;
  player_1_scr = 0;       //player scores
  player_2_scr = 0;
  player_1_direction = null;      //null = no movement whatsoever
  player_2_direction = null;

  pa = new Array();
  divider = new Array();
  paddle_1 = new Array();
  paddle_2 = new Array();
  ball = new Array();

  function sleep(numberMillis)
  {
      var now = new Date();
      var exitTime = now.getTime() + numberMillis;
      while (true) {
          now = new Date();
          if (now.getTime() > exitTime)
              return;
      }
  }

  function init()
  {
      pa['width'] = 150;
      pa['height'] = 140;
      pa['player_margin'] = 10;           //area behind player paddles
      pa['foreground'] = "#FFFFFF";
      pa['background'] = "#000000";

      divider['pos'] = pa['width']/2;
      divider['width'] = 4;

      paddle_1['width'] = 8;
      paddle_1['height'] = 64;
      paddle_1['x'] = pa['player_margin'];
      paddle_1['y'] = (pa['height'] /2 ) - (paddle_1['height'] / 2);

      paddle_2['width'] = 8;
      paddle_2['height'] = 64;
      paddle_2['x'] = (pa['width'] - pa['player_margin'] - paddle_2['width']);
      paddle_2['y'] = (pa['height'] /2 ) - (paddle_2['height'] / 2);

      ball['width'] = 10;
      ball['height'] = 10;
      ball['x'] = (pa['width']/2) - (ball['width'] / 2);
      ball['y'] = (pa['height']/2) - (ball['height'] / 2);

      ball_direction = Math.random() * 360;       //initialize ball direction, which is determined by angle, at random
      speed = 2;
  }

  function renderPlayarea()
  {
      playarea.beginPath();

      playarea.clearRect(0,0,pa['width'],pa['height']);
      playarea.fillStyle = pa['background'];
      playarea.strokeStyle = pa['foreground'];
      playarea.fillRect(0,0, pa['width'], pa['height']);

      //move paddles
      if(player_1_direction != null)
          {
              if(player_1_direction == up)
                  paddle_1['y'] = paddle_1['y'] - paddle_inc;
              else
                  paddle_1['y'] = paddle_1['y'] + paddle_inc;
          }
      if(player_2_direction != null)
          {
              if(player_2_direction == up)
                  paddle_2['y'] = paddle_2['y'] - paddle_inc;
              else
                  paddle_2['y'] = paddle_2['y'] + paddle_inc;
          }
      playarea.rect(paddle_1['x'],paddle_1['y'],paddle_1['width'],paddle_1['height']);
      playarea.rect(paddle_2['x'],paddle_2['y'],paddle_2['width'],paddle_2['height']);

      //move ball
      playarea.rect(ball['x'], ball['y'], ball['width'], ball['height']);
      ball['x'] = ball['x'] + Math.cos((ball_direction)*Math.PI/180) * speed;
      ball['y'] = ball['y'] + Math.sin((ball_direction)*Math.PI/180) * speed;

      playarea.fillStyle = pa['foreground'];
      playarea.fill();

      playarea.beginPath();
      //redraw divider
      playarea.lineWidth = divider['width'];
      playarea.lineTo(divider['pos'], 0);
      playarea.lineTo(divider['pos'], pa['height'] = 200);
      playarea.lineWidth = 1;

      playarea.stroke();
      playarea.closePath();
  }

  function testCollisions()
  {
      //make sure paddles don't go beyond play area
      if(((paddle_1['y'] <= 0) && (player_1_direction == up)) || ((paddle_1['y'] >= (pa['height'] - paddle_1['height'])) && (player_1_direction == down)))
          player_1_direction = null;
      if(((paddle_2['y'] <= 0) && (player_2_direction == up)) || ((paddle_2['y'] >= (pa['height'] - paddle_2['height'])) && (player_2_direction == down)))
          player_2_direction = null;

      //check to see if ball went beyond paddles, and if so, score accordingly and reset playarea
      if(ball['x'] <= 0)
          {
              setScore(player_2);
              init()
                  sleep(1000);
          }
      if(ball['x'] >= (pa['width'] - ball['width']))
          {
              setScore(player_1);
              init();
              sleep(1000);
          }

      //check to see if ball hit top or bottom wall. if so, change direction
      if((ball['y'] >= (pa['height'] - ball['height'])) || ball['y'] <= 0)
          ball_direction = -ball_direction;

      //check to see if the ball hit a paddle, and if so, change ball angle dependant on where it hit the paddle
      if((ball['x'] <= (paddle_1['x'] + paddle_1['width'])) && (ball['y'] >= paddle_1['y']) && (ball['y'] <= (paddle_1['y'] + paddle_1['height'])))
          {
              ball_direction = -ball_direction/2;
              speed += .5;
          }
      if(((ball['x'] + ball['width']) >= paddle_2['x']) && (ball['y'] >= paddle_2['y']) && (ball['y'] <= (paddle_2['y'] + paddle_2['height'])))
          {
              ball_direction = (180+ball_direction)/2;
              speed += .5;
          }
  }

  function setScore(p)
  {
      if(p == player_1)
          {
              player_1_scr++;
              //p1_scr.firstChild.nodeValue = player_1_scr;
          }
      if(p == player_2)
          {
              player_2_scr++;
              //p2_scr.firstChild.nodeValue = player_2_scr;
          }
  }

  //handle input
  document.onkeydown = function(ev)
  {
      switch(ev.keyCode)
      {
          case key_W:
          player_1_direction = up;
          break;
          case key_S:
          player_1_direction = down;
          break;
          case key_up:
          player_2_direction = up;
          break;
          case key_down:
          player_2_direction = down;
          break;
      }
  }

  document.onkeyup = function(ev)
  {
      switch(ev.keyCode)
      {
          case key_W:
          case key_S:
          player_1_direction = null;
          break;
          case key_up:
          case key_down:
          player_2_direction = null;
          break;
          case key_pause:
          if(pause == false)
          {
              clearInterval(game);
              //status_msg.style.visibility = "visible";
              pause = true;
          }
          else
          {
              game = setInterval(main, 25);
              //status_msg.style.visibility = "hidden";
              pause = false;
          }
          break;
      }
  }

  function main()
  {
      testCollisions();
      renderPlayarea();
  }

  init();
  game = setInterval(main, 25);

</pre>
</div>
<!-- @@@script/context2d/scripts/pong.js -->
        </div>
       </div>
   </div>
   </div>
</div>
<div class="footer">
   <p>
   <acronym title="Copyright">&copy;</acronym> 2019 The Qt Company Ltd.
   Documentation contributions included herein are the copyrights of
   their respective owners.<br/>    The documentation provided herein is licensed under the terms of the    <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation    License version 1.3</a> as published by the Free Software Foundation.<br/>    Qt and respective logos are trademarks of The Qt Company Ltd.     in Finland and/or other countries worldwide. All other trademarks are property
   of their respective owners. </p>
</div>
</body>
</html>