Advertisement
Guest User

Untitled

a guest
Jan 25th, 2015
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.75 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>square SNAKE</title>
  5. <style>
  6. button{
  7. border: 1px solid #d7d7d7;
  8. padding: 5px;
  9. background-color: #f3f3f3;
  10. font-size: 2em;
  11. width: 120px;
  12. margin-left: 3px;
  13. }
  14. </style>
  15. </head>
  16. <body style="background: url('desk.png') no-repeat;">
  17. <div id="position" style="margin: 0px auto 0 auto; width: 708px;">
  18. <div id="title" style="background: url('name.png') no-repeat;height: 92px;"></div>
  19. <div id="display" style="background: url('display.png') no-repeat; height: 561px; z-index: -10; width: 708px; position: absolute;"></div>
  20. <canvas id="c" height="360" width="500" style="float: left; border: none; z-index: 10; margin: 34px 0px 0px 34px;"></canvas>
  21. <div id="debugTools" style="float: left; margin: 34px 0px 0px 0px; border-left: 1px solid #d7d7d7;width: 127px; height: 350px; background: url('back_side.png') repeat-x; padding: 5px;">
  22.  
  23. Score: <span id="score"></span><br />
  24. Lives: <span id="lives"></span><br />
  25. <!--Walls: <span id="walls"></span><br />
  26. X: <span id="x"></span><br />
  27.  
  28. Y: <span id="y"></span><br />
  29. Debug: <span id="debug"></span><br />-->
  30. <button onclick="start()">Start</button><br />
  31. <button onclick="stop()">Pause</button>
  32. <p>Snake is controlled with arrow keys. Goal of game is to eat the red food. Simple :)</p>
  33. <p><small>&copy; 2011 Milan Darjanin</small></p>
  34. </div>
  35. </div>
  36.  
  37. <script type="text/javascript">
  38. var canvas = document.getElementById("c"),
  39. context = canvas.getContext("2d");
  40.  
  41. context.fillStyle = 'white';
  42.  
  43.  
  44. context.strokeStyle = '#fa00ff';
  45. context.lineCap = 'round';
  46.  
  47. context.fillStyle = 'red';
  48. //context.fillRect(10,15,15,15);
  49. //context.fillRect(0,15,0,15);
  50. var i = 0;
  51. var x=0;
  52. var y=0;
  53. var food = [0,0];
  54. var intervalId = 0;
  55. var dir = [1,0];
  56. var map = new Array();
  57. var walls = [0,0,0,0];
  58. var outX = document.getElementById('x');
  59. var outY = document.getElementById('y');
  60. var outWalls = document.getElementById('walls');
  61. var outDebug = document.getElementById('debug');
  62. var outScore = document.getElementById('score');
  63. var outLives = document.getElementById('lives');
  64. var canvasSize = [500,360];
  65. var snakeSize = 10;
  66. var snakeColor = 'green';
  67. var backColor = 'white';
  68. var score = 0;
  69. var lives = 3;
  70. var interval = 200;
  71. var countFood = 0;
  72. var snake = new Array();
  73.  
  74. function render(){
  75. //i++;
  76. document.onkeyup = handleArrowKeys;
  77. move();
  78. context.fillStyle = backColor;
  79. context.fillRect(0, 0, canvasSize[0], canvasSize[1]);
  80. context.fillStyle = snakeColor;
  81. for (j = 0; j < snake.length; j++){
  82. context.fillRect(snake[j][0]*snakeSize,snake[j][1]*snakeSize,snakeSize,snakeSize);
  83. //document.write(j+': '+snake[j][0]+', '+snake[j][1]+'<br />');
  84. }
  85. if (countFood == 0) {placeFood();}
  86. context.fillStyle = 'red';
  87. context.fillRect(food[0]*snakeSize,food[1]*snakeSize,snakeSize,snakeSize);
  88. //outDebug.innerHTML =outDebug.innerHTML + '<br/>' + snake[0]+' <> '+food;
  89. if (snake[0][0]==food[0] && snake[0][1]==food[1]){
  90. snake.push([0,0]);
  91. score++;
  92. countFood = 0;
  93. if (score % 10 == 0 && score > 0) {changeSpeed();}
  94. //alert('food');
  95. }
  96.  
  97.  
  98. if (lives == 0) {
  99. endGame();
  100. }
  101. outScore.innerHTML = score;
  102. outLives.innerHTML = lives;
  103. //outWalls.innerHTML = wallsHits();
  104. //if (i == 10) {stop();}
  105.  
  106. }
  107. function changeSpeed(){
  108. if (interval > 10){
  109. interval = interval - 20;
  110. stop();
  111. start();
  112. }
  113. }
  114.  
  115. function move(){
  116. x += dir[0];
  117. y += dir[1];
  118.  
  119. old = snake;
  120. for (j = snake.length-1; j > 0; j--){
  121. snake[j] = old[j-1];
  122. }
  123. snake[0] = [x,y];
  124. handleCrashes();
  125. //document.write(snake[0] + ':' + snake[1] + ':' + snake[2] +'||' + old[0] + ':' + old[1] + ':' + old[2] + '<br />');
  126. //outX.innerHTML = x;
  127. //outY.innerHTML = y;
  128. //if (x >= 64) {dir[0] = -1;walls[1]++;}
  129. //if (x <= 0) {dir[0] = 1;walls[3]++;}
  130. //if (y >= 48) {dir[1] = -1;walls[2]++;}
  131. //if (y <= 0) {dir[1] = 1;walls[0]++;}
  132. }
  133. function endGame(){
  134. stop();
  135. alert('Game over. '+ '\n' +' Your score is '+score);
  136. resetSnake();
  137. score=0;
  138. lives=3;
  139. }
  140. function resetSnake(){
  141. x=0;
  142. y=0;
  143. dir =[1,0];
  144. snake = [];
  145. createSnake();
  146. }
  147. function handleCrashes(){
  148. if (snake[0][0] < 0 || snake[0][0]>49){
  149. lives--;
  150. resetSnake();
  151. }
  152. if (snake[0][1] < 0 || snake[0][1]>35){
  153. lives--;
  154. resetSnake();
  155. }
  156. for (i=1; i<snake.length;i++){
  157. if (snake[0] == snake[i]) {
  158. lives--;
  159. resetSnake();
  160. }
  161. // return;
  162. // return contains(snake,snake[0]);
  163. }
  164.  
  165. }
  166. function createSnake(){
  167. snake[0] = [x,y];
  168. snake[1] = [x-dir[0],y-dir[1]];
  169. snake[2] = [x-2*dir[0],y-2*dir[1]];
  170. //document.write('Snake: ' + snake[0] + ':' + snake[1] + ':' + snake[2] + '<br />');
  171. }
  172. function createMap(){
  173. for (i = 0; i<(canvasSize[0]/snakeSize);i++){
  174. for (j = 0; j<(canvasSize[1]/snakeSize);j++){
  175. map[i][j] = '#';
  176. }
  177.  
  178. }
  179. }
  180. function placeFood(){
  181. posX = Math.round(Math.random()*100);
  182. if (posX > 49) {
  183. posX = posX / 5;
  184. }
  185. posY = Math.round(Math.random()*100);
  186. if (posY > 34) {
  187. posY = posY / 5;
  188. }
  189. food = [Math.round(posX),Math.round(posY)];
  190. //outDebug.innerHTML = food + '<br />';
  191. countFood = 1;
  192. }
  193. function handleArrowKeys(evt) {
  194. evt = (evt) ? evt : ((window.event) ? event : null);
  195. if (evt) {
  196. switch (evt.keyCode) {
  197. case 37:
  198. dir[0] = -1;
  199. dir[1] = 0;
  200. break;
  201. case 38:
  202. dir[0] = 0;
  203. dir[1] = -1;
  204. break;
  205. case 39:
  206. dir[0] = 1;
  207. dir[1] = 0;
  208. break;
  209. case 40:
  210. dir[0] = 0;
  211. dir[1] = 1;
  212. break;
  213. }
  214. }
  215. }
  216.  
  217. document.onkeyup = handleArrowKeys;
  218.  
  219. function stop(){
  220. clearInterval(intervalId);
  221. intervalId=0;
  222. }
  223. function wallsHits(){
  224. return walls[0] + ',' + walls[1] + ',' + walls[2] + ',' + walls[3];
  225. }
  226. function start(){
  227. if (intervalId == 0){
  228. createSnake();
  229. intervalId = setInterval('render()',interval);
  230. }
  231. }
  232. //alert(i);
  233.  
  234.  
  235.  
  236. //context.fillRect(10,15,15,15);
  237. context.stroke();
  238. </script>
  239. </body>
  240. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement