2020年12月21日 星期一

Sherry: PVector 實作(angry bird)

   2020/12/14 

(一) PVector 解釋

1.  以前: float 宣告物件 x,y

2. 現在: 用PVector 把x,y 涵蓋進去 


(一) PVector 實作 (angry bird)

1.做出線和點





PVector user,arrow;

void setup(){

 size(600,400);

 user = new PVector(100,300);

 arrow = new PVector(100,300);

}


void draw(){

  background(255);

  stroke(#FFB366);

  line(user.x,user.y,arrow.x,arrow.y);

  textSize(40);

  fill(255,0,0);

  text("Y",arrow.x,arrow.y);

  fill(#3CB371);

  ellipse(user.x,user.y,20,20);

}


void mouseDragged(){

  user.x=mouseX;

  user.y=mouseY;

}


2.球反彈彈走



PVector user,arrow;

PVector fly=null;

void setup(){

 size(600,400);

 user = new PVector(100,300);

 arrow = new PVector(100,300);

}


void draw(){

  background(255);

  stroke(#FFB366);

  line(user.x,user.y,arrow.x,arrow.y);

  textSize(40);

  fill(255,0,0);

  text("Y",arrow.x,arrow.y);

  fill(#3CB371);

  ellipse(user.x,user.y,20,20);

  if(fly!=null) user.add(fly);

}


void mouseDragged(){

  user.x=mouseX;

  user.y=mouseY;

}


void mouseReleased(){

  PVector diff= PVector.sub(arrow,user);

  fly = diff.div(10);

}


3.會往下墜


PVector user,arrow;

PVector fly=null;

void setup(){

 size(600,400);

 user = new PVector(100,300);

 arrow = new PVector(100,300);

}


void draw(){

  background(255);

  stroke(#FFB366);

  if(mousePressed)

  line(user.x,user.y,arrow.x,arrow.y);

  textSize(40);

  fill(255,0,0);

  text("Y",arrow.x,arrow.y);

  fill(#3CB371);

  ellipse(user.x,user.y,20,20);

  if(fly!=null) {

    fly.y+=0.98;

    user.add(fly);

  }

}


void mouseDragged(){

  user.x=mouseX;

  user.y=mouseY;

}


void mouseReleased(){

  PVector diff= PVector.sub(arrow,user);

  fly = diff.div(4);

}

(一) MakerUno





for arduino: 

void setup() {

  pinMode(2,INPUT_PULLUP);

  Serial.begin(9600);


}


void loop() {

  int x = analogRead(A0);

  int y = analogRead(A1);

  int sw = digitalRead(2);

/*

  Serial.write(x);

  Serial.write('+');

  Serial.write(y);

  Serial.write('+');

  Serial.write(sw);

  Serial.write(' ');*/

  Serial.write(x/4);

  Serial.write(y/4);

  Serial.write(sw);

  delay(20);

}


for processing:

import processing.serial.*;

Serial myPort;


void setup(){

  size(256,256);

  myPort = new Serial(this,"COM6",9600);

}


int ballx=0,bally=0;


void draw(){

  background(255);

  if(myPort.available()>3){

    int x = myPort.read();

    int y = myPort.read();

    int sw= myPort.read();

    ballx = x;

    bally = y; 

  }

  fill(0);

  ellipse(ballx,bally,15,15);

}



沒有留言:

張貼留言