Advertisement
lemansky

Untitled

Nov 30th, 2019
402
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 6.37 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>Document</title>
  6.     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
  7.     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  8.     <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  9.     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
  10.     <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
  11.     <script>
  12.  
  13.         document.addEventListener("DOMContentLoaded", function(event){
  14.             var canvas = document.getElementById("canvasId");
  15.             var canvasId = canvas.getContext("2d");
  16.  
  17.             var $x = 0;
  18.             var $y = 0;
  19.             var $width = 0;
  20.             var $height = 0;
  21.             var $color = 0;
  22.             var $shape = 0;
  23.             var $pcCoords = [];
  24.             var $counter = 0;
  25.             var $item = 0;
  26.  
  27.             canvas.addEventListener("click", function(evt){
  28.                 mouse = mouse_player1(evt);
  29.                 if($counter %2 == 0){
  30.                     for (var i = 0; i < $pcCoords.length; i++) {
  31.                         canvasId.beginPath();
  32.                         if($pcCoords[i].shape == "Rect"){
  33.                             canvasId.rect($pcCoords[i].x, $pcCoords[i].y, $pcCoords[i].width, $pcCoords[i].height);
  34.                         } else if($pcCoords[i].shape == "Circle"){
  35.                             canvasId.arc($pcCoords[i].x, $pcCoords[i].y, $pcCoords[i].width, 0, Math.PI*2);
  36.                         }
  37.                         canvasId.closePath();
  38.  
  39.                         if(canvasId.isPointInPath(mouse.cursor_x, mouse.cursor_y)){
  40.                             $item = i;
  41.                             $counter++;
  42.                             canvas.addEventListener("mousemove", handler);
  43.                         }
  44.                         if($counter%2==0){
  45.                             $counter--;
  46.                         }
  47.                     }
  48.                 } else {
  49.                     canvas.removeEventListener("mousemove", handler);
  50.                         $counter++;
  51.                 }
  52.  
  53.                 console.log($counter);
  54.             });
  55.  
  56.             var btn = document.getElementById("drawShape");
  57.             btn.addEventListener("click", function(){
  58.                 $x = parseInt(document.getElementById("posX").value);
  59.                 $y = parseInt(document.getElementById("posY").value);
  60.                 $width = parseInt(document.getElementById("sizeX").value);
  61.                 $height = parseInt(document.getElementById("sizeY").value);
  62.  
  63.                 var shape = document.getElementsByName("shape");
  64.                 if(shape[0].checked) {
  65.                     $shape = shape[0].value;
  66.                 } else if(shape[1].checked){
  67.                     $shape = shape[1].value;
  68.                 } else {
  69.                     $shape = Math.floor(Math.random()*2) == 1 ? "Rect" : "Circle";
  70.                 }
  71.  
  72.                 $color = "rgb(" +
  73.                 Math.floor(Math.random()*256) + ", " +
  74.                 Math.floor(Math.random()*256) + ", " +
  75.                 Math.floor(Math.random()*256) + ")";
  76.                 $pcCoords.push({"x": $x,
  77.                                 "y": $y,
  78.                                 "width": $width,
  79.                                 "height": $height,
  80.                                 "color" : $color,
  81.                                 "shape" : $shape});
  82.                 draw();
  83.             });
  84.  
  85.             function draw(){
  86.                 canvasId.clearRect(0,0, canvas.width, canvas.height);
  87.                 for (var i = 0; i < $pcCoords.length; i++) {
  88.                     canvasId.fillStyle = $pcCoords[i].color;
  89.                     if($pcCoords[i].shape == "Circle"){
  90.                         canvasId.beginPath();
  91.                         canvasId.arc($pcCoords[i].x,
  92.                                      $pcCoords[i].y,
  93.                                      $pcCoords[i].width, 0, Math.PI*2);
  94.                         canvasId.fill();
  95.                     } else {
  96.                         canvasId.fillRect($pcCoords[i].x,
  97.                                           $pcCoords[i].y,
  98.                                           $pcCoords[i].width,
  99.                                           $pcCoords[i].height);
  100.                     }
  101.  
  102.                 }
  103.  
  104.             }
  105.  
  106.             function mouse_player1(evt){
  107.                 var rect = canvas.getBoundingClientRect(); // взима позицията на платното в документа, в случай, че то не започва от горния ляв ъгъл
  108.                 var mouseX = evt.clientX - rect.left; // позицията на курсора по хоризонтала
  109.                 var mouseY = evt.clientY - rect.top; // позиията на курсора по вертикала
  110.                 return {
  111.                     cursor_x: mouseX,
  112.                     cursor_y: mouseY,
  113.                 } // фунцкията връша два параметъра, cursor_x и cursor_y
  114.             }
  115.  
  116.             canvas.addEventListener("mousemove", function(evt){
  117.                 mouse = mouse_player1(evt);
  118.  
  119.             });
  120.  
  121.             function handler(){
  122.                 if($pcCoords[$item].shape == "Rect"){
  123.                     $pcCoords[$item].x = mouse.cursor_x - $pcCoords[$item].width/2;
  124.                     $pcCoords[$item].y = mouse.cursor_y - $pcCoords[$item].height/2;
  125.                 } else if($pcCoords[$item].shape == "Circle"){
  126.                     $pcCoords[$item].x = mouse.cursor_x;
  127.                     $pcCoords[$item].y = mouse.cursor_y;
  128.                 }
  129.                 draw();
  130.             }
  131.  
  132.  
  133.         });
  134.  
  135.     </script>
  136.     <style type="text/css">
  137.     #canvasId{
  138.         background: black;
  139.     }
  140. </style>
  141. </head>
  142. <body class="p-2">
  143.     <div class="container-fluid">
  144.         <div class="row">
  145.             <div class="col-auto">
  146.                 <canvas id="canvasId" class="d-block" width="700" height="600"></canvas>
  147.             </div>
  148.             <div class="col-3">
  149.  
  150.                 <div class="form-group ">
  151.                     <div class="custom-control custom-radio d-inline-block mx-4">
  152.                         <input type="radio" id="shape1" name="shape" class="custom-control-input" value="Rect" >
  153.                         <label class="custom-control-label" for="shape1">Четириъгълник</label>
  154.                     </div>
  155.                     <div class="custom-control custom-radio d-inline-block mx-4">
  156.                         <input type="radio" id="shape2" name="shape" class="custom-control-input" value="Circle">
  157.                         <label class="custom-control-label" for="shape2">Окръжност</label>
  158.                     </div>
  159.                 </div>
  160.  
  161.                 <div class="form-group">
  162.                     <label> Координат по X </label>
  163.                     <input class="form-control" id="posX" value="100"></input>
  164.                 </div>
  165.                 <div class="form-group">
  166.                     <label> Координат по Y </label>
  167.                     <input class="form-control" id="posY" value="100"></input>
  168.                 </div>
  169.                 <div class="form-group">
  170.                     <label> Широчина </label>
  171.                     <input class="form-control" id="sizeX" value="200"></input>
  172.                 </div>
  173.                 <div class="form-group">
  174.                     <label> Височина </label>
  175.                     <input class="form-control" id="sizeY" value="20"></input>
  176.                 </div>
  177.                 <div class="form-group">
  178.                     <input type="button" class="btn btn-info btn-block" id="drawShape" value="Създай">
  179.                 </div>
  180.             </div>
  181.         </div>
  182.     </div>
  183. </body>
  184. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement