Advertisement
Guest User

Untitled

a guest
Jul 10th, 2020
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. const context = document.getElementById("canvas");
  2. const ctx = context.getContext("2d");
  3.  
  4. const recountCoordinates = data => {
  5. if (data < 0) {
  6. return 400 - ((400 - data) % 400);
  7. }
  8.  
  9. if (data > 400) {
  10. return 0 + ((data - 400) % 400);
  11. }
  12.  
  13. return data;
  14. };
  15.  
  16. function drawVerticalLine(x, yStart, yEnd) {
  17. if (yStart > yEnd) {
  18. ctx.moveTo(x, 0);
  19. ctx.lineTo(x, yEnd);
  20.  
  21. ctx.moveTo(x, yStart);
  22. ctx.lineTo(x, 400);
  23. } else {
  24. ctx.moveTo(x, yStart);
  25. ctx.lineTo(x, yEnd);
  26. }
  27. }
  28.  
  29. function draw(dx = 0, dy = 0) {
  30. ctx.clearRect(0, 0, 400, 400);
  31. ctx.beginPath();
  32.  
  33. const leftX = recountCoordinates(120 + dx, true);
  34. const leftYStart = recountCoordinates(150 + dy);
  35. const leftYEnd = recountCoordinates(300 + dy);
  36. drawVerticalLine(leftX, leftYStart, leftYEnd);
  37.  
  38. const rightX = recountCoordinates(280 + dx, true);
  39. drawVerticalLine(rightX, leftYStart, leftYEnd);
  40.  
  41. const middleY = recountCoordinates(120 + dy);
  42. const middleXStart = recountCoordinates(150 + dx, true);
  43. const middleXEnd = recountCoordinates(250 + dx, true);
  44.  
  45. if (middleXStart > middleXEnd) {
  46. ctx.moveTo(0, middleY);
  47. ctx.lineTo(middleXEnd, middleY);
  48.  
  49. ctx.moveTo(middleXStart, middleY);
  50. ctx.lineTo(400, middleY);
  51. } else {
  52. ctx.moveTo(middleXStart, middleY);
  53. ctx.lineTo(middleXEnd, middleY);
  54. }
  55.  
  56. ctx.strokeStyle = "white";
  57. ctx.lineWidth = 16;
  58. ctx.stroke();
  59. ctx.closePath();
  60. }
  61.  
  62. draw();
  63.  
  64. let dx = 0;
  65. let dy = 0;
  66. const speed = 25;
  67.  
  68. function handle(e) {
  69. switch (e.code) {
  70. case "ArrowUp":
  71. dy -= speed;
  72. break;
  73. case "ArrowDown":
  74. dy += speed;
  75. break;
  76. case "ArrowLeft":
  77. dx -= speed;
  78. break;
  79. case "ArrowRight":
  80. dx += speed;
  81. break;
  82. default:
  83. return;
  84. }
  85.  
  86. draw(dx, dy);
  87. }
  88.  
  89. document.body.addEventListener("keydown", handle);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement