Guest User

Untitled

a guest
Oct 18th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.38 KB | None | 0 0
  1. /*
  2. * Play pong on the FIJI example images.
  3. *
  4. */
  5.  
  6. var _WIDTH = 800;
  7. var _HEIGHT = 600;
  8. var _X_PADDLE = 50;
  9. var _Y_PADDLE = _HEIGHT / 2;
  10. var _WIDTH_PADDLE = 10;
  11. var _HEIGHT_PADDLE = 40;
  12. var _RADIUS_BALL = 10;
  13. var _X_BALL = _WIDTH / 2;
  14. var _Y_BALL = _HEIGHT / 2;
  15. var _LIVES = 3;
  16. var _DIRECTION_BALL = 0;
  17. var _DELAY = 5;
  18. var _SCORE = 0;
  19. var _E=0, _NE=1, _N=2, _NW=3, _W=4, _SW=5, _S=6, _SE=7;
  20. var _START_SCORING=false;
  21.  
  22. var _DIR = getDirectory("imagej") + "/" + "samples";
  23. var _NR_OF_IMAGES = 0;
  24. var _IMAGES;
  25. if (File.exists(_DIR)) {
  26. _IMAGES = getFileList(_DIR);
  27. _NR_OF_IMAGES = _IMAGES.length;
  28. }
  29. if (!File.exists(_DIR) || _NR_OF_IMAGES==0) run("Cache Sample Images ");
  30. var _IMAGES = getFileList(_DIR);
  31.  
  32. var _CURRENT_IMAGE_INDEX = -1;
  33.  
  34. displayMessage();
  35.  
  36. while(livesLeft()) {
  37. initializeGame();
  38. while(ballInGame()) {
  39. updatePaddle();
  40. updateBall();
  41. draw();
  42. if (isKeyDown("alt")) {
  43. gotoNextLevel();
  44. setKeyDown("none");
  45. }
  46. }
  47. _LIVES--;
  48. }
  49. _CURRENT_IMAGE_INDEX = -1;
  50. initializeGame();
  51. setColor("red");
  52. setFont("SanSerif", 100);
  53. Overlay.drawString("GAME OVER!\n Your score: " + _SCORE, 10, _HEIGHT/2-10);
  54. Overlay.show();
  55. setOption("DisablePopupMenu", false);
  56.  
  57. function initializeGame() {
  58. autoUpdate(false);
  59. list = getList("image.titles");
  60. if (list.length>0) close();
  61. if (_CURRENT_IMAGE_INDEX == -1) newImage("PONG" + _LIVES + " lives remaining", "8-bit white", 800, 600, 1);
  62. else open(_DIR + "/" + _IMAGES[_CURRENT_IMAGE_INDEX]);
  63. _WIDTH = getWidth();
  64. _HEIGHT = getHeight();
  65. snapshot();
  66. setOption("DisablePopupMenu", true);
  67. setForegroundColor(0, 0, 0);
  68. setBackgroundColor(255, 255, 255);
  69. _X_BALL = _WIDTH / 2;
  70. _Y_BALL = _HEIGHT / 2;
  71. _DIRECTION_BALL = _W;
  72. _X_PADDLE = 50;
  73. _Y_PADDLE = _HEIGHT / 2;
  74. _START_SCORING = false;
  75. }
  76.  
  77. function draw() {
  78. reset();
  79. fillOval(_X_BALL, _Y_BALL, _RADIUS_BALL*2, _RADIUS_BALL*2);
  80. fillRect(_X_PADDLE, _Y_PADDLE, _WIDTH_PADDLE, _HEIGHT_PADDLE);
  81. drawString("score: " + _SCORE, _WIDTH-60, 30);
  82. updateDisplay();
  83. wait(_DELAY);
  84. }
  85.  
  86. function livesLeft() {
  87. result = (_LIVES>0);
  88. return result;
  89. }
  90.  
  91. function ballInGame() {
  92. result = (_X_BALL > _X_PADDLE-5);
  93. return result;
  94. }
  95.  
  96. function updatePaddle() {
  97. rightButton=4;
  98. leftButton=16;
  99. getCursorLoc(x, y, z, flags);
  100. if (flags&leftButton!=0 && _Y_PADDLE>0) _Y_PADDLE-=1;
  101. if (flags&rightButton!=0 && _Y_PADDLE+_HEIGHT_PADDLE<_HEIGHT) _Y_PADDLE+=1;
  102. }
  103.  
  104. function updateBall() {
  105. if (ballHitRightWall() && _DIRECTION_BALL==_E) _DIRECTION_BALL = _W;
  106. if (ballHitRightWall() && _DIRECTION_BALL==_SE) _DIRECTION_BALL = _SW;
  107. if (ballHitRightWall() && _DIRECTION_BALL==_NE) _DIRECTION_BALL = _NW;
  108.  
  109. if (ballHitUpperWall() && _DIRECTION_BALL==_NE) _DIRECTION_BALL = _SE;
  110. if (ballHitUpperWall() && _DIRECTION_BALL==_NW) _DIRECTION_BALL = _SW;
  111.  
  112. if (ballHitLowerWall() && _DIRECTION_BALL==_SW) _DIRECTION_BALL = _NW;
  113. if (ballHitLowerWall() && _DIRECTION_BALL==_SE) _DIRECTION_BALL = _NE;
  114.  
  115. if (ballHitPaddleInMiddle() && _DIRECTION_BALL==_W) _DIRECTION_BALL = _E;
  116. if (ballHitPaddleInMiddle() && _DIRECTION_BALL==_SW) _DIRECTION_BALL = _SE;
  117. if (ballHitPaddleInMiddle() && _DIRECTION_BALL==_NW) _DIRECTION_BALL = _NE;
  118.  
  119. if (_START_SCORING && ballHitRightWall()) {
  120. _SCORE++;
  121. if (_SCORE>0 && _SCORE%3==0) {
  122. gotoNextLevel();
  123. }
  124. }
  125.  
  126. if (ballHitPaddleInLowerPart()) {
  127. if (!_START_SCORING) _START_SCORING=true;
  128. _DIRECTION_BALL = _SE;
  129. }
  130. if (ballHitPaddleInUpperPart()) {
  131. if (!_START_SCORING) _START_SCORING=true;
  132. _DIRECTION_BALL = _NE;
  133. }
  134.  
  135. dx = 1;
  136. if (_DIRECTION_BALL==_NW || _DIRECTION_BALL==_SW || _DIRECTION_BALL==_W) dx = -1;
  137. if (_DIRECTION_BALL==_N || _DIRECTION_BALL==_S) dx = 0;
  138. dy = 1;
  139. if (_DIRECTION_BALL==_NE || _DIRECTION_BALL==_N || _DIRECTION_BALL==_NW) dy = -1;
  140. if (_DIRECTION_BALL==_E || _DIRECTION_BALL==_W) dy = 0;
  141. _X_BALL = _X_BALL + dx;
  142. _Y_BALL = _Y_BALL + dy;
  143. }
  144.  
  145. function ballHitRightWall() {
  146. if (_X_BALL+_RADIUS_BALL>=_WIDTH) return true;
  147. return false;
  148. }
  149.  
  150. function ballHitLowerWall() {
  151. if (_Y_BALL+_RADIUS_BALL>=_HEIGHT) return true;
  152. return false;
  153. }
  154.  
  155. function ballHitUpperWall() {
  156. if (_Y_BALL-_RADIUS_BALL<=0) return true;
  157. return false;
  158. }
  159.  
  160. function ballHitPaddleInUpperPart() {
  161. result = (_X_BALL<=_X_PADDLE) && (_Y_BALL+_RADIUS_BALL>=_Y_PADDLE) && (_Y_BALL+_RADIUS_BALL<_Y_PADDLE+(_HEIGHT_PADDLE/3));
  162. return result;
  163. }
  164.  
  165. function ballHitPaddleInLowerPart() {
  166. result = (_X_BALL<=_X_PADDLE) && (_Y_BALL+_RADIUS_BALL<_Y_PADDLE+_HEIGHT_PADDLE) && (_Y_BALL+_RADIUS_BALL>_Y_PADDLE+(2*_HEIGHT_PADDLE/3));
  167. return result;
  168. }
  169.  
  170. function ballHitPaddleInMiddle() {
  171. result = (_X_BALL)<=_X_PADDLE;
  172. result = result && _Y_BALL+_RADIUS_BALL>=_Y_PADDLE;
  173. result = result && _Y_BALL+_RADIUS_BALL<=_Y_PADDLE+_HEIGHT_PADDLE;
  174. result = result && !ballHitPaddleInUpperPart();
  175. result = result && !ballHitPaddleInLowerPart();
  176. return result;
  177. }
  178.  
  179. function gotoNextLevel() {
  180. _CURRENT_IMAGE_INDEX = (_CURRENT_IMAGE_INDEX + 1) % _NR_OF_IMAGES;
  181. initializeGame();
  182. }
  183.  
  184. function displayMessage() {
  185. showMessage(
  186. "<html><h1>Pong</h1><h2>How to play<ul>" +
  187. "<li>Move the mouse pointer into the image window" +
  188. "<li>Left Mouse Button - paddle up" +
  189. "<li>Right Mouse Button - paddle down" +
  190. "<li>Alt Key - skip level" +
  191. "<li>Esc Key - stop playing" +
  192. "</ul>"+
  193. "To start scoring hit the ball with the lower or upper part of the paddle first.<br>You need 3 points to advance to the next level."+
  194. "</p><p>Run 'File>Open Samples>Cache Sample Images' before playing <br>or put some images into the samples folder.</p></h2><h2>Have fun!!!</h2>");
  195. setKeyDown("none");
  196. }
Add Comment
Please, Sign In to add comment