zoukankan      html  css  js  c++  java
  • processing学习整理---Structure

    1、语法介绍:与java很相近,可以认为就是java。

    2、运行命令(linux):

    processing-java --output=/tmp/processing-xx --run --force --sketch={问存在路径}

    3、sketch:

    每个sketch(草稿)就是保存在电脑相应文件夹中的,存放有相关processing代码的文件,后缀为:pde以及影音文件(另外存放在data文件夹中)。

    4、变量:

    1)、区分大小写。

    2)、类型包括:整形(int),浮点型(float),字符串(String),布尔型(boolean)

    5、坐标(Coordinates):

    x轴向右渐增,y轴向右渐增,z轴向外渐增。

    // Sets the screen to be 640 pixels wide and 360 pixels high 窗口大小
    size(640, 360);
    
    // Set the background to black and turn off the fill color背景颜色
    background(0);
    noFill();
    
    // The two parameters of the point() method each specify coordinates.
    // The first parameter is the x-coordinate and the second is the Y 
    stroke(255);//画笔颜色
    point(width * 0.5, height * 0.5);
    point(width * 0.5, height * 0.25); 
    
    // Coordinates are used for drawing all shapes, not just points.
    // Parameters for different functions are used for different purposes.
    // For example, the first two parameters to line() specify 
    // the coordinates of the first endpoint and the second two parameters 
    // specify the second endpoint
    stroke(0, 153, 255);
    line(0, height*0.33, width, height*0.33);
    
    // By default, the first two parameters to rect() are the 
    // coordinates of the upper-left corner and the second pair
    // is the width and height
    stroke(255, 153, 0);
    rect(width*0.25, height*0.1, width * 0.5, height * 0.8);//矩形
    View Code

    6、判断:

    < == > != >=  <=  && || ! 

    7、类:

    Object 和 class 

    8、3D:

    pushMatrix();

    translate(width/2,height/2);

    rotateX(1);

    box(150);

    popMatrix();

    lights();//在draw里面调用即可。

    9、循环:

    void setup(){
      size(600,600);
      background(0);
      
    }
    void draw(){
    for (int i=0;i<20;i++){
      for (int j=0;j<20;j++){
        if(i<10){
          fill(255,0,0);
        }else{
          fill(255,255,0);
        }
        ellipse(i*20,j*20,20,20);
      }
    }
    }

    10、函数

    函数可以写在函数里面:

    Ball myBall;
    void setup(){
      size(600,600);
      background(0);
      myBall = new Ball(500,100);
    }
    void draw(){
      myBall.display();
    }
    class Ball{
      int x= 500;
      int y= 500;
      //construct 
      Ball(int x, int y){
        this.x = x;
        this.y = y;
      }
     void display(){
       ellipse(x,y,20,20);
     }
    }

    11、Ball bounce and graity 跳跃和重力

    //When the shape hits the edge of the window, it reverses its direction.
    
    int rad = 60;        // Width of the shape
    float xpos, ypos;    // Starting position of shape    
    
    float xspeed = 2.8;  // Speed of the shape
    float yspeed = 2.2;  // Speed of the shape
    
    int xdirection = 1;  // Left or Right
    int ydirection = 1;  // Top to Bottom
    
    
    void setup() 
    {
      size(640, 360);
      noStroke();
      frameRate(30);
      ellipseMode(RADIUS);
      // Set the starting position of the shape
      xpos = width/2;
      ypos = height/2;
    }
    
    void draw() 
    {
      background(102);
      
      // Update the position of the shape
      xpos = xpos + ( xspeed * xdirection );
      ypos = ypos + ( yspeed * ydirection );
      
      // Test to see if the shape exceeds the boundaries of the screen
      // If it does, reverse its direction by multiplying by -1
      if (xpos > width-rad || xpos < rad) {
        xdirection *= -1;
      }
      if (ypos > height-rad || ypos < rad) {
        ydirection *= -1;
      }
    
      // Draw the shape
      ellipse(xpos, ypos, rad, rad);
    }

    12、数组

    myBalls = new Ball[100];
    for(int i=0;i<myBalls.length;i++){
    myBalls[i] = new Ball(xpos,ypos);
    }

    13、ArrayList

    ArrayList myList;

    mylist.add(new Ball(200,200));

    mylist.size();

    mylist.get(1);

    14、声明和注解

    // The size function is a statement that tells the computer 
    // how large to make the window.
    // Each function statement has zero or more parameters. 
    // Parameters are data passed into the function
    // and are used as values for telling the computer what to do.
    size(640, 360);
    
    // The background function is a statement that tells the computer
    // which color (or gray value) to make the background of the display window 
    background(204, 153, 0);
    View Code

    15、setup & draw

    int y = 100;
    
    // The statements in the setup() function 
    // execute once when the program begins //只执行一次
    void setup() {
      size(640, 360);  // Size must be the first statement
      stroke(255);     // Set line drawing color to white
      frameRate(30); //帧率
    }
    // The statements in draw() are executed until the 
    // program is stopped. Each statement is executed in 
    // sequence and after the last line is read, the first 
    // line is executed again.//一直执行直到程序停止,每一个变量以队列的方式被读取来执行,直到最后一个,然后又去执行第一个。
    void draw() { 
      background(0);   // Clear the screen with a black background
      y = y - 1; 
      if (y < 0) { 
        y = height; 
      } 
      line(0, y, width, y);  
    } 
    View Code

    16、No Loop:让draw()方法只执行一次。

    float y;
    
    // The statements in the setup() function 
    // execute once when the program begins
    void setup() 
    {
      size(640, 360);  // Size should be the first statement
      stroke(255);     // Set line drawing color to white
      noLoop();
      
      y = height * 0.5;
    }
    
    // The statements in draw() are executed until the 
    // program is stopped. Each statement is executed in 
    // sequence and after the last line is read, the first 
    // line is executed again.
    void draw() 
    { 
      background(0);   // Set the background to black
      y = y - 1; 
      if (y < 0) { y = height; } 
      line(0, y, width, y);  
    } 
    View Code

     17、Loop:让draw()方法持续执行。下面列子:在鼠标点击是让draw()持续执行:

    float y = 100;
     
    // The statements in the setup() function 
    // run once when the program begins
    void setup() {
      size(640, 360);  // Size should be the first statement
      stroke(255);     // Set stroke color to white
      noLoop();
      
      y = height * 0.5;
    }
    
    // The statements in draw() are run until the 
    // program is stopped. Each statement is run in 
    // sequence and after the last line is read, the first 
    // line is run again.
    void draw() { 
      background(0);   // Set the background to black
      line(0, y, width, y);  
      
      y = y - 1; 
      if (y < 0) { 
        y = height; 
      } 
    } 
    
    void mousePressed() {
      loop();
    }

    18、Redraw:让draw()执行一次。下面列子:当鼠标点击时,执行draw():

    float y;
     
    // The statements in the setup() function 
    // execute once when the program begins
    void setup() {
      size(640, 360);  // Size should be the first statement
      stroke(255);     // Set line drawing color to white
      noLoop();
      y = height * 0.5;
    }
    
    // The statements in draw() are executed until the 
    // program is stopped. Each statement is executed in 
    // sequence and after the last line is read, the first 
    // line is executed again.
    void draw() { 
      background(0);   // Set the background to black
      y = y - 4; 
      if (y < 0) { y = height; } 
      line(0, y, width, y);  
    } 
    
    void mousePressed() {
      redraw();
    }

    19、方法调用:

    void setup() {
      size(640, 360);
      background(51);
      noStroke();
      noLoop();
    }
    
    void draw() {
      drawTarget(width*0.25, height*0.4, 200, 4);
      drawTarget(width*0.5, height*0.5, 300, 10);
      drawTarget(width*0.75, height*0.3, 120, 6);
    }
    
    void drawTarget(float xloc, float yloc, int size, int num) {
      float grayvalues = 255/num;
      float steps = size/num;
      for (int i = 0; i < num; i++) {
        fill(i*grayvalues);
        ellipse(xloc, yloc, size - i*steps, size - i*steps);
      }
    }
    View Code

    20、Recursion (递归):

    void setup() {
      size(640, 360);
      noStroke();
      noLoop();
    }
    
    void draw() {
      drawCircle(width/2, 280, 6);
    }
    
    void drawCircle(int x, int radius, int level) {                    
      float tt = 126 * level/4.0;
      fill(tt);
      ellipse(x, height/2, radius*2, radius*2);      
      if(level > 1) {
        level = level - 1;
        drawCircle(x - radius/2, radius/2, level);
        drawCircle(x + radius/2, radius/2, level);
      }
    }
    View Code

    21、Create Graphics.(画图):

    PGraphics pg;
    
    void setup() {
      size(640, 360);
      pg = createGraphics(400, 200);
    }
    
    void draw() {
      fill(0, 12);
      rect(0, 0, width, height);
      fill(255);
      noStroke();
      ellipse(mouseX, mouseY, 60, 60);
      
      pg.beginDraw();
      pg.background(51);
      pg.noFill();
      pg.stroke(255);
      pg.ellipse(mouseX-120, mouseY-60, 60, 60);
      pg.endDraw();
      
      // Draw the offscreen buffer to the screen with image() 
      image(pg, 120, 60); 
    }
    View Code

     

  • 相关阅读:
    #1015 : KMP算法
    #1014 Trie树
    Type.IsContextful 说明
    判断.net中在windows系统下的字节序
    Python3 循环语句
    adb 脚本
    如何使用 adb 命令实现自动化测试
    python 字符串的方法和注释
    Android使用Fiddler模拟弱网络环境测试
    Android定位元素与操作
  • 原文地址:https://www.cnblogs.com/HendSame-JMZ/p/6050425.html
Copyright © 2011-2022 走看看