Advertisement
Guest User

Untitled

a guest
Feb 20th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html>
  3.   <head>
  4.     <meta charset="utf-8">
  5.     <title>Kreski</title>
  6.     <style>
  7.       p {font-size : 12pt;}
  8.       svg {
  9.         margin: 0px auto;
  10.         display: block;
  11.       }
  12.     </style>
  13.     <script type="text/javascript" src="https://d3js.org/d3.v4.min.js"></script>
  14.   </head>
  15.   <body>
  16.  
  17. <center>
  18.     Wybierz kierunek:<br>
  19.     <button onclick="createLine(2);">Góra</button><br>
  20.     <button onclick="createLine(0);">Lewo</button>
  21.     <button onclick="createLine(1);">Prawo</button><br>
  22.     <button onclick="createLine(3);">Dół</button><br>
  23.     <span id="symetric"></span>
  24. </center>
  25.  
  26.  <script>
  27.  
  28.     var linePos = [];
  29.     var previous_click = -1;
  30.     var x_pos = 300;
  31.     var y_pos = 300;
  32.  
  33.     var svgContainer = d3.select("body").append("svg")
  34.         .attr("width", 600)
  35.         .attr("height", 600);
  36.  
  37.        
  38.    
  39.     function kit() {
  40.         var x_min = 300;
  41.         var x_max = 300;
  42.         for(var i = 0; i < linePos.length; i++) {
  43.             if(linePos[i].x1 > x_max) x_max = linePos[i].x1;
  44.             if(linePos[i].x2 > x_max) x_max = linePos[i].x2;
  45.             if(linePos[i].x1 < x_min) x_min = linePos[i].x1;
  46.             if(linePos[i].x2 < x_min) x_min = linePos[i].x2;
  47.         }
  48.  
  49.         var isSymetric = true;
  50.         for(var i = 0; i < linePos.length; i++){
  51.  
  52.             console.log("linePos[" + i + "] - x1: " + linePos[i].x1 + " x2: " + linePos[i].x2 + " y1: " + linePos[i].y1 + " y2:" + linePos[i].y2);
  53.  
  54.             var center = ((x_min+x_max)/2);
  55.  
  56.             var d1 = linePos[i].x1 - center;
  57.             var d2 = linePos[i].x2 - center;
  58.  
  59.             var temp = {
  60.                 x1:center - d2,
  61.                 x2:center - d1,
  62.                 y1:linePos[i].y2,
  63.                 y2:linePos[i].y1};
  64.  
  65.             var isTheSame = false;
  66.             for(var j = 0; j < linePos.length; j++)
  67.             {
  68.                 console.log("temp - x1: " + temp.x1 + " x2: " + temp.x2 + " y1: " + temp.y1 + " y2:" + temp.y2);
  69.                 console.log("linePos[" + j + "] - x1: " + linePos[j].x1 + " x2: " + linePos[j].x2 + " y1: " + linePos[j].y1 + " y2:" + linePos[j].y2);
  70.  
  71.                 if(temp.x1 == linePos[j].x1 && temp.x2 == linePos[j].x2 && temp.y1 == linePos[j].y1 && temp.y2 == linePos[j].y2)
  72.                 {
  73.                     isTheSame = true;
  74.                     break;
  75.                 }
  76.             }
  77.             if(!isTheSame){
  78.                 document.getElementById("symetric").innerHTML = "NIESYMETRYCZNY";
  79.                 isSymetric = false;
  80.                 break;
  81.             }
  82.         }
  83.  
  84.         if(isSymetric)
  85.         {
  86.             document.getElementById("symetric").innerHTML = "SYMETRYCZNY";
  87.         }
  88.     }
  89.  
  90.         // 0-lewo; 1-prawo; 2-góra; 3-dół;
  91.         // 4-góra/góra; 5-góra/prawo; 6-prawo/prawo; 7-prawo/dół; 8-dół/dół; 9-dół/lewo; 10-lewo/lewo; 11-lewo/góra; 12-nic
  92.     function createLine(direction){
  93.         switch(direction) {
  94.             case 0:
  95.                 switch(previous_click){
  96.                     case -1:
  97.                         previous_click = 0;
  98.                         break;
  99.                     case 0:
  100.                         createLine(10);
  101.                         break;
  102.                     case 1:
  103.                         createLine(12);
  104.                         break;
  105.                     case 2:
  106.                         createLine(11);
  107.                         break;
  108.                     case 3:
  109.                         createLine(9);
  110.                         break;
  111.                 }
  112.                 break;
  113.  
  114.             case 1:
  115.                 switch(previous_click){
  116.                     case -1:
  117.                         previous_click = 1;
  118.                         break;
  119.                     case 0:
  120.                         createLine(12);
  121.                         break;
  122.                     case 1:
  123.                         createLine(6);
  124.                         break;
  125.                     case 2:
  126.                         createLine(5);
  127.                         break;
  128.                     case 3:
  129.                         createLine(7);
  130.                         break;
  131.                 }
  132.                 break;
  133.  
  134.             case 2:
  135.                 switch(previous_click){
  136.                     case -1:
  137.                         previous_click = 2;
  138.                         break;
  139.                     case 0:
  140.                         createLine(11);
  141.                         break;
  142.                     case 1:
  143.                         createLine(5);
  144.                         break;
  145.                     case 2:
  146.                         createLine(4);
  147.                         break;
  148.                     case 3:
  149.                         previous_click = -1;
  150.                         break;
  151.                 }
  152.                 break;
  153.  
  154.             case 3:
  155.                 switch(previous_click){
  156.                     case -1:
  157.                         previous_click = 3;
  158.                         break;
  159.                     case 0:
  160.                         createLine(9);
  161.                         break;
  162.                     case 1:
  163.                         createLine(7);
  164.                         break;
  165.                     case 2:
  166.                         previous_click = -1;
  167.                         break;
  168.                     case 3:
  169.                         createLine(8);
  170.                         break;
  171.                 }
  172.                 break;
  173.  
  174.             case 4:
  175.                 var temp = {x1:x_pos, x2:x_pos, y1:y_pos, y2:y_pos-20};
  176.                 linePos.push(temp);
  177.                 previous_click = -1;
  178.                 update();
  179.                 y_pos -= 20;
  180.                 break;
  181.  
  182.             case 5:
  183.                 var temp = {x1:x_pos, x2:x_pos+20, y1:y_pos, y2:y_pos-20};
  184.                 linePos.push(temp);
  185.                 previous_click = -1;
  186.                 update();
  187.                 y_pos -= 20;
  188.                 x_pos += 20;
  189.                 break;
  190.  
  191.             case 6:
  192.                 var temp = {x1:x_pos, x2:x_pos+20, y1:y_pos, y2:y_pos};
  193.                 linePos.push(temp);
  194.                 previous_click = -1;
  195.                 update();
  196.                 x_pos += 20;
  197.                 break;
  198.  
  199.             case 7:
  200.                 var temp = {x1:x_pos, x2:x_pos+20, y1:y_pos, y2:y_pos+20};
  201.                 linePos.push(temp);
  202.                 previous_click = -1;
  203.                 update();
  204.                 y_pos += 20;
  205.                 x_pos += 20;
  206.                 break;
  207.  
  208.             case 8:
  209.                 var temp = {x1:x_pos, x2:x_pos, y1:y_pos, y2:y_pos+20};
  210.                 linePos.push(temp);
  211.                 previous_click = -1;
  212.                 update();
  213.                 y_pos += 20;
  214.                 break;
  215.  
  216.             case 9:
  217.                 var temp = {x1:x_pos, x2:x_pos-20, y1:y_pos, y2:y_pos+20};
  218.                 linePos.push(temp);
  219.                 previous_click = -1;
  220.                 update();
  221.                 y_pos += 20;
  222.                 x_pos -= 20;
  223.                 break;
  224.            
  225.             case 10:
  226.                 var temp = {x1:x_pos, x2:x_pos-20, y1:y_pos, y2:y_pos};
  227.                 linePos.push(temp);
  228.                 previous_click = -1;
  229.                 update();
  230.                 x_pos -= 20;
  231.                 break;
  232.  
  233.             case 11:
  234.                 var temp = {x1:x_pos, x2:x_pos-20, y1:y_pos, y2:y_pos-20};
  235.                 linePos.push(temp);
  236.                 previous_click = -1;
  237.                 update();
  238.                 y_pos -= 20;
  239.                 x_pos -= 20;
  240.                 break;
  241.         }
  242.     }
  243.  
  244.     function update() {
  245.         var lines = svgContainer.selectAll("line")
  246.             .data(linePos)
  247.             .enter()
  248.             .append("line");
  249.    
  250.         var lineAttributes = lines
  251.             .attr("x1", function(d) {return d.x1})
  252.             .attr("y1", function(d) {return d.y1})
  253.             .attr("x2", function(d) {return d.x2})
  254.             .attr("y2", function(d) {return d.y2})
  255.             .attr("stroke", "black")
  256.             .attr("stroke-width", 2);
  257.  
  258.         kit();
  259.     }
  260.  
  261.   </script>
  262.   </body>
  263. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement