顯示具有 07160990_徐立愷 標籤的文章。 顯示所有文章
顯示具有 07160990_徐立愷 標籤的文章。 顯示所有文章

2020年12月21日 星期一

week15

 PVector user;

PVector Y, v=null;

void setup(){

  size(600,400);

  user = new PVector(100,300);

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

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

}

2020年12月7日 星期一

week13

 import hypermedia.net.*;

UDP udp;

void setup() {

  size(800, 800);

  udp=new UDP(this, 6000);

  udp.send("hello world","120.125.70.53",6100);

  

}

void draw() {

}

void mousePressed(){

  udp.send("mousePressed","120.125.70.53",6100);

}

2020年11月30日 星期一

week12

////////////Arduino 的程式////////////

#define C5 523

#define D5 587

#define E5 659

#define F5 698

#define G5 783

#define A5 880

#define B5 987

#define C6  1046

#define BUTTON 2

#define BUZZER 8

void setup() {

  Serial.begin(9600);

  pinMode(2,INPUT_PULLUP);

pinMode(8,OUTPUT);

tone(8,C5);

delay(1000);

tone(8,E5);

delay(1000);

noTone(8);

delay(1000);


}


void loop() {

  while(Serial.available()>0){

    int now=Serial.read();

    if(now=='1') tone(8,C5,100);

    if(now=='2') tone(8,D5,100);

    if(now=='3') tone(8,E5,100);

    if(now=='4') tone(8,F5,100);

    if(now=='5') tone(8,G5,100);

    if(now=='6') tone(8,A5,100);

    if(now=='7') tone(8,B5,100);

    if(now=='8') tone(8,C6,100);

  }

}


////////////Processing 的程式////////////


import processing.serial.*;

Serial myPort;

void setup() {

  size(800, 800);

  myPort=new Serial(this, "COM4", 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");

}

2020年11月23日 星期一

week 11

 今天除了展示期中作品,拿到了新的電腦--MAKER UNO!!

一開始就創造了音樂,太好玩啦~~


#define G4 392

#define A 440

#define B 493


#define C 523

#define D 587

#define E 659

#define F 698

#define G 783


#define BUTTON 2

#define BUZZER 8


int melody[] = {

  C,D,E,C,G,E,D,G,D,C,A,E,C,B,0,C,B,A,B,C,D,G4,C,D,E,F,F,E,D,C,D,0,C,D,E,C,G,E,D,G,D,C,A,E,C,B,0,C,B,A,B,C,D,G4,C,D,E,F,F,E,D,C,C

};


int noteDurations[] = {

  6,6,

  6,6,2,6,

  3,3,3,

  6,6,2,6,

  2,6,6,6,

  3,3,6,6,

  3,3,6,6,

  3,6,6,6,6,

  2,6,6,6,

  6,6,2,6,

  3,3,3,

  6,6,2,6,

  2,6,6,6,

  3,3,6,6,

  3,3,6,6,

  3,6,6,6,6,

  1

};


int pin;

int ledArrayHigh;

int ledArrayLow;

boolean mode = false;

boolean buttonPressed = false;


void setup()

{

  delay(1000);

  

  pinMode(BUTTON, INPUT_PULLUP);

  for (pin = 3; pin < 14; pin++) { 

    pinMode(pin, OUTPUT);

  }


  for (int thisNote = 0; thisNote < sizeof(melody)/2; thisNote++) {

    int noteDuration = 1000 / noteDurations[thisNote];

    tone(BUZZER, melody[thisNote], noteDuration);

    int pauseBetweenNotes = noteDuration * 1.30;


    for (pin = 3; pin < 14; pin++) { 

      int n=random(2);

    if(n==1)digitalWrite(pin, HIGH);

    else digitalWrite(pin, LOW);

  }

    delay(pauseBetweenNotes);

    noTone(BUZZER);

  }

}


void loop()

{

  for (pin = 0; pin < 5; pin++) {

    if (digitalRead(BUTTON) == LOW &&

        buttonPressed == false) {

      buttonPressed = true;

      mode = !mode;

      pin = 0;

      if (mode == false) {

        tone(BUZZER, C, 100);

        delay(100);

        tone(BUZZER, G, 100);

        delay(100);

        noTone(BUZZER);

      }

      else if (mode == true) {

        tone(BUZZER, G, 100);

        delay(100);

        tone(BUZZER, C, 100);

        delay(100);

        noTone(BUZZER);

      }

    }


    if (mode == false) {

      ledArrayHigh = 13 - pin;

      ledArrayLow = 7 - pin;

    }

    else if (mode == true) {

      ledArrayHigh = 9 + pin;

      ledArrayLow = 3 + pin;

    }

    digitalWrite(ledArrayHigh, HIGH);

    digitalWrite(ledArrayLow, HIGH);

    delay(100);

    digitalWrite(ledArrayHigh, LOW);

    digitalWrite(ledArrayLow, LOW);

    if (pin == 4) delay(100);

  }


  if (buttonPressed == true) {

    buttonPressed = false;

  }

}

2020年11月2日 星期一

week08



PImage img;

void setup(){

  size(238,212);

  img=loadImage("images.jpg");

}

void draw(){

  image(img,0,0);

}

void mouseMoved(){

  loadPixels();

  for(int i=0;i<width*height;i++){

    if(pixels[i]==#ffffff)print("1");

    else print("0");

  }

}  





2020年10月26日 星期一

week07


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(){

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

}


(EXTRA)

int A=30;
void setup() {
  size(500, 500);
}

void draw() {
  for (int x1=25; x1<=475; x1+=45) {
    for (int y1=25; y1<=475; y1+=45) {
      beginShape();
       if(y1%2==0){
          if(x1%2==0){
            A=20; 
            stroke(0,0,0);
          }
          else{
            A=40; 
            stroke(255,0,0);
          }
        }
        else{
          if(x1%2==0){
            A=30; 
            stroke(255,0,0);
          }
          else{
            A=30; 
            stroke(0,0,0);
          }
        }
        
      for (int angle=0; angle<360; angle+=120) {
        float angle2 = radians(angle+A);
        float x2 = x1+cos(angle2)*20;
        float y2 = y1+sin(angle2)*20;
        vertex(x2, y2);  
      }
      endShape(CLOSE);
      beginShape();
      for (int angle=0; angle<360; angle+=120) {
        if(y1%2==0){
          if(x1%2==0) A=20;
          else A=40;
        }
        else A=30;
        
        float angle2 = radians(angle+A);
        float x2 = x1+cos(angle2)*12;
        float y2 = y1+sin(angle2)*12;
        vertex(x2, y2);
      }
      endShape(CLOSE);
      beginShape();
      for (int angle=0; angle<360; angle+=120) {
        if(y1%2==0){
          if(x1%2==0) A=20;
          else A=40;
        }
        else A=30;
        
        float angle2 = radians(angle+A);
        float x2 = x1+cos(angle2)*4;
        float y2 = y1+sin(angle2)*4;
        vertex(x2, y2);
      }
      endShape(CLOSE);
    }
  }
}







2020年10月19日 星期一

week06 文字與圖片

 Processing 不只能在螢幕上插入圖片,文字其實也可以!

你可以使用:

fill(255,0,0);

textSize(40);

text("Hello",30,30);


另外,這個程式碼可以讓字對齊某邊

textAlign( X , Y );

X可填入 LEFT, CENTER 或 RIGHT其中一個

Y可填入 TOP, CENTER 或 BOTTOM其中一個

(CENTER的話還好,其他的位置反而比較容易搞混,得稍微注意一下)


接著要來介紹矩陣,首先來看一個例子:

int[][]A={

{1,0,1,0},

{0,1,0,1},

{1,0,1,0},

{0,1,0,1}};

size(400,400);

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

  for(int j=0;j<4;j++){

    if(A[i][j]==0)fill(0);

    else fill(255,0,0);

    rect(j*100,i*100,100,100);

  }

}


想放圖片?沒問題。只要宣告變數就可以了,但請別忘了先將素材丟進速寫本!

int[][]A={

{1,1,1,0},

{1,1,0,2},

{1,0,2,2},

{0,2,2,2}};

PImage bird,pig;

void setup(){

  size(400,400);

  bird=loadImage("bird.jpg");

  pig=loadImage("pig.png");

}

void draw(){

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

    else if(A[i][j]==2)image(pig,j*100,i*100,100,100);

    else fill(0);

    

    }

  }

}












2020年10月12日 星期一

week05 水果忍者

今天要來做個小遊戲啦~

不過今天在打程式的時候忽然停電了,資料都不見了...雖然說也沒太多進度


首先先下載一顆水果的圖片,加入速寫本,然後:

PImage img;

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

void setup(){

  size(500,500);

  img=loadImage("fruit.png");

}

void draw(){

  clear();

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

  x+=vx;

  y+=vy;

  vy+=0.98;

  

  if(y>500)

  {

    x=random(400); y=500; vx=random(-5,5); vy=-30;

  }

}


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(){

  clear();

  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; (★)

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

  

  if(fruitDie==1){

    x=random(100); y=500; vx=random(-5,5); vy=-30;

    fruitDie=0;

  }

}

追加動作偵測擴充 (必須要有動作才算切到)


int mouseMove=0;(宣告時)

 if(x<mouseX&&mouseX<x+100 && y<mouseY&&mouseY<y+100 && mouseMove==1)fruitDie=1; (★替換)

if(mouseX==pmouseX && mouseY==pmouseY) mouseMove=0; (void draw()內追加)

else mouseMove=1; (void draw()內追加)



追加聲音擴充 (在此之前請先下載額外的library (共兩個:"Sound"+"Minim"))


import processing.sound.*;(最初兩行)

SoundFile sound1;(最初兩行)


sound1= new SoundFile(this, "Clean-Slice-1.wav"); (void setup()內追加)

if(x<mouseX&&mouseX<x+100 && y<mouseY&&mouseY<y+100) sound1.play(); fruitDie=1; (★替換)







(我的最終成果)

import processing.sound.*;

SoundFile sound1;

SoundFile sound2;

SoundFile sound3;

SoundFile sound4;


PImage img;

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

int fruitDie=0;

int point=0;

int mouseMove=0;

void setup(){

  size(500,500);

  sound1= new SoundFile(this, "blade-ink-2.wav");

  sound2= new SoundFile(this, "Bonus-Explosion-1.wav");

  sound3= new SoundFile(this, "Bonus-Explosion-3.wav");

  sound4= new SoundFile(this, "Bonus-Explosion-5.wav");

  img=loadImage("fruit.png");

}

void draw(){

  clear();

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

  x+=vx;

  y+=vy;

  point++;

  vy+=0.98;

  

  if(y>500) fruitDie=1;

  if(x<mouseX&&mouseX<x+100 && y<mouseY&&mouseY<y+100 && mouseMove==1)

  {

    sound1.play();

    fruitDie=1;

    if(point<10) sound4.play();

    else if(point<20) sound3.play();

    else if(point<30)sound2.play();

  }

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

  

  if(mouseX==pmouseX && mouseY==pmouseY) mouseMove=0;

  else mouseMove=1;

  

  if(fruitDie==1){

    

    x=random(400); y=500; vx=random(-5,5); vy=-30;

    fruitDie=0;

    point=0;

  }

}





2020年10月5日 星期一

week04 放上圖片及物理引擎

來放張圖片吧!
首先宣告img這個東西是一個image(圖片)
之後用image(圖片變數,x,y)將圖片放上去
x,y 後面再加個 #,# 可調整大小
如果要放第二張圖片基本上只需要改圖片名就可以了
但是要注意順序(此為貓先狗後)
讓圖片跑到鼠標的位置

瑪莉兄弟卷軸範例

PImage img;
PImage img2;

void setup(){
  size(996,400);
  img=loadImage("download.jpg");
  img2=loadImage("download1.jpg");
}
int x=0;
void draw(){
  if(mouseX>900)x-=20;
  image(img,x,-250,498*10,101*10);
  image(img2,mouseX-50/2,mouseY-50/2,50,50);

(應該是圖片太小了,否則畫質不會那麼差...)
先加個X軸移動可以讓它左右跑

加了Y軸移動就可以讓它上下跑
額外的if條件式讓這顆球有了碰撞物理偵測

DVD螢幕保護程式

float x=250,y=200;
float vx=2.0,vy=2.0;
PImage img;

void setup(){
  size(500,400);
  img=loadImage("dvd.png");
}
void draw(){
  clear();
  image(img,x-50,y-25,100,50);
  x+=vx;
  y+=vy;
  if(x>450||x<50)vx=-vx;
  if(y>375||y<25)vy=-vy;
}
(為什麼還沒碰到?什麼時候才會碰到?)



2020年9月21日 星期一

week02 選色&小畫家


隨機選色

 void setup(){

size(500, 500);

}


void draw(){

  if (mousePressed)background(random(0,255),random(0,255),random(0,255));

  else ;

}



小畫家+隨機選色



void setup(){

size(500, 500);

stroke(255,0,0);

strokeWeight(5);

}


void draw(){

  if (mousePressed){

    line(mouseX,mouseY,pmouseX,pmouseY);

    stroke(random(0,255),random(0,255),random(0,255));

  }

  else ;

}



小畫家+自由選色



void setup(){

size(600, 500);

stroke(255,0,0);

strokeWeight(8);

}


void draw(){

 fill(255, 0, 0);rect(0, 0, 100, 62.5);

  fill(0, 255, 0);rect(0, 62.5, 100, 62.5);

  fill(0, 0, 255);rect(0, 125, 100, 62.5);

  fill(255, 0, 255);rect(0, 187.5, 100, 62.5);

  fill(255, 255, 0);rect(0, 250, 100, 62.5);

  fill(0, 255, 255);rect(0, 312.5, 100, 62.5);

  fill(255, 255, 255);rect(0, 375, 100, 62.5);

  fill(0, 0, 0);rect(0, 437.5, 100, 62.5);

  if (mousePressed){

    if(mouseX<100){

      if(mouseY<62.5) stroke(255,0,0);

      else if (mouseY<125) stroke(0,255,0);

      else if (mouseY<187.5) stroke(0,0,255);

      else if (mouseY<250) stroke(255,0,255);

      else if (mouseY<312.5) stroke(255,255,0);

      else if (mouseY<375) stroke(0,255,255);

      else if (mouseY<437.5) stroke(255,255,255);

      else stroke(0,0,0);

    }

    else line(mouseX,mouseY,pmouseX,pmouseY);

  }

  else ;

}




存檔:

void keyPressed(){

  save("yes.png");

}

2020年9月14日 星期一

week01 如何畫OPEN醬的臉

企鵝太簡單了,來畫OPEN醬如何呢?你只需要一些簡單的圓形和橢圓形喔!


程式碼:

size(400,400);

background(255);

strokeWeight(5); //寬度=5

//設定完成


stroke(0);

fill(59,172,216);

ellipse(200,200,300,290);//藍圈

stroke(255);

fill(234,47,64);

ellipse(200,200,250,240);//紅圈

stroke(255);

fill(125,181,44);

ellipse(200,200,200,190);//綠圈

stroke(0);

fill(255);

rect(50,200,300,150);//切半

stroke(255);

fill(255);

rect(50,205,300,150);//切邊


stroke(0);

fill(255,244,214);

ellipse(200,200,150,140);//臉

stroke(0);

fill(0);

ellipse(165,190,20,20);//左眼

stroke(0);

fill(0);

ellipse(235,190,20,20);//右眼

stroke(0);

fill(255,244,214);

ellipse(200,230,50,30);//鼻子

stroke(252,244,214);

fill(255,244,214);

ellipse(201,226,50,30);//嘴

stroke(0);

fill(135,96,27);

ellipse(200,215,30,20);//切邊

//完成了~