2020年12月21日 星期一

第15週


 *交PVector如何使用*

程式碼:

size(600,600);

PImage img=loadImage("img.jpg");

PVector pt=new PVector(10,20,0);

image(img,0,0);

println(pt.x);

///之前的

float userX=10,userY=20,userZ=0;

float user2X=30,user2Y=40,user2Z=0;

//現在可以以使用物件處理

PVector user=new PVector(10,20,0);

PVector user2=new PVector(30,40,0);


*做憤怒鳥,球會射出去*
程式碼:
PVector user; //(1)外面宣告,setup()及draw()都看的到
PVector Y,v=null;//彈弓,v飛行速度
void setup(){
  size(600,400);
  user = new PVector(100,300);//(2)只在setup() new一次
  Y = new PVector(100,300);
}
void draw(){
  background(255);
  line(user.x, user.y, Y.x, Y.y);
  textSize(40);
  fill(255,0,0);  text("Y", Y.x, Y.y);
  fill(255);  ellipse(user.x, user.y,20,20);//(3)用他的值
  if(v!=null) user.add(v);
}
void mouseDragged(){
  user.x=mouseX;
  user.y=mouseY;
}
void mouseReleased(){
  PVector diff = PVector.sub(Y, user);
  v = diff.div(10);
}

*控制按鈕的方向,球會跟著移動*
P語言:
import processing.serial.*;
Serial myPort;
void setup(){
  size(256,256);
  myPort = new Serial(this,"COM3",9600);
}
int ballX=0, ballY=0;
void draw(){
  if(myPort.available()>=3){
    int x = myPort.read();
    int y = myPort.read();
    int sw = myPort.read();
    ballX = x;
    ballY = y;
  }
  ellipse(ballX,ballY,10,10);
}
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/4);
  Serial.write(y/4);
  Serial.write(sw);
  delay(20);
}




*清畫面版本*
程式碼:
import processing.serial.*;
Serial myPort;
void setup(){
  size(256,256);
  myPort = new Serial(this,"COM3",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;
  }
  ellipse(ballX,ballY,10,10);
}

沒有留言:

張貼留言