• 【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);
    }

  • 相关阅读:
    策略模式
    装饰模式VS代理模式
    BufferedInputSream实现原理
    从字节码角度分析重载与重写
    函数sprintf真好用
    算法时间复杂度
    二项分布(Binomial Distribution)
    numpy中的tile函数
    图像缩放算法(最临近点插值算法、双线性内插值算法、双立方插值算法)
    C++ 类中成员函数的属性
  • 原文地址:https://www.cnblogs.com/dplearning/p/4022070.html
Copyright © 2020-2023  润新知