【processing】小代碼3


鼠標響應: mouseX, mouseY 鼠標的坐標

----------------------------------------------

void setup()
{
  size(300,300);
  smooth();
  background(200);
}

void draw()
{
  fill(255,255,0);
  rectMode(CENTER);
  rect(mouseX,mouseY,50,50);
}

隨着鼠標的移動畫方塊

-----------------------------------------------------

dist(x1,y1,x2,y2) 計算兩點之間的距離

void setup()
{
  size(300,300);
  smooth();
}

void draw()
{
  background(200);
  stroke(0);
  float d = dist(mouseX, mouseY,150,150);
  strokeWeight(d/15);
  fill(255);
  ellipse(150,150,d*2,d);
  strokeWeight(d/20);
  fill(255,200,0);
  ellipse(150,150,d,d);
  fill(0);
  noStroke();
  ellipse(150,150,d/3,d/3);
}

眼睛的大小會隨着鼠標位置改變

------------------------------------------------------------------

pmouseX,pmouseY: 鼠標的上一個坐標點

void setup()
{
  size(300,300);
  strokeWeight(5);
  smooth();
  stroke(255,0,80,100);
  background(0);
}
void draw()
{
  line(mouseX,mouseY,pmouseX,pmouseY);
}

畫出鼠標的軌跡

---------------------------------------------------------

鼠標響應事件

void mousePressed(){} 等價於 void draw(){if(mousePressed){}}

void mouseMoved(){}

void mouseDragged(){}

void setup()
{
  size(600,300);
  smooth();
  background(125,0,255,100);
}
void draw()
{
  if(mousePressed)
  {
    stroke(0);
    fill(255,255,0);
    ellipse(mouseX,mouseY,25,25);
  }
}

鼠標按下時畫圓,一直按着不放就一直畫圓 不要邊框后更好看些

-------------------------------------------------------------------------------------------

void setup()
{
  size(300,300);
  smooth();
  background(125,0,255,100);
}
void draw()
{
}
void mouseMoved()
{
  stroke(255,255,0,100);
  rectMode(CENTER);
  fill(255,255,0,50);
  rect(mouseX,mouseY,50,50);
}
void mouseDragged()
{
  stroke(255,200,0,100);
  fill(255,100,0,50);
  ellipse(mouseX,mouseY,50,50);
}

鼠標移動畫方,鼠標拖動畫圓

-------------------------------------------------------------

mouseButton  含 LEFT, RIGHT, CENTER

void setup()
{
  size(300,300);
  smooth();
  background(204);
  rectMode(CENTER);
}

void draw()
{
  if(mousePressed)
  {
    if(mouseButton == LEFT)
    {
      fill(255);
    }
    else if(mouseButton==CENTER)
    {
      fill(0);
    }
    else
    {
      fill(100);
    }
    rect(mouseX,mouseY,50,50);
  }
}

按下鼠標不同鍵顏色不同

--------------------------------------------------------

鍵盤響應:

keyPressed 按鍵響應 void keyPressed(){} 或 void draw(){if(keyPressed){}}

key 特定鍵響應 在keyPressed基礎上加 if(key == 'a')

keyCode 功能鍵響應 包括 ALT, CONTROL, SHIFT,UP,DOWN,LEFT,RIGHT

int x = 150;
int y = 150;
void setup()
{
  size(300,300);
  smooth();
  background(204);
  rectMode(CENTER);
}
void draw()
{
  if(keyPressed && (key == CODED))
  {
    if(keyCode == LEFT)
    {
      x--;
    }
    else if(keyCode == RIGHT)
    {
      x++;
    }
    else if(keyCode == UP)
    {
      y--;
    }
    else if(keyCode == DOWN)
    {
      y++;
    }
  }
  ellipse(x,y,50,50);
}

---------------------------------------------------------------

隨機:random(10) 生成0-10的任意浮點數

        int(random(6,10)), 生成6 7 8 9中任意一個數

void setup()
{
  size(300,300);
  smooth();
  background(255);
  stroke(0,120);
  colorMode(HSB,360,100,100);
}
void draw()
{
  float d = random(50);
  fill(random(360),100,100,100);
  ellipse(random(300),random(300),d,d);
}

-------------------------------------------------------

限制 constrain(value,min,max); 限制value值在min-max范圍內

int x = 150;
int y = 150;
void setup()
{
  size(300,300);
  smooth();
}
void draw()
{
  background(127);
  fill(255);
  rect(50,50,200,200);
  fill(127);
  rect(100,100,100,100);
  float mx = constrain(mouseX,70,230);
  float my = constrain(mouseY,70,230); 
  fill(0);
  ellipse(mx,my,40,40);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM