顯示具有 08160695_吳旻恩 標籤的文章。 顯示所有文章
顯示具有 08160695_吳旻恩 標籤的文章。 顯示所有文章

2021年11月22日 星期一

week07

 



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+3;///3是速度

  y=y+vy;

}

float x=250,y=0,vx=0,vy=3;
float x2=150,y2=50,vx2=0,vy2=2;
void setup(){
  size(500,600);
}
void draw(){
  background(255);
  ellipse(x,y,50,50);
  ellipse(x2,y2,50,50);
  // y=y+3;///3是速度
  y=y+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];//撞到下方
    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(255,255,0);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];//撞到下方
    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};
void setup(){
  size(500,600);
}
void draw(){
  background(255);
  for(int i=0;i<4;i++){
    ///fill(255,255,0);ellipse(x[i],y[i],50,50);
    if(dist(mouseX,mouseY,x[i],y[i])<=50){
      dead[i]=true;
    }
    if(dead[i]==true) continue;
    fill(255,255,0);ellipse(x[i],y[i],50,50);
    y[i] = y[i]+vy[i];//vy是速度
    if(y[i]>600) vy[i] = -vy[i];//撞到下方
    if(y[i]<0)vy[i]=-vy[i];//撞到上方
  }
  fill(255,0,0);ellipse(mouseX,mouseY,50,50);
}

綠色是不成立,紅色是成立

boolean down;//按下去
void setup(){
  size(500,300);
}
void draw(){
  if(mousePressed) down=true;//成立
  else down=false;//不成立
  print(down);
  if(down) background(255,0,0);//紅色
  else background(0,255,0);//綠色
}


變出隨機的球數
float []x;//外面宣告global陣列變數
float []y;
float []vy;
boolean []dead;
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<N;i++){
    x[i] = random(500);//500以下亂數
    y[i] = random(100,200);
    vy[i] = random(3,4);
    dead[i]=false;//沒有死掉
  }
}
void draw(){
  background(255);
  for(int i=0;i<N;i++){
    ///fill(255,255,0);ellipse(x[i],y[i],50,50);
    if(dist(mouseX,mouseY,x[i],y[i])<=50){
      dead[i]=true;
    }
    if(dead[i]==true) continue;
    fill(255,255,0);ellipse(x[i],y[i],50,50);
    y[i] = y[i]+vy[i];//vy是速度
    if(y[i]>600) vy[i] = -vy[i];//撞到下方
    if(y[i]<0)vy[i]=-vy[i];//撞到上方
  }
  fill(255,0,0);ellipse(mouseX,mouseY,50,50);
}

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(){
    if(dead==true) return;
    ellipse(x,y,50,50);
    if(dist(mouseX,mouseY,x,y)<50){
      dead=true;
    }
    y = y+vy;
    if(y>500) vy = -vy;
    if(y<0) vy = -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);
    vy = random(-4,4);
    vx = 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) vy = -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);
    vy = random(-4,4);
    vx = 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;
    vy += 0.98;
    if(y>500||y<0) vy = -vy;
    if(x>500||x<0) vy = -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{//我們發明 Ball物件
  float x, y, vx, vy;
  boolean dead;
  Ball(){//建構 同名的東西
    reborn();
  }
  void reborn(){
    x = random(500);
    y = random(500);
    vy = random(-2,2);
    vx = random(-2,2);
    dead = false;//沒有死掉
  }
  void draw(){
    if(dead==true) return;
    fill(255,0,0); ellipse(x,y, 5,5);
    if( dist(mouseX,mouseY,x,y)<5 ){
      dead=true;
      gameOver=true;
    }
    x = x + vx*1;//速度*時間=距離
    y = y + vy*1;
    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(0);
  for(int i=0; i<99; i++){
    balls[i].draw();
  }
  if(gameOver) background(255,0,0);  
}

2021年11月15日 星期一

week06 

首先創建視窗 熟悉draw

加上Framecount 做出簡易文字時鐘


利用millis 長出一個時鐘






倒數計時會轉換成時分秒
void setup(){
  size(600,600);
  fill(255);//白色的字
  textSize(80);
}
void draw(){
  background(#075BB2);
  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);
  hh = nf(remain/60/60%60,2);
  mm = nf(remain/60%60,2);
  ss = nf(remain%60,2);
  text("剩下:"+hh+":"+mm+":"+ss,50,400);
}


顯示圖片
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,y=int(i/5)*225;
    image(img[i],x,y);
  }
}


PImage [] img =new PImage[10];
PFont font;
void setup(){
  
  size(1120,450);
  for(int i=0; i<10;i++) img[i]=loadImage(i+".png");
  fill(255);
  font = createFont("標楷體",80);
  textFont(font);
}
void draw(){
  background(#075BB2);
  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 = 16   *60*60 + 40      *60 + 0;//總秒數
  int remain = next-now;//剩下的時間 (秒數來算)
  if(remain<0) remain += 24*60*60;
  text("剩下:"+remain, 50,300);
  hh = nf(remain/60/60%60, 2);
  mm = nf(remain/60%60, 2);
  ss = nf(remain%60, 2);
  text("剩下:"+hh+":"+mm+":"+ss, 50,400);
  int x=800;
  while(remain>0){
    int n = remain%10;
    remain = remain / 10;
    image( img[n], x,100,100,100);
    x-=100;
  }
}


2021年11月1日 星期一

 week-05



開啟processing去程式素描本安裝函式庫,去下載video

file-範例-video-movie-loop 然後執行


記得把影片先丟進去,然後打程式

import processing.video.*;
Movie movie;
void setup() {
  size(560, 406);
  movie = new Movie(this, "launch2.mp4");
  movie.loop();
}
void draw(){
  image(movie,0,0);
}
void movieEvent(Movie m){
  m.read();
}

先叫出GettingStartedCapture

import processing.video.*;
Capture cam;
void setup()
{
 size(640,480);
 String[] cameras = Capture.list();
 for(String name : cameras)
 {
   println(name);
 }
}

import processing.video.*;
Capture cam;
void setup(){
  size(640,480);
  cam=new Capture(this, 640,480);
  cam.start();
}
void draw(){
   if(cam.available()){
      cam.read(); 
   }
   image(cam,0,0);
}




原本是紅色,點一下滑鼠會變成一般紅色一半綠色

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


import processing.video.*;
Movie movie;
color[]c={#F0F0F0,#FFF160,#FFC501,#FE9600,#03001C};

void setup(){
  size(640,480);
  
  movie = new Movie(this,"my_webcam.mov");
  movie.play();
}
void draw(){
  if(movie.available()){
    movie.read();
    image(movie,0,0);
  }
}
void mousePressed(){
  movie.pause();
  loadPixels();
  for(int i=0;i<640*480;i++){
    float bright - brightness(pixels[i]);
    int now = 4-int(bright/67);
    pixels[i] -c[now];
  }
  updatePixels();
}


2021年10月25日 星期一

 week04


先畫出9條直線

void setup()

{

  size(500,500);

}

void draw(){

  background(253,236,180);

  line(50,50,50,450);

  line(100,50,100,450);

  line(150,50,150,450);

  line(200,50,200,450);

  line(250,50,250,450);

  line(300,50,300,450);

  line(350,50,350,450);

  line(400,50,400,450);

}


用迴圈畫出線,可以畫出9條直線後,試著寫出橫的
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);
  }
  for(int i=0;i<9;i++){
    line(50,50+50*i,450,50+50*i);
  }
}


老師的迴圈寫法


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 go[][]:C語言

//int [][]go =new int [][];Java/Processing

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

  }

}



int [][]c={

  {1,0,0},

  {1,0,0},

  {1,0,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);

    }

  }

}

J是x方向,I是y方向



//陣列、for迴圈:五子棋(棋盤)

//int go[][]:C語言

//int [][]go =new int [][];Java/Processing

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},

  {1,1,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);

      }

    }

  }

}

點十字會出現白棋,會有點不精準是因為他的判斷會無條件捨去,可以把-50改-25會比較精準



//陣列、for迴圈:五子棋(棋盤)
//int go[][]:C語言
//int [][]go =new int [][];Java/Processing
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},
  {1,1,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;
}
這是精準的版本
//陣列、for迴圈:五子棋(棋盤)
//int go[][]:C語言
//int [][]go =new int [][];Java/Processing
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},
  {1,1,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-25)/50;
  int i=(mouseY-25)/50;
  go[i][j]=1;
}

最後做出可以點出白棋跟黑棋的棋盤遊戲

//陣列、for迴圈:五子棋(棋盤)
//int go[][]:C語言
//int [][]go =new int [][];Java/Processing
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 setup(){

  size(500,500);

}

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

  }

}




void setup(){
  size(500,500);
}
void draw(){
  background(128);
  for(float a=0;a<360;a++){
    float x=250+250*cos(radians(a));
    float y=250+250*sin(radians(a));
    ellipse(x,y,mouseY,mouseX);
  }
}

畫出不同顏色的圓

void setup(){
  size(500,500);
}
void draw(){
  background(255);
  noFill();
  stroke(mouseX,mouseY,255);
  for(float a=0;a<360;a+=1){
    float x=250+mouseX*cos(radians(a));
    float y=250+mouseY*sin(radians(a));
    ellipse(x,y,mouseY,mouseX);
  }
}