顯示具有 07160610_林則宇 標籤的文章。 顯示所有文章
顯示具有 07160610_林則宇 標籤的文章。 顯示所有文章

2022年1月17日 星期一

作業完成

 最後完成了作業

import processing.sound.*;

SoundFile soundfile1;

SoundFile soundfile2;

float [] bulletX=new float[99];

float [] bulletY=new float[99];

float [] bulletVX=new float[99];

float [] bulletVY=new float[99];

boolean die =false;

float x1=150,y1=400;

PImage imgBrick;

PImage imgBrick2;

PImage imgBullet;

PImage imgPlayer;

PImage imgBackground;

PImage imgC;

PImage imgGameover;


void setup(){

  size(300,500);

  soundfile1 = new SoundFile(this,"AnyConv.com__Pokemon.aiff");

  soundfile2 = new SoundFile(this,"wind03.aiff");

  soundfile1.play();

  soundfile1.loop();

  soundfile2.stop();

  imgBrick=loadImage("brick.jpg");

  imgBrick2=loadImage("2.jpg");

  imgBullet=loadImage("bullet.png");

  imgPlayer=loadImage("player.png");

  imgBackground=loadImage("111.png");

  imgC=loadImage("blo.jpg");

  imgGameover=loadImage("gameover.png");

  

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

    bulletX[i]=random(300); bulletY[i]=0; 

    //bulletX[i] = random(300);

    //bulletY[i] = random(300);

    float angle = random(60,120);//360度

    bulletVX[i] = cos( radians(angle) ); //random(-3,3);//子彈的速度差太多了, 不好

    bulletVY[i] = sin( radians(angle) );//random(-3,3);

  }

}

void draw(){

  image(imgBackground,20,30);

  image(imgC,0,0,300,35);//上面的白條

  for(int i=0;i<30;i++){//兩邊的槓槓

    image(imgBrick,0,0+i*15);

    image(imgBrick2,280,0+i*15);

  }

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

    image(imgBullet,bulletX[i], bulletY[i], 8, 8);

    bulletX[i] += bulletVX[i];

    bulletY[i] += bulletVY[i];

    if(bulletX[i]<25 || bulletY[i]<0 || bulletX[i]>275 || bulletY[i]>500){

      //bulletX[i] = random(300);//重新出現的子彈,不應該突然出現

      //bulletY[i] = random(300);//應該是從邊邊冒出來

        bulletX[i]=random(300); bulletY[i]=40; 

      float angle = random(60,120);//360度

      bulletVX[i] = cos( radians(angle) ); //random(-3,3);//子彈的速度差太多了, 不好

      bulletVY[i] = sin( radians(angle) );//random(-3,3);  

    }

    if(dist (x1,y1,bulletX[i],bulletY[i])<6){

        die=true;

    }

   if(die){

     image(imgGameover,0,0,300,500);

     soundfile1.stop();

     }

   else{

     image(imgPlayer,x1,y1,20,30);

     x1=mouseX-10;

     y1=mouseY-15;

   }

  }

}


整個程式花最多時間的地方應該是碰撞的部分

因為一開始講解碰撞的程式在自己嘗試的時候一職失敗

最後問老師的時候才知道了另外一種做法

  if(dist (x1,y1,bulletX[i],bulletY[i])<6)

學到了dist的用法

2022年1月3日 星期一

都在做作業

  都在做作業所以忘記寫部落格

沒注意老師講了什麼

有去教室上課當面問老師關於子彈碰撞的問題

跟FB範例的兩個方塊碰撞的程式不一樣

都在做作業

  都在做作業所以忘記寫部落格

沒注意老師講了什麼

有問老師關於子彈隨機降落的問題

都在做作業

 都在做作業所以忘記寫部落格

沒注意老師講了什麼

2021年12月13日 星期一

大家標題禮拜數都不一樣

 今天是在做自己的作業

一開始上課的時候老師就開始講解教室同學的問題

我一開始定的題目是彈力球打板的遊戲







但老師說不要太常見的

我覺得這個遊戲應該網路上很多資料

所以我在想要不要把遊戲改成類似彈幕遊戲











但基本架構不太清楚可能要上課的時候詢問老師一下作法

在最後一節課有問老師

詳細過程下課再自己研究


2021年12月6日 星期一

不知道第幾周

 上課一開始在介紹Makeruno

實際把板子接在電腦上

並且介紹板子上的規格












然後開始登記期末作業要做什麼

有同學選擇俄羅斯方塊

所以老師要來講解








先設定版面大小








再來切割版面






讓方塊可以往下掉的程式




但因為會一直往下掉

所以要設定碰到東西時會自動停止



第一個方塊掉完之後

要讓第二個方塊接著掉下來




上課講解到的部分大概到這


第二個同學的題目是tmberman

因為不知道是什麼遊戲所以在講解的時候有點不懂








使用者可以左右動






躲貓貓的部分因為去上廁所所以沒聽到

再來是小朋友下樓梯








再來牆壁的素材





將他輸出出來









因為向下所以要進行捲動





2021年11月29日 星期一

不知道第幾周

 今天填完問卷後先想要做什麼作品作為期末作業


這是老師小人走路的示範程式

https://openprocessing.org/sketch/911326

再來用關鍵字搜尋

animated sprites png

這個關鍵字是有其他藝術家所畫出來的動畫腳色

走路的分鏡圖











從老師給的檔案裡 因為檔名不同

所以要先改名才執行 不然會造成檔案錯誤

void setup(){

size(500,500);

img=loadImage("img.jpg");

imageMode(CENTER);

}

int a=0, b=0, x=250, y=250;

void draw(){

background(255);

//image( img, 0,0);

image(  img.get(141*a, 211*b, 141,211), x,y);

if(frameCount%30==0) a = (a+1)%4;

}

void keyPressed(){

if(keyCode==RIGHT){ b=3; x+=3; }

if(keyCode==LEFT) { b=2; x-=3; }

if(keyCode==UP) { b=1; y-=3; }

if(keyCode==DOWN){ b=0; y+=3; }

}

第二節課老師有示範一些期末作業的範例







flappy brid的示意圖

可能會做打磚塊遊戲或是 PAC MAN

但可能網路上資料很多了

所以之後可能會再改題目










PAC MAN 示意圖







同學們的範例

接下來示範類似障礙物跑庫









陷阱對應座標

使用者對應座標

背景滑動座標








講解一些同學的想法

和一些應用的程式

2021年11月22日 星期一

不知道第幾周

 一開始沒跟到









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

  }

}

會有球掉落








加上

if(y[i]>600)vy[i]=-vy[i];

if(y[i]<0)vy[i]=-vy[i];

設上下界讓他碰到以後往上下彈








在講解圓形的碰觸關係

用小畫家在解釋設定圓形半徑的關係







新增了

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

      continue;

    }

和

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

使滑鼠操控的球碰到其他球的時候會停下來









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

boolean[] dead={false,false,false,false};

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(255,255,0);ellipse(x[i],y[i],50,50);

    y[i]=y[i]+vy[i];

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

}

增加布林函數

使碰到的球變不見

\













練習家講解布林函數

設false為綠色true為紅色

mousePressed的時候為true

其餘為false







將程式改成數值隨機

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

    y[i]=random(100,200);

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

    dead[i]=false;

  }

}








程式改成

先將球的程式寫好

要畫圖的時候在叫出來使用









vx=random(-4,4);

使球也會有x軸的移動

所以球不只會上下移動而是整張亂跑


2021年11月1日 星期一

太無情了史丹利 你真的太無情了week06


今天一開始先進入函式庫下載video











import processing.video.*;
Movie movie;

void setup() {
  size(640, 480);
  movie = new Movie(this, "launch2.mp4");
  movie.loop();
}
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()[1]);
  cam.start();
}
void draw(){
  if(cam.available()){
    cam.read();
  }
  image(cam,0,0);
}

我的筆電是細邊框的所以沒有視訊鏡頭
上面是將視訊鏡頭叫出來的程式



用saveFrame();把畫面記錄下來
























2021年10月25日 星期一

畫面很亂主辦單位要不要管一下week04 上傳不了圖片

 第一節忘記有補課

所以從第二節開始做筆記

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

    }

  }

} 










陣列劃出棋盤

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

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



但因為不準的關係
int j =(mouseX-50)/50;
  int i =(mouseY-50)/50;
改成
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+=1){
    float x =250+mouseX*cos (radians(a));
    float y =250+mouseY*sin (radians(a));
    ellipse(x,y,mouseX,mouseY);
  }
}


2021年10月18日 星期一

畫面很亂主辦單位要不要管一下week03

 PImage img;

void setup(){

  size(500,500);

  img=loadImage("網址");

}

void draw(){

  image(img,0,0);

}









也可將網址的部分改成檔名

並將檔案拖入










圖的解析度可以在小畫家上做調整

可以在image(img,0,0);

這行後面加上座標就可以將圖片填滿


原本設定是一個img

多設定幾個就可以同時出現多張圖片

PImage img1,img2;

void setup(){

  size(500,500);

  img1=loadImage("1.png");

  img2=loadImage("2.png");

}

void draw(){

  image(img1,0,0,500,500);

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

}













用ppt可將圖片去背

現在滑鼠所在的位置是在圖片左上角

若要滑鼠在圖片正中間的話

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

這個程式就將後面數字的一辦減去前面的mouse

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

這樣一來滑鼠就會在圖片正中心


第二種方法

可以改imageMode()

將imageMode改成center就會在正中心

但背景部分也會所以要將背景改成corner

PImage img1,img2;

void setup(){

  size(500,500);

  img1=loadImage("1.png");

  img2=loadImage("2.png");

}

void draw(){

imageMode(CORNER);

  image(img1,0,0,500,500);

imageMode(CENTER);

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

}


接下來要處理聲音








先安裝










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

}

宣告多一個音檔

    新增

void mousePressed(){

    player.play();

}









import ddf.minim.*;

Minim minim;

AudioPlayer doo,re,mi,fa,so;

void setup(){

  size(500,100);

  minim = new Minim(this);

  doo =minim.loadFile("do.wav");

  re =minim.loadFile("re.wav");

  mi =minim.loadFile("mi.wav");

  fa =minim.loadFile("fa.wav");

  so =minim.loadFile("so.wav");

}

void keyPressed(){

  if(key=='1') {doo.rewind(); doo.play();}

  if(key=='2') {re.rewind(); re.play();}

  if(key=='3') {mi.rewind(); mi.play();}

  if(key=='4') {fa.rewind(); fa.play();}

  if(key=='5') {so.rewind(); so.play();}

}

void draw(){


}


2021年10月4日 星期一

畫面很亂主辦單位要不要管一下week02

利用mousePressed讓background的顏色不一樣

void  setup(){

  size(500,500);

}

void draw(){

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

  else background(0,255,0);

}















再來利用line配合座標(mouseX,mouseY)連接到(0,0)








但如果要像小畫家一樣的話就要把(0,0)改掉

把(0,0)改成(pmouseX,pmouseY)


void  setup(){

  size(500,500);

}

void draw(){

  if(mousePressed)line(mouseX,mouseY,pmouseX,pmouseY);


}









接下來讓畫筆有顏色

讓滑鼠點擊特定區域時改變顏色

void  setup(){

  size(500,500);

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

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

}

void draw(){

  if (mousePressed){

  if(mouseX<100){

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

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

  

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

 }

}








藉由改變strokeWeight數值來改變筆刷大小

void setup(){

  size(500,500);

  rect(0,0,100,100); ellipse(50,50,8,8);

  rect(0,100,100,100); ellipse(50,150,4,4);

}

void draw(){

  if(mousePressed){

    if(mouseX<100){

      if(mouseY<100) strokeWeight(8);

      else if(mouseY<200) strokeWeight(4);

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

  }

}







衍生練習











用fill把粗細改成顏色不同

void setup(){
  size(500,500);
  fill(#FF0505);rect(0,50,50,50);
  fill(#FFB005);rect(0,100,50,50);
  fill(#D0FF05);rect(0,150,50,50);
  fill(#05FF24);rect(0,200,50,50);
  fill(#05DCFF);rect(0,250,50,50);
  fill(#051BFF);rect(0,300,50,50);
  fill(#7905FF);rect(0,350,50,50);
  fill(#FF05EF);rect(0,400,50,50);
}
void draw(){
  if(mousePressed){
    if(mouseX<50){
      if(mouseY>1*50 && mouseY<1*50+50) stroke(#FF0505);
      if(mouseY>2*50 && mouseY<2*50+50) stroke(#FFB005);
      if(mouseY>3*50 && mouseY<3*50+50) stroke(#D0FF05);
      if(mouseY>4*50 && mouseY<4*50+50) stroke(#05FF24);
      if(mouseY>5*50 && mouseY<5*50+50) stroke(#05DCFF);
      if(mouseY>6*50 && mouseY<6*50+50) stroke(#051BFF);
      if(mouseY>7*50 && mouseY<7*50+50) stroke(#7905FF);
      if(mouseY>8*50 && mouseY<8*50+50) stroke(#FF05EF);
    }else line(mouseX,mouseY,pmouseX,pmouseY);
  }
}