顯示具有 08160830_駱靖安 標籤的文章。 顯示所有文章
顯示具有 08160830_駱靖安 標籤的文章。 顯示所有文章

2021年12月20日 星期一

作業中中

 









我做出了可以點滑鼠垂槌子了




程式碼:

PImage img,hammer1,hammer2;

void setup()

{

  size(500,500);

  img = loadImage("ground.jpg");

  imageMode(CENTER);

  hammer1=loadImage("hammer.png");

  hammer2=loadImage("hammer2.png");

  noCursor();

}


void draw(){

  background(255);

  image(img,250,305);

  if(mousePressed)image(hammer2,mouseX,mouseY,250,200);

  else image(hammer1,mouseX,mouseY,190,170);

}

2021年12月13日 星期一

作業中

 




程式碼:

PImage img;

void setup(){

  size(500,500);

  img = loadImage("ground.jpg");

  imageMode(CENTER);

}

void draw(){

  background(255);

  image(img,250,305);

}

2021年11月29日 星期一

忘了吃午餐

  • 老師介紹了gether town
  •  https://openprocessing.org/sketch/911326


💡今天要做一個可以走路的2D腳色💡

      💬可以在google搜尋 animated sprites 找到2D的腳色走路之類的東西







🅐到上面網址登錄並下載圖片











2021年11月22日 星期一

忘了吃午餐

 今天要做落下的金幣

  • 首先要做出落下的球

    






 

程式碼:

float x=250,y=250,vx=0,vy=3;

void setup(){

  size(500,600);

}

void draw(){

  background(255);

  ellipse(x,y,50,50);

  //y++;//落下速度

  //y=y+3;//y++的三倍速度

  y=y+vy;//vy是速度

}

 

  • 多了二號球做出落下的速度差別










 

程式碼:

float x=250,y=0,vx=0,vy=4;

float x2=150,y2=0,vx2=0,vy2=3;

void setup(){

  size(500,600);

}

void draw(){

  background(255);

  ellipse(x,y,50,50);

  ellipse(x2,y2,50,50);

  y=y+vy;//vy是速度

  y2=y2+vy2;

}


  • 使用陣列和迴圈來做出任一顆球

    








 

程式碼:

float []x={250,150,350,300};

float []y={0,50,80,100};

float []vx={0,0,0,0};

float []vy={3,2,2.5,4};

void setup(){

  size(500,600);

}

void draw(){

  background(255);

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

  ellipse(x[i],y[i],50,50); 

  y[i] = y[i] + vy[i];//vy是速度

  }

}

 

  • 碰到地板後回彈&再碰到天花板後會再回彈





程式碼:

float []x={250,150,350,300};

float []y={0,50,80,100};

float []vx={0,0,0,0};

float []vy={3,2,2.5,4};

void setup(){

  size(500,600);

}

void draw(){

  background(255);

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

  ellipse(x[i],y[i],50,50); 

  y[i] = y[i] + vy[i];//vy是速度

  //以下為回彈

  if(y[i]>600)vy[i]=-vy[i];//碰到地板後vy[i]會變成負的

  if(y[i]<0)vy[i]=-vy[i];//再碰到後會再變

  }

}


  • 做出一個碰到可以暫停的球


程式碼 :

//可以有任意組嗎

float []x={250,150,350,300};

float []y={0,50,80,100};

float []vx={0,0,0,0};

float []vy={3,2,2.5,4};

void setup(){

  size(500,600);

}

void draw(){

  background(255);

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

    fill(#F7E302);

  ellipse(x[i],y[i],50,50); 

  if(dist(mouseX,mouseY,x[i],y[i])<=50){

      continue;

    }

  y[i] = y[i] + vy[i];//vy是速度

  if(y[i]>600)vy[i]=-vy[i];//碰到地板後vy[i]會變成負的

  if(y[i]<0)vy[i]=-vy[i];//再碰到後會再變

  fill(255,0,0);ellipse(mouseX,mouseY,50,50);

  }

}


  • 碰到球就消失 




程式碼:

//可以有任意組嗎
float []x={250,150,350,300};
float []y={0,50,80,100};
float []vy={3,2,2.5,4};
boolean []dead={false,false,false,false};//false 0,true 1
void setup(){
  size(500,600);
}
void draw(){
  background(255);
  for(int i=0; i<4 ;i++){
  if(dist(mouseX,mouseY,x[i],y[i])<=50){
      dead[i]=true;//碰到就死掉
    }
      if(dead[i]==true)continue;//如果沒有死掉
      fill(#F7E302);ellipse(x[i],y[i],50,50); 
      y[i] = y[i] + vy[i];//vy是速度
      if(y[i]>600)vy[i]=-vy[i];//碰到地板後vy[i]會變成負的
      if(y[i]<0)vy[i]=-vy[i];//再碰到後會再變
    }

  fill(255,0,0);ellipse(mouseX,mouseY,50,50);
  
}


 

  • 增加球數



 程式碼:

//可以有任意組嗎

float []x;

float []y;

float []vy;

boolean []dead;//false 0,true 1

int N=20;

void setup(){

  size(500,600);

  x= new float[N];//決定陣列大小

  y= new float[N];

  vy= new float[N];

  dead =new boolean[N];

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

    x[i]=random(500);

    y[i]=100;

    vy[i]=random(2,4);

    dead[i]=false;

  }

}

void draw(){

  background(255);

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

  if(dist(mouseX,mouseY,x[i],y[i])<=50){

      dead[i]=true;//碰到就死掉

    }

      if(dead[i]==true)continue;//如果沒有死掉

      fill(#F7E302);ellipse(x[i],y[i],50,50); 

      y[i] = y[i] + vy[i];//vy是速度

      if(y[i]>600)vy[i]=-vy[i];//碰到地板後vy[i]會變成負的

      if(y[i]<0)vy[i]=-vy[i];//再碰到後會再變

    }

  fill(255,0,0);ellipse(mouseX,mouseY,50,50);

}



  • 使用CLASS ball製作出一大堆的球






 




 

程式碼:

class Ball{

 float x,y,vx,vy;

 boolean dead;

 Ball(){//建構同名的東西

 x= random(500);

 y= random(100,200);

 vy= random(3,4);

 dead = false;

}

void draw(){

 ellipse(x,y,50,50);

 if(dist(mouseX,mouseY,x,y)<50){

   dead=true;

 }

 if(dead==true)return;//離開函式

 y=y+vy;

}

}

Ball []balls;

void setup(){

  size(500,500);

  balls =new Ball[20];

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

    balls[i]= new Ball();

  }

}

void draw(){

  background(255);

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

    balls[i].draw();

  }

}

 


  • 讓球瘋狂亂跑然後滑鼠碰到會消失 



程式碼:

class Ball{

 float x,y,vx,vy;

 boolean dead;

 Ball(){//建構同名的東西

 x= random(500);

 y= random(500);

 vx= random(-4,4);

 vy= random(-4,4);

 dead = false;

}

void draw(){

  if (dead==true)return;

  ellipse(x,y,50,50);

 if(dist(mouseX,mouseY,x,y)<50){

   dead=true;

 }

 x= x+vx;

 y=y+vy;

 if(y>500||y<0)vy=-vy;

 if(x>500||x<0)vx=-vx;

}

}

Ball []balls;

void setup(){

  size(500,500);

  balls =new Ball[20];

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

    balls[i]= new Ball();

  }

}

void draw(){

  background(255);

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

    balls[i].draw();

  }

}


  • 加入一行 vy+=0.98;//重力加速度

  • 製作出遊戲-碰到球就黑屏




程式碼:

class Ball{
 float x,y,vx,vy;
 boolean dead;
 Ball(){//建構同名的東西
   reborn();
 }
 void reborn(){
 x= random(500);
 y= random(500);
 vx= random(-2,2);
 vy= random(-2,2);
 dead = false;
}
void draw(){
  if (dead==true)return;
  fill(#78C0E5);
  ellipse(x,y,5,5);
 if(dist(mouseX,mouseY,x,y)<5){
   dead=true;
   gameOver=true;
 }
 x= x+vx;
 y=y+vy;

 if(y>500||y<0)reborn();
 if(x>500||x<0)reborn();
}
}
Ball []balls;
void setup(){
  size(500,500);
  balls =new Ball[99];
  for(int i=0;i<99;i++){
    balls[i]= new Ball();
  }
}
boolean gameOver=false;
void draw(){
  background(255);
  for(int i=0;i<99;i++){
    balls[i].draw();
    if(gameOver)background(256);
  }
}


======================補充

  • 因為大家都不知道boolean所以有了這個補充
  • if(0)=false;
  • java創始人覺得不合理,覺得if中只能填英文不能填數字
  • 程式碼結果--當按下滑鼠會變色



程式碼:

boolean down=false;
void setup(){

  size(500,500);
}

void draw(){
  if(mousePressed)down=true;

  else down=false;
  if(down) background(255,0,0);

  else background(0,255,0);
}





2021年11月15日 星期一

忘了吃午餐



=========================================================

✌今天第一個文字的程式碼

  • 印出文字
程式碼:
size(600,600);//視窗
fill(255,0,0);//紅色
textSize(80);//字型大小
text("Hello",50,50);//字的位置

 

















  • 可以跑秒數的程式👇
程式碼:
void setup(){
  size(600,600);//視窗
  fill(255,0,0);//紅色
  textSize(80);//字型大小
}
void draw(){
  background(255);//背景白色
  text("Time:"+frameCount,100,100);//字的位置
}//每秒60frame,過了幾個frame

 



  • 較為準確的millis
程式碼:
void setup(){
  size(600,600);//視窗
  fill(255,0,0);//紅色
  textSize(80);//字型大小
}
void draw(){
  background(255);//背景白色
  text("Time:"+frameCount/60,100,100);//不太準
  text("millis()"+millis()/1000,50,200);//準,千分之一秒
}//每秒60frame,過了幾個frame



  • 有時分秒
程式碼:
void setup(){
  size(600,600);//視窗
  fill(255,0,0);//紅色
  textSize(80);//字型大小
}
void draw(){
  background(255);//背景白色
  text(hour()+":"+minute()+":"+second()+":",100,100);//不太準
  text("millis():"+millis()/1000,50,200);//準,千分之一秒
}//每秒60frame,過了幾個frame





  • println(PFont.list());
  • 可以印出電腦裡能用的字體


 



 




  • 可以選擇字型的程式







 

程式碼:
PFont myFont;
void setup(){
  size(500,500);
  myFont = createFont("標楷體",100);
  textFont(myFont);
  text("中文",100,100);
}


  • 兩個字體切換(按下滑鼠)

程式碼:

PFont font1,font2;

void setup(){

  size(500,500);

  font1 = createFont("標楷體",100);

  textFont(font1);

  font2 = createFont("微軟正黑體",100);

}

void draw(){

  background(0);

  text("中文",100,100);

  if(mousePressed)textFont(font2);

  else textFont(font1);

} 



===============================
  • 字串
程式碼:
void setup(){
  size(500,500);
  fill(255,0,0);//填充顏色
  textSize(80);//文字大小
}
void draw(){
  background(255);//白
  String hh=nf(hour(),2);
  String mm=nf(minute(),2);
  String ss=nf(second(),2);
  text(hh+":"+mm+":"+ss,50,100);//時分秒
}//mills千分

  • 時鐘
程式碼:
void setup()
{
  size(600,600);
  fill(255);
  textSize(80);
}
void draw(){
  background(#BAA2E8);
   String hh=nf(hour(),2);
  String mm=nf(minute(),2);
  String ss=nf(second(),2);
  text("現在:"+hh+":"+mm+":"+ss,50,100);//時分秒
  text("下課:15:40:00",50,200);
  int now = hour()*60*60+minute()*60+second();
  int next = 15   *60*60+40      *60+0;//總秒數
  int remain = next - now;//剩下的時間
  text("剩下:"+remain,50,300);
}
        


 







====================================

  • 要作用圖片顯示的時鐘
  • 第一步把圖片都先 顯示出來
  • 要先準備0-9的數字圖檔
  • 檔名為"數字.png"

程式碼:

PImage[]img= new PImage[10];

void setup(){

size(1120,450);

for(int i=0;i<10;i++)img[i]=loadImage(i+".png");

}

void draw(){

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

    int x=(i%5)*224 % 1120,y=(i/5)*225;

    image( img[i] ,x, y);

  }

}







2021年11月1日 星期一

忘了吃午餐






  • 先去函式庫下載


  • 檔案-範例




  • 打開範例中的 video-Loop

 

  • 打開會執行會長這樣👇 


===========================================以上是範例


  • 自己實作👇  執行出來的成果和上面範例一樣,畢竟是用上面的影片













💭將剛剛範例中data資料夾的 launch2影片拉進去自己的程式



  • 程式碼 :

import processing.video.*;//仙裝好Video library

Movie movie;

void setup(){

  size(640,480);

  movie = new Movie(this,"launch2.mp4");

  movie.loop();

}//要在我的硬碟的目錄裡面,開launch2.mp4檔

void draw(){

  image(movie,0,0);

  }

  void movieEvent(Movie m){

   m.read(); 

  }

==========================================

  • 以下程式碼開視訊鏡頭👇





 






  • 💬程式碼:

import processing.video.*;

Capture cam;

void setup(){

  size(640,480);///基礎解析度

  cam = new Capture(this, Capture.list()[0]);

  cam.start();

}

void draw(){

 if(cam.available()){

    cam.read();

 }

 image(cam,0,0);

}


  • 加了 saveFrame(); 可以儲存影片成照片,但我的不知道為啥不能跑?會無回應





 













  • 將上面DARA資料夾中的影片丟進去👇上一個的程式碼
  • 就可以直接撥
















  • 💬程式碼:
import processing.video.*;//仙裝好Video library
Movie movie;
void setup(){
  size(640,480);
  movie = new Movie(this,"my_webcam.mov");
  movie.loop();
}//要在我的硬碟的目錄裡面,開launch2.mp4檔
void draw(){
  image(movie,0,0);
  }
  void movieEvent(Movie m){//第2種方法
   m.read(); 
  }
  //void movieEvent(Movie m){
  //m.read();
  //}//第一種方法


=========================================

  • Pixels 















  • 💬程式碼:

void setup(){

  size(640,480);

  background(255,0,0);

}

void draw(){

  println(frameCount);

}

void mousePressed()

{

  loadPixels();

  for(int i=0; i<640*480/2; i++){

  pixels[i]=color(0,255,0);

}

updatePixels();

saveFrame();

}


====================================以下是換顏色👇





程式碼:

color[]c={#BC3F3F,#BC953F,#46BC3F,#3FBCBB,#813FBC};

int now=0;


void setup(){

  size(640,380);

  background(#BC3F3F);

}

void draw(){


}

void mousePressed(){

background(c[now]);

now=(now+1)%5;

  } 



2021年10月25日 星期一

正在吃午餐


  • 😀 今天第一步先畫個棋盤


  • 程式碼:👉畫直線(迴圈)

  void setup()

{

  size(500,500);

}

void draw()

{

  background(253,236,180);

  for(int i=50;i<500;i+=50){//for迴圈畫線

  line(i,50,i,450);//畫直線

  }

}




  • 😀畫橫線









  • 💬程式碼:👉

 size(500,500);

}

void draw()

{

  background(253,236,180);

  for(int i=50;i<500;i+=50){//for迴圈畫線

  line(i,50,i,450);//畫直線

  line(50,i,450,i);//畫橫線

  }

}


  • 😀第二步,陣列























  • 💬程式碼:

int[][]c={
  {1,0,0},
  {0,0,0},
  {0,1,0}};
  void setup(){
    size(300,300);
  }
  void draw(){
    
      for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
          if(c[i][j]==0)fill(128);
          else fill(255,0,0);
          rect(j*100,i*100,100,100);
        }
      }
  }


  • 棋盤上可以放旗子了😀



 







  • 💬程式碼:
int [][]go={
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0}};

void setup()
{
  size(500,500);
}
void draw()
{
  background(253,236,180);
  for(int i=0;i<=9;i++)
  {
    line(50+50*i,50,50+50*i,450);
    line(50,50+50*i,450,50+50*i);
  }
  for(int i=0;i<9;i++)
  {
    for(int j=0;j<9;j++)
    {
      if(go[i][j]==1)
      {
        int x=50+50*j,y=50+50*i;
        fill(255);
        ellipse(x,y,40,40);
      }
    }
  }
}


  • 💓成果: 


  • 💬程式碼

int [][]go={

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0},

{0,1,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0}};


void setup()

{

  size(500,500);

}

void draw()

{

  background(253,236,180);

  for(int i=0;i<=9;i++)

  {

    line(50+50*i,50,50+50*i,450);

    line(50,50+50*i,450,50+50*i);

  }

  for(int i=0;i<9;i++)

  {

    for(int j=0;j<9;j++)

    {

      if(go[i][j]==1)

      {

        int x=50+50*j,y=50+50*i;

        fill(255);

        ellipse(x,y,40,40);

      }

    }

  }

}

void mousePressed(){

    int j=(mouseX-50)/50;

    int i=(mouseY-50)/50;

    go[i][j]=1;

}

 

  • 補充👇(若是把50改成25會更準確)















  • 💬程式碼:

int [][]go={

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0}};


void setup()

{

  size(500,500);

}

void draw()

{

  background(253,236,180);

  for(int i=0;i<=9;i++)

  {

    line(50+50*i,50,50+50*i,450);

    line(50,50+50*i,450,50+50*i);

  }

  for(int i=0;i<9;i++)

  {

    for(int j=0;j<9;j++)

    {

      if(go[i][j]==1)

      {

        int x=50+50*j,y=50+50*i;

        fill(255);ellipse(x,y,40,40);

      }

      else if(go[i][j]==2)

      {

        int x=50+50*j,y=50+50*i;

        fill(0);ellipse(x,y,40,40);

      }

    }

  }

}

void mousePressed()

{

  int j=(mouseX-25)/50;

  int i=(mouseY-25)/50;

  if(mouseButton==LEFT)go[i][j]=1;

  if(mouseButton==RIGHT)go[i][j]=2;

  if(mouseButton==CENTER)go[i][j]=0;

}


  • 👶下個作業用三角函數畫圓
  • 💬程式碼:
    void draw()
{
  for(float a=0;a<360;a++)
  {
    float x =250+250*cos(radians(a));
    float y =250+250*sin(radians(a));
    ellipse(x,y,4,4);  
  }
}




/

2021年10月18日 星期一

忘了吃午餐 week 03

    

今天在教如何在processing開圖片




  •  PImage img;//圖片 影音
  • img = loadImage("網址.jpg");
    • 可將圖片下載→拉進Processing→img = loadImage("檔名.jpg");
  • image(img,x座標,y座標,長,寬);
👇把寶寶丟進去
 👉   
      














👇程式碼:









PImage img;//圖片 影音
void setup(){
  size(500,500);
  img=loadImage("baby.jpg");
}///img = loadImage("網址.jpg");
void draw(){
  image(img,0,0 ,500,500);//image(img,x座標,y座標,長,寬)
}

========================================================

  • 丟兩張圖片將其中一張位置設在滑鼠上
  • 成果👇

😀補充:滑鼠位置和移動圖片不是相當的符合 

image(img2,mouseX-??,mouseY-??,100,100);可以把滑鼠位置矯正

image(img2,mouseX-50,mouseY-50,100,100);

👇這個方法也可以








👇程式碼: 

void setup(){
  size(500,500);
  img1 = loadImage("ada.jpg");
  img2 = loadImage("baby.jpg");
}
void draw(){
  image(img1,0,0,500,500);
  image(img2,mouseX,mouseY,100,100);
}




😀補充:
1.ctrl + k開啟資料夾
2.ppt可以幫助圖片去背景

  • 打開城市素描本-使用函式庫-安裝函式庫👇

 




  • 安裝這兩個  (minim大部分電腦可以用 /sound 不一定) 👇 









  • 以下為打開步驟👇






 

製作了一個撥放音樂的程式:

  • 將playfile 程式碼中的 groove.mp3檔案 拉進去Processing
程式碼:👇

import ddf.minim.*;
Minim minim;
AudioPlayer player;
void setup(){
  size(500,500);
  minim = new Minim(this);
  player = minim.loadFile("groove.mp3");
  player.play();
}
void draw(){
}


  • 👦然後
  • 找個音樂丟進去 改個程式碼













程式碼:👇

import ddf.minim.*;
Minim minim;
AudioPlayer player,player2;
void setup(){
  size(500,500);
  minim = new Minim(this);
  player = minim.loadFile("groove.mp3");//音效
  player2 = minim.loadFile("King Gnu.mp3");//背景音樂
  player2.play();
}
void draw(){
}
void mousePressed(){
  player.play();
}

2021年10月4日 星期一

忘了吃午餐 week02

     


    if(mousePressed)

  1. 今天第一個  
  • if(mousePressed)

--------按下滑鼠會變色











程式碼:
void setup(){
  size(500,500);
}
void draw(){
  if(mousePressed) background(#0EFF03) ; 
  else background(#FF0004);
}

 -----------------------------------------------------------------------

      2.今天第二個 
  • if(mousePressed)    line(mouseX,mouseY,0,0);
       --------如過按下滑鼠,會從(0,0)的位置畫線到滑鼠所在位置

        


        


 




-------------------------------------------------------------------------
      
      3.今天第三個

  •  if(mousePressed)    line(mouseX,mouseY,pmouseX,pmouseY);
      --------按下滑鼠可以畫線

 







---------------------------------------------------------------

    4.今天第四個

    



------------------------------------------------------------------------------- 


    5.今天第五個


 


----------------------------------------------------------------------------------

    6.今天第六個

               困難版 :               




















            簡易版: