顯示具有 07160386_陳可翔 標籤的文章。 顯示所有文章
顯示具有 07160386_陳可翔 標籤的文章。 顯示所有文章

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

2020年12月14日 星期一

week14

 


*旋轉旋鈕可以調聲音的頻率*
中間接A0    左邊接接地(GND)   右邊接5V
程式碼:
void setup() {
  pinMode(13,OUTPUT);
  pinMode(13,OUTPUT);
}

void loop() {
  int now = analogRead(A0);
  tone(8,now); 

  ///digitalWrite(13,HIGH);
  ///delay(now);

  ///digitalWrite(13,LOW);
  ///delay(now);
}


*旋轉旋鈕,LED燈會照順序亮*
程式碼:
void setup() {
  for(int i=2;i<=13;i++)
    pinMode(i,OUTPUT);
}

void loop() {
  int now=analogRead(A0);
  int leve1 = now/(512/13);
  for(int i=2;i<=13;i++){
      if(i<leve1) digitalWrite(i,HIGH);
      else digitalWrite(i,LOW);
    }
}


*旋轉旋鈕,打開監視器會出現英文字母A到N*
程式碼:
void setup() {
  for(int i=2;i<=13;i++){
    pinMode(i,OUTPUT);
  }
  Serial.begin(9600);
}

void loop() {
  int now=analogRead(A0);
  int leve1 = now/(1024/13);
  for(int i=2;i<=13;i++){
      if(i<leve1) digitalWrite(i,HIGH);
      else digitalWrite(i,LOW);
    }
    Serial.write(('A'+leve1));
    delay(100);
}


*紅調會跑*
程式碼:
Arduino:
void setup() {
  for (int i = 2; i <= 13; i++) {
    pinMode(i, OUTPUT);
  }
  Serial.begin(9600);
}

void loop() {
  int now = analogRead(A0);
  //int leve1 = now / (1024 / 13);
  int leve1 = now /4;
  for (int i = 2; i <= 13; i++) {
    if (i < leve1) digitalWrite(i, HIGH);
    else digitalWrite(i, LOW);
  }
  Serial.write(leve1);
  delay(20);
}
P語言:
import processing.serial.*;
Serial myPort;
void setup(){
  size(765,100);
  myPort = new Serial(this,"COM3",9600);
}
int level=0;
void draw(){
  background(255);
  fill(255,0,0);
  rect(0,0,level*3,100);
  if(myPort.available()>0){
    int now = myPort.read();
    level = now;
  }
}

2020年12月7日 星期一

week13

 1.joystick按下會發出聲音

程式碼:

void setup() 
{
  // put your setup code here, to run once:
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
}
int state=0;
void loop() 
{
  // put your main code here, to run repeatedly:
  if(digitalRead(2)==LOW)//當板上按鈕按下時或joystick按下時
    tone(8,2500,100); //發出聲音
  else
    noTone(8);
}


2.按下joystick會看到1和0表示按跟沒按
程式碼:
void setup() 
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
}
int state=0;//開關狀態
void loop() 
{
  // put your main code here, to run repeatedly:
  if(digitalRead(2)==LOW && state==0)
  {
    state=1;//當按鈕按下去時
    Serial.write("1");
  }
  if(digitalRead(2)==HIGH && state==1)
  {
    state=0;//按鈕沒按時
    Serial.write("0");
  }
  delay(100);
}
執行結果:
101010101010101010101010101010101010101010101010


3.按下joystick可以在processing看到背景變換顏色
processing程式碼:
import processing.serial.*;
Serial myPort;
void setup()
{
  size(300,200);
  myPort= new Serial(this, "COM6", 9600);
}
int button = 0;
void draw()
{
  if(myPort.available() > 0)
  {
    int now = myPort.read();
    println("現在你讀的其實是:"+now);
    if(now =='1')
      button=1;
    else
      button=0;
  }
  if(button==1)
    background(255,0,0);
  else
    background(255);
}
makeruno程式碼:
void setup() 
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
}
int state=0;
void loop() 
{
  // put your main code here, to run repeatedly:
  if(digitalRead(2)==LOW && state==0)
  {
    state=1;
    Serial.write("1");
  }
  if(digitalRead(2)==HIGH && state==1)
  {
    state=0;
    Serial.write("0");
  }
  delay(100);
}

4.利用網路程式送訊息到老師主機
程式碼:
import hypermedia.net.*;

UDP udp;
void setup()
{
  size(300,200);
  udp = new UDP(this, 6000);
  for(;;)
    udp.send("ERROR:404", "120.125.70.53",6100);
}
void draw()
{
  
}
void mousePressed()
{
  udp.send("ERROR:404", "120.125.70.53",6100);
}

2020年11月30日 星期一

第12週

複習上周發出聲音
程式碼:
#define Do 523
#define Mi 659
#define So 784
void setup() {
  // put your setup code here, to run once:
  pinMode(8,OUTPUT);///設定頻率8打開
  tone(8,Do);///不給長度,一直發出聲音
  delay(500);///延遲0.5秒,Do發出0.5秒
  tone(8,Mi);
  delay(500);
  tone(8,So);
  delay(500);
  noTone(8);///靜音
}

void loop() {
  // put your main code here, to run repeatedly:

}

沿伸1
*2是用BUTTON*
程式碼:
#define Do 523
#define Mi 659
#define So 784
void setup() {
  // put your setup code here, to run once:
  pinMode(2,INPUT_PULLUP);///預設2被拉起來
  pinMode(8,OUTPUT);
  tone(8,Do);
  delay(500);
  tone(8,Mi);
  delay(500);
  tone(8,So);
  delay(500);
  noTone(8);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(digitalRead(2)==LOW) tone(8,So,100);///按下BUTTON=2被按下,則發出聲音
}

沿伸2
*Arduino+p語言*
按視窗會發出聲音
Arduino:
#define Do 523
#define Mi 659
#define So 784
void setup() {
  Serial.begin(9600);
  // put your setup code here, to run once:
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
  tone(8,Do);
  delay(500);
  tone(8,Mi);
  delay(500);
  tone(8,So);
  delay(500);
  noTone(8);
}

void loop() {
  // put your main code here, to run repeatedly:
  while(Serial.available()>0){///有資料可送!
      Serial.read();
      tone(8,Mi,100);
    }
}
P語言:
import processing.serial.*;
Serial myPort;
void setup(){
  size(200,200);
  myPort = new Serial(this,"COM3",9600);
}
void draw(){
  
}
void mousePressed(){
  myPort.write("1");
}
延伸3
按數字1.3.5發出不通聲音
Arduino:
#define Do 523
#define Mi 659
#define So 784
void setup() {
  Serial.begin(9600);
  // put your setup code here, to run once:
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
  tone(8,Do);
  delay(500);
  tone(8,Mi);
  delay(500);
  tone(8,So);
  delay(500);
  noTone(8);
}

void loop() {
  // put your main code here, to run repeatedly:
  while(Serial.available()>0){///有資料可送!
      int now=Serial.read();
      if(now=='1') tone(8,Do,100);
      if(now=='3') tone(8,Mi,100);
      if(now=='5') tone(8,So,100);
    }
}
P語言:
import processing.serial.*;
Serial myPort;
void setup(){
  size(200,200);
  myPort = new Serial(this,"COM3",9600);
}
void draw(){
  
}
void keyPressed(){
  if(key=='1') myPort.write("1");
  if(key=='3') myPort.write("3");
  if(key=='5') myPort.write("5");
}
void mousePressed(){
  myPort.write("1");
}
延伸4
小鋼琴
Arduion:
#define Do 523
#define Re 587
#define Mi 659
#define Fa 698
#define So 784
#define La 880
#define Ti 988
#define Do2 1047///高音Do
void setup() {
  Serial.begin(9600);
  // put your setup code here, to run once:
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
  tone(8,Do);
  delay(500);
  tone(8,Mi);
  delay(500);
  tone(8,So);
  delay(500);
  noTone(8);
}

void loop() {
  // put your main code here, to run repeatedly:
  while(Serial.available()>0){///有資料可送!
      int now=Serial.read();
      if(now=='1') tone(8,Do);
      if(now=='2') tone(8,Re);
      if(now=='3') tone(8,Mi);
      if(now=='4') tone(8,Fa);
      if(now=='5') tone(8,So);
      if(now=='6') tone(8,La);
      if(now=='7') tone(8,Ti);
      if(now=='8') tone(8,Do2);
      if(now=='0') noTone(8);
    }
}
P語言:
import processing.serial.*;
Serial myPort;
void setup(){
  size(200,200);
  myPort = new Serial(this,"COM3",9600);
}
void draw(){
  
}
void keyPressed(){
  if(key=='1') myPort.write("1");
  if(key=='2') myPort.write("2");
  if(key=='3') myPort.write("3");
  if(key=='4') myPort.write("4");
  if(key=='5') myPort.write("5");
  if(key=='6') myPort.write("6");
  if(key=='7') myPort.write("7");
  if(key=='8') myPort.write("8");
}
void keyReleased(){
  myPort.write("0");///按鍵放開,聲音停下來
}
void mousePressed(){
  myPort.write("1");
}

2020年11月23日 星期一

發出聲音

 #define Do 523///設定聲音

#define Re 587

#define Mi 659

#define Fa 698

#define So 784


int melody[]={Mi,Fa,So,Re,Mi,Mi,Mi,Fa,So,Re,Do,Re,Do,Do};///聲音的排列

void setup() {

  // put your setup code here, to run once:

  delay(1000);

  pinMode(8,OUTPUT);///板子上第八個燈亮

  for(int i=0;i<14;i++){

      tone(8,melody[i],100);///100每個音符撥放時間

      delay(250);///每個音符之間延遲時間

    }

}


void loop() {

  // put your main code here, to run repeatedly:


}

2020年11月16日 星期一

1111

 PImage img;

PImage imgback;

PImage imgbrid;

int t=0;

void setup() {

  size(1500, 1000);

  img=loadImage("1.png");

  imgback=loadImage("back.png");

  imgbrid=loadImage("brid.png");

  background(255); 

  image(imgback, 30, 30, 125, 93);

  image(img, 361, 111, 777, 777);

}

void draw() {

  if (t%2==0)

  {

    if (mousePressed)

    {

      fill(255);

      ellipse(mouseX, mouseY, 30, 30);

    }

  } else

  {

    if (mousePressed)

    {

      fill(0);

      ellipse(mouseX, mouseY, 30, 30);

    }

  }

}

  void mouseReleased()

  { 

    t++;

  }





2020年10月26日 星期一

week07-畫三角形

week07


*用點畫出圓*



程式碼:
size(500,500);
for(int angle=0;angle<360;angle+=30){
  float angle2 = radians(angle);
  float x = 100+cos(angle2)*50;
  float y = 100+sin(angle2)*50;
  ellipse(x,y,2,2);
}
 


*利用三角函數畫三角形*


程式碼:
size(500,500);
beginShape();
for(int angle=0;angle<360;angle+=120){
  float angle2 = radians(angle);
  float x = 100+cos(angle2)*50;
  float y = 100+sin(angle2)*50;
  vertex(x,y);
}
endShape(CLOSE);

*滑鼠旋轉滑鼠,三角形跟著轉*

程式碼:
void setup(){
  size(500,500);
}
void draw(){
  //background(255);//清畫面
  beginShape();
  for(int angle=0;angle<360;angle+=120){
    float angle2 = radians(angle+mouseX);
    float x = 100+cos(angle2)*50;
    float y = 100+sin(angle2)*50;
    vertex(x,y);
  }
  endShape(CLOSE);
}
*三角形跟著滑鼠移動*
程式碼:
void setup(){
  size(500,500);
}
void draw(){
  ///background(255);//清畫面
  beginShape();
  for(int angle=0;angle<360;angle+=120){
    float angle2 = radians(angle+mouseX);
    float x = mouseX+cos(angle2)*50;
    float y = mouseY+sin(angle2)*50;
    vertex(x,y);
  }
  endShape(CLOSE);
}
*三角形會自己旋轉,滑鼠可以移動它*
*1sec = 60frame
程式碼:
void setup(){
  size(500,500);
}
void draw(){
  ///background(255);//清畫面
  beginShape();
  for(int angle=0;angle<360;angle+=120){
    float angle2 = radians(angle+frameCount);
    float x = mouseX+cos(angle2)*100;
    float y = mouseY+sin(angle2)*100;
    vertex(x,y);
  }
  endShape(CLOSE);
}
*接水果遊戲*
程式碼:
float [] fruitX=new float[10];
float [] fruitY=new float[10];
float kidX=150,kidY=450;
int score=0;
void setup(){
  size(500,500);
  for(int i=0;i<10;i++){
    fruitX[i] = random(50,450);
    fruitY[i] = -i*100;
   }
}
void draw(){
  background(255);
  rect(kidX,kidY,80,80);
  kidX=mouseX;
  for(int i=0;i<10;i++){
    ellipse(fruitX[i],fruitY[i],60,80);
    fruitY[i]++;
    if(fruitY[i]>kidY){///水果掉夠低
      if(kidX<fruitX[i] && fruitX[i]<kidX+80){///接到水果
        score+=10;///接住了就加分
        fruitY[i]=0;  fruitX[i]=random(50,450);///水果重生
      }else{
        fruitY[i]=0; fruitX[i]=random(50,450);///沒接住,水果重生
      }
    }
  }
}

2020年10月19日 星期一

week06-憤怒鳥

 week06

程式碼:
size(500,400);
rect(100,100,200,100);
fill(255,0,0);///字體顏色
textSize(40);
textAlign(LEFT,TOP);
text("Hello",100,100);

*中文、英文不能同時設定*

程式碼:
size(800,300);
fill(255,0,0);///字體顏色

PFont font1 = createFont("Times New Roman",30);
textFont(font1);
text("中文vs.English",30,30);

PFont font2 = createFont("標楷體",30);
textFont(font2);
text("中文vs.English",30,130);


程式碼:
int [][]A={  {1,1,1},
                    {0,1,0},
                    {0,1,1},
                    {1,1,1}    };///橫向是x軸,直向是y軸
      
size(300,400);
for(int i=0;i<4;i++){///y軸
  for(int j=0;j<3;j++){///x軸
    if(A[i][j]==0) fill(0);///0=黑色
    else fill(255,0,0);///1=紅色
    rect(j*100,i*100,100,100);///x*y,圖才是正確的
  }
}

*點選圖片,他會消失*

程式碼:
int [][]A={  {1,2,2,2},
                    {0,1,1,1},
                    {0,1,1,1},
                    {2,2,2,2} };///0=黑色,1=bird,2=pig
PImage  bird,pig;
void mousePressed(){///滑鼠點到,圖片消失
  int i = int(mouseY/100);
  int j = int(mouseX/100);
  A[i][j]=0;
}
void setup(){
  size(400,400);
  bird=loadImage("bird.png");
  pig=loadImage("pig.png");
}
void draw(){
  background(0);
  for(int i=0;i<4;i++){
    for(int j=0;j<4;j++){
      if(A[i][j]==1) image(bird,j*100,i*100, 100,100);
      if(A[i][j]==2) image(pig,j*100,i*100, 100,100);
    }
  }
  ellipse(mouseX,mouseY,25,25);
  text("mouseX:"+mouseX+"mouseY:"+mouseY,100,100);///顯示滑鼠的座標
}




2020年10月12日 星期一

week05-水果忍者

 





PImage img;

float x=100,y=500,vx=3,vy=-30;

int fruitDie=0;

void setup(){

  size(500,500);

  img = loadImage("fruit.png");

}

void draw(){

  background(0);

  image(img,x,y,100,100);

  x += vx;

  y +=vy;

  vy +=0.98;

  if(y>500) fruitDie=1;

  if(x<mouseX&&mouseX<x+100&&y<mouseY&&mouseY<y+100){

    fruitDie=1;

    player2.rewind();

    player2.play();

  } 

  stroke(255);line(mouseX,mouseY,pmouseX,pmouseY);

  if(fruitDie==1){

    if(frameCount%2==0){

      x=random(250);y=500;vx=random(2,3);vy=-random(28,32);

    }else{

      x=random(250);y=500;vx=random(2,3);vy=-random(28,32);

    }

    fruitDie=0;

  }

}

2020年10月5日 星期一

week04

 week02-顯示圖檔



PImage =>秀圖檔的函示

程式碼:
PImage img;
size(800,498);///設定畫面大小
img = loadImage("image.png");///在資料夾中找圖檔
image(img,0,0);///設定圖檔的位置

*前面小圖會跟著鼠標移動*
程式碼:
PImage img;
PImage img2;
void setup(){///只做一次
  size(800,498);
  img = loadImage("image.png");
  img2 = loadImage("loge.png");
}
void draw(){ 
  image(img,0,0);
  image(img2,mouseX-289/2,mouseY-169/2, 289, 169);///讓鼠標的點在圖的中心
}

*馬力歐向右,背景也會跟著移動*

程式碼:
PImage img;
PImage img2;
void setup(){
  size(800,375);
  img = loadImage("background.png");
  img2 = loadImage("mario.png");
}
int x=0;
void draw(){ 
  if(mouseX>700) x--;///鼠標大於700,背景移動
  image(img,x,0);
  image(img2,mouseX-289/2,mouseY-169/2, 289, 169);
}

*球彈跳(要合乎物理定律)*

程式碼:
float x=250, y=200;///為了精細,加入小數點
float vx=1.3, vy=-14;///初速為0
void setup(){
  size(500,400);
}
void draw(){
  background(255);
  ellipse(x,y,10,10);
  x+=vx; y+=vy;///牛頓第一運動定律,動者恆動
  vy+=0.98;///牛頓第二運動定律 f=ma 加速度
  if(x>500 || x<0) vx = -vx*0.85;///遇到邊界,反彈
  if(y>400 || y<0) vy = -vy*0.85;///遇到邊界,反彈
}





2020年9月21日 星期一

week02-小畫家

 week02

複習:

size(500,500);///視窗大小
background(#00B9FF);///背景
stroke(255,0,0);///圖形外框
fill(255,255,0);///填滿外框內圖形

rect(100,100,300,300);///(X座標,Y座標,長,寬)

本週進度:

*滑鼠按住*
*滑鼠放開*

///想讓畫面,mouse按下去,變紫色
///else變綠色(互動)
void setup(){///設定,只有第一個frame
  size(500,500);///畫布大小
}
void draw(){///更新=>畫圖,60秒frames
  if(mousePressed) background(255,0,255);///滑鼠按下去變紫色
  else background(0,255,0);///放開變綠色
}

///製作小畫家
void setup(){///設定,只有第一個frame
  size(500,500);///畫布大小
}
void draw(){///畫線
  if(mousePressed){
     line(mouseX,mouseY,pmouseX,pmouseY);///(x,y,舊x,舊y)
  }
}



///製作小畫家
void setup(){///設定,只有第一個frame
  size(600,500);///畫布大小
}
void draw(){
  fill(#ff0000); rect(0,0,100,100);///紅色調色盤的大小
  fill(#ffff00); rect(0,100,100,100);
  fill(#00ff00); rect(0,200,100,100);
  fill(#0000ff); rect(0,300,100,100);
  fill(#ff00ff); rect(0,400,100,100);
  if(mousePressed && mouseX<100){///調色盤區
    if(mouseY<100) stroke(#ff0000);///stroke=> 調色盤外框的顏色,筆刷顏色
    else if(mouseY<200) stroke(#ffff00);
    else if(mouseY<300) stroke(#00ff00);
    else if(mouseY<400) stroke(#0000ff);
    else if(mouseY<500) stroke(#ff00ff);
  }else if(mousePressed && mouseX>100){///畫圖區
    line(mouseX,mouseY,pmouseX,pmouseY);///畫線=> (x,y,舊x,舊y)
    }
}




///製作小畫家
void setup(){///設定,只有第一個frame
  size(600,500);///畫布大小
  strokeWeight(5);///調整筆刷,外框粗細
}

void keyPressed(){///按任意鍵下去
  save("Ben.png");///存檔
}

void draw(){
  fill(#ff0000); rect(0,0,100,100);///紅色調色盤的大小
  fill(#ffff00); rect(0,100,100,100);
  fill(#00ff00); rect(0,200,100,100);
  fill(#0000ff); rect(0,300,100,100);
  fill(#ff00ff); rect(0,400,100,100);
  if(mousePressed && mouseX<100){///調色盤區
    if(mouseY<100) stroke(#ff0000);///stroke=> 調色盤外框的顏色,筆刷顏色
    else if(mouseY<200) stroke(#ffff00);
    else if(mouseY<300) stroke(#00ff00);
    else if(mouseY<400) stroke(#0000ff);
    else if(mouseY<500) stroke(#ff00ff);
  }else if(mousePressed && mouseX>100){///畫圖區
    line(mouseX,mouseY,pmouseX,pmouseY);///畫線=> (x,y,舊x,舊y)
    }
}