Valeri173

IP15

Feb 28th, 2022
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <script src="JSupr15/game.js"></script>
  7. <script src="JSupr15/levels.js"></script>
  8. <link rel="stylesheet" href="JSupr15/style-game.css">
  9. </head>
  10. <body>
  11. <script>
  12. function runLevel(level, Display){
  13. let display = new Display(document.body, level);
  14. let state = State.start(level);
  15. let ending = 1;
  16. let running = "yes";
  17.  
  18. return new Promise(resolve => {
  19. function escHandler(event){
  20. if(event.key != "Escape") return;
  21. event.preventDefault();
  22. if(running == "no"){
  23. running = "yes";
  24. runAnimation(frame);
  25. } else if(running == "yes"){
  26. running = "pausing";
  27. } else{
  28. running = "yes";
  29. }
  30. }
  31. window.addEventListener("keydown", escHandler);
  32. let arrowKeys = trackKeys(["ArrowLeft", "ArrowRight", "ArrowUp"]);
  33.  
  34. function frame(time){
  35. if(running == "pausing"){
  36. running = "no";
  37. return false;
  38. }
  39.  
  40. state = state.update(time, arrowKeys);
  41. display.syncState(state);
  42. if( state.status == "playing"){
  43. return true;
  44. } else if(ending > 0){
  45. ending -= time;
  46. return true;
  47. } else {
  48. display.clear();
  49. window.removeEventListener("keydown", escHandler);
  50. arrowKeys.unregister();
  51. resolve(state.status);
  52. return false;
  53. }
  54. }
  55. runAnimation(frame);
  56. });
  57. }
  58.  
  59. function trackKeys(keys){
  60. let down = Object.create(null);
  61. function track(event){
  62. if(keys.includes(event.key)){
  63. down[event.key] = event.type == "keydown";
  64. event.preventDefault();
  65. }
  66. }
  67. window.addEventListener("keydown", track);
  68. window.addEventListener("keyup", track);
  69. down.unregister = () => {
  70. window.removeEventListener("keydown", track);
  71. window.removeEventListener("keyup", track);
  72. };
  73. return down;
  74. }
  75.  
  76. runGame(GAME_LEVELS, DOMDisplay);
  77. </script>
  78. </body>
  79. </html>
Advertisement
Add Comment
Please, Sign In to add comment