рдШреЛрдбрд╝реЗ рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛

рдпрд╣ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ p5.js рдореЗрдВ рдШреЛрдбрд╝реЗ рдХреА рдкреНрд░рдЧрддрд┐ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдкрд░ рдПрдХ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ

рднрд╛рдЧ I


рдПрдХ рдШреЛрдбрд╝рд╛ рдмрдирд╛рдПрдБ - рдЖрдпрддрд╛рдХрд╛рд░ рдЖрдпрдд ()ред рдШреЛрдбрд╝реЗ рдХреЛ рдПрдХ рдЧреНрд░реЗ рд╕рд░реНрдХрд▓ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ

rect(bx, by, boxSize, boxSize); fill(50); //  ellipse(bx+50,by+50,20,20); //  

рдШреЛрдбрд╝реЗ рдХреЛ рдЙрди рд╕рднреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдкрд░ рдкреЗрдВрдЯ рдХрд░рдиреЗ рджреЗрдВ рдЬрд┐рдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдпрд╣реА рд╣реИ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рдХреИрд╕реЗ рд╣реИред

рдЕрдЧрд▓рд╛, рдорд╛рдЙрд╕ рдХреЛ рдЬрд╛рд░реА рдХрд░рддреЗ рд╕рдордп рдорд╛рдЙрд╕ рдХреЛ рдкрд┐рдВрдЬрд░реЗ рдХреЗ рдХреЗрдВрджреНрд░ рдХреА рдУрд░ рдЖрдХрд░реНрд╖рд┐рдд рд╣реЛрдиреЗ рджреЗрдВред

StorX рдФрд░ storY рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рд╕реЗрд▓ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░реЗрдЧрд╛ рдЬрд╣рд╛рдВ рдХрд░реНрд╕рд░ рд╕реНрдерд┐рдд рд╣реИред рдпрджрд┐ рдмрд╛рдпрд╛рдБ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд░реНрд╕рд░ рдШреЛрдбрд╝реЗ рдХреЗ рдКрдкрд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореМрдЬреВрджрд╛ рд╕реЗрд▓ рдореЙрдб рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдЪрд░ storX рдФрд░ storY рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ :

  void mouseClick() { if (mouseX >= x && mouseX <= x+100 && mouseY >= y && mouseY <= y+100) { if (overBox && mousePressed && (mouseButton == LEFT)) { storX=x; //  x storY=y; //  y } } } 


рдЬрдм рдмрдЯрди рдЫреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ storX рдФрд░ storY рдХреЛ рдирд╛рдЗрдЯрдПрдХреНрд╕ рдФрд░ рдирд╛рдЗрдЯрд╕ рдирд╛рдЗрдЯреНрд╕ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  knightX=storX; knightY=storY; 

рдпрджрд┐ рджрдмрд╛рдП рдЧрдП рдмрдЯрди рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдорд╛рдЙрд╕рдкреЙрдиреНрдб рдмреВрд▓рд┐рдпрди рдЪрд░ рд╣реИ, рддреЛ рджрдмрд╛рдП рдЧрдП рдмрдЯрди рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХреЛрдИ рдЪрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ - рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдмрдирд╛рдПрдВ:
  boolean bool_mouseReleased; // ... void mouseReleased() { bool_mouseReleased=true; locked = false; knightX=storX; knightY=storY; } 

рдЕрдм, рдпрджрд┐ рдорд╛рдЙрд╕ рдмрдЯрди рджрдмрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛рдиреА bool_mouseReleased = true ), рдХреЛрд░реНрдбреНрд╕ рдФрд░ storY рдХреЗ рд╕рд╛рде рд╕реЗрд▓ рдкрд░ рдкреЗрдВрдЯ рдХрд░реЗрдВ
 if((bool_mouseReleased ) && (x==storX && y==storY )){ modColor=200; } 


рдкрд┐рдВрдЬрд░реЗ рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рдШреЛрдбрд╝реЗ рдХреЛ рдЦреАрдВрдЪрдирд╛
 //  bool_mouseReleased; storX; storY; boolean bool_mouseReleased; float storX; float storY; float knightX; float knightY; // size of canvas 600*600 int edgeOfCanvas=600; int knightSize = 100; boolean overKnight = false; boolean locked = false; float xOffset = 0.0; float yOffset = 0.0; int unit = 100; // -> width / unit; int unitSize=100; int count; Module[] mods; void setup() { size(600, 600); knightX = 0; knightY = 0; rectMode(CORNER); stroke(100); int wideCount = edgeOfCanvas / unit; int highCount = edgeOfCanvas / unit; count = wideCount * highCount; mods = new Module[count]; int index = 0; for (int y = 0; y < highCount; y++) { for (int x = 0; x < wideCount; x++) { mods[index++] = new Module(x*unit, y*unit); } } } void draw() { background(0); for (Module mod : mods) { mod.mouseClick(); mod.update(); } // // // // // Test if the cursor is over the box fill(200); if (mouseX > knightX && mouseX < knightX+knightSize && mouseY > knightY && mouseY < knightY+knightSize) { overKnight = true; } else { overKnight = false; } fill(200); rect(0,0,100,100); rect(knightX, knightY, knightSize, knightSize); fill(50); ellipse(knightX+50,knightY+50,20,20); } class Module { int x; int y; int modColor=0; // Contructor Module(int xT, int yT){ x = xT; y = yT; } void mouseClick() { if ((mouseX >= x && mouseX <= x+100 && mouseY >= y && mouseY <= y+100)&& (overKnight && mousePressed && (mouseButton == LEFT))) { storX=x; storY=y; } if( (bool_mouseReleased ) && (x==storX && y==storY ) ){ modColor=200; } } void update() { fill(modColor); rect(x, y, unitSize, unitSize); } } void mousePressed() { if(overKnight) { locked = true; } else { locked = false; } xOffset = mouseX-knightX; yOffset = mouseY-knightY; } void mouseDragged() { if(locked) { bool_mouseReleased=false; knightX = mouseX-xOffset; knightY = mouseY-yOffset; } } void mouseReleased() { bool_mouseReleased=true; locked = false; knightX=storX; knightY=storY; } 


рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ

рднрд╛рдЧ II


рдПрдХ рд░рджреНрдж рдХрд░реЗрдВ рдмрдЯрди рдЬреЛрдбрд╝реЗрдВред
рдмрдЯрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рд╣реИ ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реЗрд▓ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА IntList рд╕реВрдЪрд┐рдпрд╛рдВ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдШреЛрдбрд╝рд╛ рдЧреБрдЬрд░рд╛; рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдБ рдХреЛрдиреЗ рдореЗрдВ рд╣реА рдмрдЯрди рдЦреАрдВрдЪреЗрдВ:

 // list IntList listOfCoordinatesX; IntList listOfCoordinatesY; //button int buttonX=25, buttonY=525; int buttonSize = 50; boolean boolButton = false; 

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА
 listOfCoordinatesX = new IntList(); listOfCoordinatesY = new IntList(); listOfCoordinatesX.append(0); listOfCoordinatesY.append(0); 

рдЕрдЧрд▓реА рдЪрд╛рд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ (рдЬрдм рдорд╛рдЙрд╕ рдмрдЯрди рдХреЛ рдЫреЛрдбрд╝рддреЗ рд╣реБрдП) рд╣рдо рд╕реВрдЪреА / рд╕реНрдЯреИрдХ рдореЗрдВ рд╕реЗрд▓ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
  if(overKnight){ knightX=storX; knightY=storY; listOfCoordinatesX.append(int(knightX)); listOfCoordinatesY.append(int(knightY)); } 

рдЖрдЗрдП рдПрдХ рдмреВрд▓рд┐рдпрди рдлрдВрдХреНрд╢рди рдУрд╡рд░рдмрдЯрди () рдмрдирд╛рдПрдВ , рдЬреЛ рдорд╛рдЙрд╕ рдХрд░реНрд╕рд░ рдмрдЯрди рдХреЗ рдКрдкрд░ рдФрд░ рдмрдЯрди рдмрдЯрди рдХреЗ рдКрдкрд░ рд╣реИ, рддреЛ рд╕рд╣реА рд╣реИред
boolButton
  void buttonUpdate() { if ( overButton(buttonX, buttonY, buttonSize, buttonSize) ) { boolButton = true; } else { boolButton = false; } } boolean overButton(int x, int y, int width, int height) { if (mouseX >= x && mouseX <= x+width && mouseY >= y && mouseY <= y+height) { return true; } else { return false; } } 

рдЪрд░ рдФрд░ рд╕реВрдЪрд┐рдпрд╛рдБ рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реВрдк рдореЗрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИрдВ:
  println(boolButton); println(listOfCoordinatesX); println(listOfCoordinatesY); 


рдкреВрд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо
 // list IntList listOfCoordinatesX; IntList listOfCoordinatesY; //button int buttonX=25, buttonY=525; int buttonSize = 50; boolean boolButton = false; //mouse boolean bool_mouseReleased; // jump to rect center on button release float storX; float storY; float knightX; float knightY; // size of canvas int edgeOfCanvas=500; int knightSize = 100; boolean overKnight = false; boolean locked = false; float xOffset = 0.0; float yOffset = 0.0; int unit = 100; // -> width / unit; int unitSize=100; int count; Module[] mods; void setup() { size(500, 600); stroke(100); knightX = 0; knightY = 0; rectMode(CORNER); listOfCoordinatesX = new IntList(); listOfCoordinatesY = new IntList(); listOfCoordinatesX.append(0); listOfCoordinatesY.append(0); int wideCount = edgeOfCanvas / unit; int highCount = edgeOfCanvas / unit; count = wideCount * highCount; mods = new Module[count]; int index = 0; for (int y = 0; y < highCount; y++) { for (int x = 0; x < wideCount; x++) { mods[index++] = new Module(x*unit, y*unit); } } } void draw() { background(0); buttonUpdate(); for (Module mod : mods) { mod.mouseClick(); mod.update(); } // // // // // // // Test if the cursor is over the box fill(200); if (mouseX > knightX && mouseX < knightX+knightSize && mouseY > knightY && mouseY < knightY+knightSize) { overKnight = true; } else { overKnight = false; } fill(200); rect(0,0,100,100); rect(knightX, knightY, knightSize, knightSize); fill(50); ellipse(knightX+50,knightY+50,20,20); // draw button rect(buttonX,buttonY,buttonSize,buttonSize); if(boolButton && mousePressed) { fill(200); rect(buttonX,buttonY,buttonSize,buttonSize); } println(); println(storX); println(storY); println(boolButton); println(listOfCoordinatesX); println(listOfCoordinatesY); } class Module { int x; int y; int modColor=0; // Contructor Module(int xT, int yT){ x = xT; y = yT; } void mouseClick() { if (mouseX >= x && mouseX <= x+100 && mouseY >= y && mouseY <= y+100) { if (overKnight && mousePressed && (mouseButton == LEFT)) { storX=x; storY=y; // if(bool_mouseReleased ) {modColor=200;} } } if((bool_mouseReleased ) && (x==storX && y==storY )){ modColor=200; } } void update() { fill(modColor); rect(x, y, unitSize, unitSize); } } void mousePressed() { if(overKnight) { locked = true; } else { locked = false; } xOffset = mouseX-knightX; yOffset = mouseY-knightY; } void mouseDragged() { if(locked) { bool_mouseReleased=false; knightX = mouseX-xOffset; knightY = mouseY-yOffset; } } void mouseReleased() { bool_mouseReleased=true; locked = false; if(overKnight){ knightX=storX; knightY=storY; listOfCoordinatesX.append(int(knightX)); listOfCoordinatesY.append(int(knightY)); } } // button void buttonUpdate() { if ( overButton(buttonX, buttonY, buttonSize, buttonSize) ) { boolButton = true; } else { boolButton = false; } } boolean overButton(int x, int y, int width, int height) { if (mouseX >= x && mouseX <= x+width && mouseY >= y && mouseY <= y+height) { return true; } else { return false; } } 


рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ

рднрд╛рдЧ III


рдЬрдм рдЖрдк рд░рджреНрдж рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдкрд┐рдЫрд▓реА рд╕реЗрд▓ рдореЗрдВ рдХреВрджрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝реЗрдВред
рдорд╛рдЙрд╕рдкреНрд░реЗрд╕реНрдб () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд░рджреНрдж рдмрдЯрди рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдордиреНрд╡рдп рд╕реВрдЪреА (рд╕реНрдЯреИрдХ рдХреЗ рд╕рдмрд╕реЗ рдКрдкрд░) рд╕реЗ рдЕрдВрддрд┐рдо рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдпрджрд┐ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рддрддреНрд╡ рд╣реИрдВ:
 if(boolButton && listOfCoordinatesX.size()>1) { listOfCoordinatesX.pop(); listOfCoordinatesY.pop(); } 

рдЬрдм рдЖрдк рдореЙрдбреНрдпреВрд▓ рд╡рд░реНрдЧ рдХреЗ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ () рд╡рд┐рдзрд┐ рдореЗрдВ рд░рджреНрдж рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдордиреНрд╡рдп рд╕реВрдЪрд┐рдпреЛрдВ (рдвреЗрд░ рдХреЗ рд╕рдмрд╕реЗ рдКрдкрд░) рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ storX рдФрд░ storY рдЪрд░ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ:
 if(boolButton && mousePressed) { storX= listOfCoordinatesX.get(listOfCoordinatesX.size()-1); storY= listOfCoordinatesY.get(listOfCoordinatesY.size()-1); } 

рдЬрдм рдЖрдк рд░рджреНрдж рдмрдЯрди рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкрд┐рдЫрд▓реЗ рд╕рдордиреНрд╡рдп рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ рдФрд░ рд╕реЗрд▓ рдХреЛ рдореВрд▓ (рдХрд╛рд▓рд╛) рд░рдВрдЧ рдореЗрдВ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ:
 if(boolButton && bool_mouseReleased){ if(x==storX && y==storY ) { modColor=0; } } 

рдорд╛рдЙрд╕рд░реЗрд▓реНрдб () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдШреЛрдбрд╝реЗ рдХреЛ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд▓ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред
 if(boolButton) { knightX=storX; knightY=storY; } 


рдкреВрд░реНрдг рдХреЛрдб
 // list IntList listOfCoordinatesX; IntList listOfCoordinatesY; //button int buttonX=25, buttonY=525; int buttonSize = 50; boolean boolButton = false; //mouse boolean bool_mouseReleased; // jump to rect center on button release float storX; float storY; float knightX; float knightY; // size of canvas int edgeOfCanvas=500; int knightSize = 100; boolean overKnight = false; boolean locked = false; float xOffset = 0.0; float yOffset = 0.0; int unit = 100; // -> width / unit; int unitSize=100; int count; Module[] mods; void setup() { size(500, 600); stroke(100); knightX = 0; knightY = 0; rectMode(CORNER); listOfCoordinatesX = new IntList(); listOfCoordinatesY = new IntList(); listOfCoordinatesX.append(0); listOfCoordinatesY.append(0); int wideCount = edgeOfCanvas / unit; int highCount = edgeOfCanvas / unit; count = wideCount * highCount; mods = new Module[count]; int index = 0; for (int y = 0; y < highCount; y++) { for (int x = 0; x < wideCount; x++) { mods[index++] = new Module(x*unit, y*unit); } } } void draw() { background(0); buttonUpdate(); for (Module mod : mods) { mod.mouseClick(); mod.update(); } // // // // // // // Test if the cursor is over the box fill(200); if (mouseX > knightX && mouseX < knightX+knightSize && mouseY > knightY && mouseY < knightY+knightSize) { overKnight = true; } else { overKnight = false; } fill(200); rect(0,0,100,100); rect(knightX, knightY, knightSize, knightSize); fill(50); ellipse(knightX+50,knightY+50,20,20); // draw button rect(buttonX,buttonY,buttonSize,buttonSize); if(boolButton && mousePressed) { fill(200); rect(buttonX,buttonY,buttonSize,buttonSize); } /* println(); println(storX); println(storY); println(boolButton); println(listOfCoordinatesX); println(listOfCoordinatesY); */ } class Module { int x; int y; int modColor=0; // Contructor Module(int xT, int yT){ x = xT; y = yT; } void mouseClick() { if (mouseX >= x && mouseX <= x+100 && mouseY >= y && mouseY <= y+100) { if (overKnight && mousePressed && (mouseButton == LEFT)) { storX=x; storY=y; // if(bool_mouseReleased ) {modColor=200;} } } if((bool_mouseReleased ) && (x==storX && y==storY )){ modColor=200; } if(boolButton && mousePressed){ storX= listOfCoordinatesX.get(listOfCoordinatesX.size()-1); storY= listOfCoordinatesY.get(listOfCoordinatesY.size()-1); } if(boolButton && bool_mouseReleased){ if(x==storX && y==storY ){ modColor=0; } } } void update() { fill(modColor); rect(x, y, unitSize, unitSize); } } void mousePressed() { if(overKnight) { locked = true; // listOfCoordinatesX.append(int(knightX)); // listOfCoordinatesY.append(int(knightY)); } else { locked = false; } xOffset = mouseX-knightX; yOffset = mouseY-knightY; if(boolButton && listOfCoordinatesX.size()>1){ listOfCoordinatesX.pop(); listOfCoordinatesY.pop(); } } void mouseDragged() { if(locked) { bool_mouseReleased=false; knightX = mouseX-xOffset; knightY = mouseY-yOffset; } } void mouseReleased() { bool_mouseReleased=true; locked = false; if(overKnight){ knightX=storX; knightY=storY; listOfCoordinatesX.append(int(knightX)); listOfCoordinatesY.append(int(knightY)); } if(boolButton){ knightX=storX; knightY=storY; } } // button void buttonUpdate() { if ( overButton(buttonX, buttonY, buttonSize, buttonSize) ) { boolButton = true; } else { boolButton = false; } } boolean overButton(int x, int y, int width, int height) { if (mouseX >= x && mouseX <= x+width && mouseY >= y && mouseY <= y+height) { return true; } else { return false; } } 


рдЕрдм рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреА 5.рдЬреЗрдПрд╕ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдкреВрд░реНрд╡рд╡рдд рдХрд╛рд░реНрдп рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ p5.js рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ

Int [] рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕реВрдЪреА рд╕реВрдЪреА рдмрджрд▓реЗрдВред рдЖрдк рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдПрдкреЗрдВрдб () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕реВрдЪреА рдореЗрдВ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
  listOfCoordinatesX = append(listOfCoordinatesX,0); 

рдЖрдк рдХрд┐рд╕реА рд╕рд░рдгреА рд╕реЗ рдкреЙрдк () рд╡рд╛рд▓рд╛ рддрддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдПрдХ рдЫреЛрдЯрд╛ () рджреНрд╡рд╛рд░рд╛ рд╕рд░рдгреА рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдЖрдХрд╛рд░ () рдХреЗ рдмрдЬрд╛рдп рд╕рд░рдгреА рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рдВрдмрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдкреВрд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо
  // list int[] listOfCoordinatesX; int[] listOfCoordinatesY; //button int buttonX=25, buttonY=525; int buttonSize = 50; boolean boolButton = false; //mouse boolean bool_mouseReleased; // jump to rect center on button release float storX; float storY; float knightX; float knightY; // size of canvas int edgeOfCanvas=500; int knightSize = 100; boolean overKnight = false; boolean locked = false; float xOffset = 0.0; float yOffset = 0.0; int unit = 100; // -> width / unit; int unitSize=100; int count; Module[] mods; void setup() { size(500, 600); stroke(100); //   listOfCoordinatesX = new int[0]; //    listOfCoordinatesY = new int[0]; //   (0,0) listOfCoordinatesX = append(listOfCoordinatesX,0); listOfCoordinatesY = append(listOfCoordinatesY,0); knightX = 0; knightY = 0; rectMode(CORNER); int wideCount = edgeOfCanvas / unit; int highCount = edgeOfCanvas / unit; count = wideCount * highCount; mods = new Module[count]; int index = 0; for (int y = 0; y < highCount; y++) { for (int x = 0; x < wideCount; x++) { mods[index++] = new Module(x*unit, y*unit); } } } void draw() { background(0); buttonUpdate(); for (Module mod : mods) { mod.mouseClick(); mod.update(); } // // // // // // // Test if the cursor is over the box fill(200); if (mouseX > knightX && mouseX < knightX+knightSize && mouseY > knightY && mouseY < knightY+knightSize) { overKnight = true; } else { overKnight = false; } fill(200); rect(0,0,100,100); rect(knightX, knightY, knightSize, knightSize); fill(50); ellipse(knightX+50,knightY+50,20,20); // draw button rect(buttonX,buttonY,buttonSize,buttonSize); if(boolButton && mousePressed) { fill(200); rect(buttonX,buttonY,buttonSize,buttonSize); } // println(); // println(storX); // println(storY); // println(boolButton); // println(listOfCoordinatesX); // println(listOfCoordinatesY); } class Module { int x; int y; int modColor=0; // Contructor Module(int xT, int yT){ x = xT; y = yT; } void mouseClick() { if (mouseX >= x && mouseX <= x+100 && mouseY >= y && mouseY <= y+100) { if (overKnight && mousePressed && (mouseButton == LEFT)) { storX=x; storY=y; // if(bool_mouseReleased ) {modColor=200;} } } if((bool_mouseReleased ) && (x==storX && y==storY )){ modColor=200; } if(boolButton && mousePressed){ storX= listOfCoordinatesX[listOfCoordinatesX.length-1]; storY= listOfCoordinatesY[listOfCoordinatesY.length-1]; } if(boolButton && bool_mouseReleased){ if(x==storX && y==storY ){ modColor=0; } } } void update() { fill(modColor); rect(x, y, unitSize, unitSize); } } void mousePressed() { if(overKnight) { locked = true; } else { locked = false; } xOffset = mouseX-knightX; yOffset = mouseY-knightY; if(boolButton && listOfCoordinatesX.length>1){ // listOfCoordinatesX.pop(); // listOfCoordinatesY.pop(); listOfCoordinatesX=shorten(listOfCoordinatesX); listOfCoordinatesY=shorten(listOfCoordinatesY); } } void mouseDragged() { if(locked) { bool_mouseReleased=false; knightX = mouseX-xOffset; knightY = mouseY-yOffset; } } void mouseReleased() { bool_mouseReleased=true; locked = false; if(overKnight){ knightX=storX; knightY=storY; listOfCoordinatesX=append(listOfCoordinatesX,int(knightX)); listOfCoordinatesY=append(listOfCoordinatesY,int(knightY)); } if(boolButton){ knightX=storX; knightY=storY; } } // button void buttonUpdate() { if ( overButton(buttonX, buttonY, buttonSize, buttonSize) ) { boolButton = true; } else { boolButton = false; } } boolean overButton(int x, int y, int width, int height) { if (mouseX >= x && mouseX <= x+width && mouseY >= y && mouseY <= y+height) { return true; } else { return false; } } 


рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдПрдХ html рдкреЗрдЬ рдкрд░ js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВред
рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдШреЛрдбрд╝реЗ рдХреА рдЫрд╡рд┐ рдХреЗ рд╕рд╛рдеред
рдФрд░ рдпрд╣рд╛рдБ рдШреЛрдбрд╝рд╛ рдХреЗрд╡рд▓ рдЬреА рдЕрдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ ред рдмрд╛рдХреА рдЪрд╛рд▓реЗрдВ рдирд┐рд╖рд┐рджреНрдз рд╣реИрдВред

рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдЧреНрд░рдВрдереЛрдВ рдХреЗ рд╕рд╛рде рдЬреАрдердм рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВред

Source: https://habr.com/ru/post/hi444512/


All Articles